TUI system monitor · Rust

Monitoriza tu sistema dentro de la terminal.

xtop es un monitor de sistema TUI multiplataforma escrito en Rust: renderizado con ratatui, métricas reales con sysinfo, y un kernel fino rodeado de un ecosistema modular — widgets, layouts, plugins, extensiones y efectos. El proyecto vive en la organización github.com/xtop-cli.

Rust 1.87+ratatuisysinfolinux · macOS · windowsMIT
xtop — dashboard (theme: X)
7repositorios · kernel + 6 áreas
41archivos de documentación espejados
12temas, con paleta de 16 roles
11widgets en el pack base (+ blocks)
12acciones JSON del plugin samurai
10reglas heurísticas de detección
500 msfade-in del efecto fade

features

Lo que xtop mide — y cómo lo pinta

Métricas reales, sin datos inventados: si el hardware no expone una lectura, el widget muestra su estado vacío honesto. Resumen tomado de docs/features.md.

CPU

Uso por núcleo e hilo con gauges horizontales, temperatura máxima por sensores y gráfico histórico.

per-coretemps

Memory

Gauges de RAM y Swap con gráfico de línea histórico y ventana de puntos configurable.

ramswaphistory

Network

Seguimiento RX/TX en tiempo real por interfaz, con totales y gráfico dual de serie.

rxtxper-iface

Storage · Disk I/O

Gauges de uso por punto de montaje y velocidades de lectura/escritura por dispositivo en bytes/s.

mountsread/write

Processes

Lista con búsqueda en vivo, orden por CPU/Mem/PID/Name con marcador de dirección y selección anclada a PID.

searchsortkill

GPU · Battery

GPU por nvidia-smi (NVIDIA, cualquier SO) o sysfs en Linux; batería real en Linux, macOS y Windows.

real probeshonest empty

Themes

12 temas con rol fijo por slot, contraste normalizado (WCAG) y cambio instantáneo con t/T.

jsonc12 themeswcag

Layouts

7 modos + 3 presets Detail, layouts JSONC recursivos, degradación por tamaño de terminal y full-screen.

dashboardfocus modesjsonc

Plugins & MCP

samurai expone 12 acciones JSON y 10 reglas de alerta; el servidor MCP las ofrece como tools a agentes de IA.

samuraimcpjson-rpc

Effects

Efectos de frame sobre el buffer final: fade-in de 500 ms determinista, con contrato en xtop-effect-api.

fade500ms

screenshots

Así se ve en una terminal real

Capturas del repo del kernel (xtop/assets/previews). Cada layout responde al ancho y alto de tu terminal, con un suelo de 40×8.

xtop screenshot — Dashboard
xtop screenshot — Detail Processes
xtop screenshot — Detail Network
xtop screenshot — Detail Dashboard
xtop screenshot — Process Focus
xtop screenshot — Process Focus
xtop screenshot — xtop en Windows
xtop screenshot — xtop en Windows

colors

Doce paletas, un contrato de roles

Cada tema es un par background/foreground más 16 slots con rol fijo (alert, good, warn, rx, tx, accent, dim, serie). Este sitio usa X en oscuro y Madrid en claro, desde xscriptor-colors/assets.

X

#050505 / #f7f1ff · este sitio: dark

Madrid

#fafafa / #1a1a1a · este sitio: light

Lahabana

#19191a / #f7f1ff

Miami

#000000 / #f7f1ff

Paris

#1a0a30 / #f7f1ff

Tokio

#1c1c1d / #f7f1ff

Oslo

#3f4451 / #abb2bf

Helsinki

#f8fafe / #544d40

Berlin

#000000 / #cccccc

London

#ffffff / #333333

Praha

#1a1a1a / #ffffff

Bogota

#200b0a / #f7f1ff

Referencia completa de slots y roles en docs/colors.md.

ecosystem

Siete repos, una sola fuente de contratos

Cada repo compila standalone contra los contratos de api — nunca contra el kernel. Documentación completa, espejada desde cada repositorio, en /docs/es.

xtop

kernel

La aplicación en sí: un monitor de sistema TUI multiplataforma escrito en Rust. Kernel de un solo crate con renderizado ratatui, providers de sysinfo y la superficie de comandos (config, temas, layouts, plugins, widgets, MCP).

Appratatuisysinfo

api

contracts

Crates de contratos puros: xtop-plugin-api, xtop-widget-api, xtop-effect-api y xtop-extension-api. Aquí vive el modelo de datos compartido (SystemSnapshot, AlertThresholds); el resto de repos solo depende de este.

Workspacextop-plugin-apixtop-widget-api

widgets

renderers

Packs de widgets (renderers) contra xtop-widget-api: el pack por defecto (11 widgets) más el pack blocks — un crate por widget, con el motor compartido xtop-widget-core.

Workspacecpumemory

layouts

arrangement

El crate xtop-layout: modelo de layout guiado por datos, loader JSONC, modos de layout y degradación por tamaño de terminal. Incluye 7 layouts de modo + 3 presets detail y la carpeta de layouts de la comunidad.

CrateJSONCsplits

plugins

functionality

Implementaciones de plugins contra xtop-plugin-api. Primer miembro: xtop-plugin-samurai — un plugin consciente de IA con 12 acciones JSON y 10 reglas heurísticas de detección de amenazas.

Workspacesamurai12 actions

extensions

kernel hooks

Extensiones de tipo servidor contra xtop-extension-api. Primer miembro: xtop-extension-mcp — un servidor del Model Context Protocol sobre stdio que expone xtop y sus plugins alojados como tools MCP.

WorkspaceMCPJSON-RPC 2.0

effects

animation

Efectos de frame contra xtop-effect-api. Primer miembro: xtop-effect-fade — funde el frame renderizado desde negro en 500 ms, determinista y sin configuración.

Workspacefade500 ms

install

En marcha en un minuto

install.sh detecta la distro, instala Rust si falta, compila en release y deja el binario en /usr/local/bin. Guía completa en docs/installation.md.

$Linux · cualquier distrodetecta el gestor de paquetes
curl -fsSL https://raw.githubusercontent.com/xtop-cli/xtop/main/install.sh | bash
$Windows · PowerShellrequiere Rust (cargo)
irm https://raw.githubusercontent.com/xtop-cli/xtop/main/install.ps1 | iex
$macOS · cargotambién vale para cualquier otra plataforma
cargo install --git https://github.com/xtop-cli/xtop --all-features
$Build desde fuenterelease optimizado
git clone https://github.com/xtop-cli/xtop.git
cd xtop
cargo run --release

Uninstall

Linux: curl -fsSL …/install.sh | bash -s -- --uninstall · Windows: irm …/uninstall.ps1 | iex. La configuración de usuario se conserva.

Primera ejecución

Al salir con q se guarda config.json y se siembran los 12 temas y 10 layouts en el directorio de configuración de tu plataforma.

usage

Teclas esenciales

Todo es reasignable en config.json. La lista completa está en docs/usage.md y dentro de la app con ?.

salir (guarda la config)q
ayuda / keybindings?
siguiente / anterior tematT
siguiente layoutl
full-screen / ciclar widgetfF
buscar procesos/
paleta de comandosctrl+p
matar proceso seleccionadok
ciclar columna de ordens

¿Quieres aportar código?

Cada área es un repo independiente: widget packs, layouts, plugins, efectos o extensiones se contribuyen sin tocar el kernel. Empieza por CONTRIBUTING y el roadmap.