slmtop
August 5, 2026 ยท View on GitHub
slmtop is a terminal dashboard developed with Rust for realtime Slurm monitoring. It is inspired by htop and slurm-monitor-top, and built for Slurm-specific jobs, nodes, GPU resources, disks and recent accounting data.
Features
- Five focusable TUI panels: jobs, nodes, GPUs/resources, disks and summary/accounting.
- Realtime refresh from Slurm CLI commands with per-command timeouts and structured errors.
- Sortable tables by keyboard or mouse header click.
- Search and typed filters per panel, for example
owner=me state=running gpu=a100. - Panel focus, resize, show/hide, row selection, and column visibility controls.
- Job details with guarded
cancel,hold,release, andrequeueactions. - Per-user resource usage stats: Jobs, CPUs, GPUs, memory and job time limit.
Requirements
- Rust toolchain with Cargo.
- Slurm CLI commands in
PATH:squeue,sinfo,scontrol,scancel, and optionallysacct.
Installation
Download the latest precompiled binary for your platform from the releases page, or build from source as described below.
cargo build --release
./target/release/slmtop
Help:
Realtime Slurm cluster monitor
Usage: slmtop [OPTIONS]
Options:
-i, --refresh-interval <REFRESH_INTERVAL>
Refresh interval in seconds [default: 3]
-t, --command-timeout <COMMAND_TIMEOUT>
Per-command timeout in seconds [default: 4]
-l, --accounting-limit <ACCOUNTING_LIMIT>
Recent sacct rows to keep [default: 100]
-u, --user <USER>
Show only jobs owned by this user and use it as the current username
-T, --theme <THEME>
Color theme: catppuccin, monokai, tokyonight, dracula, onedark, nightowl, classic [default: catppuccin]
-h, --help
Print help
-V, --version
Print version
Useful options:
slmtop --refresh-interval 2 --command-timeout 5 --accounting-limit 200 -T nightowl
slmtop --user bob
Keybindings
q: quit.?: help.r: refresh now.t: switch theme.Tab/Shift-Tabor1-4: change focused panel.- Arrow keys or
j/k: move selected row. s: cycle sort column for the focused panel.d: toggle sort direction.- Mouse left-click on a table header: sort by that column.
/: search the focused panel.f: set a typed filter on the focused panel.c: toggle optional columns in the focused panel.x: hide the focused panel.v: show the next hidden panel.[/]: resize panel width split.{/}: resize panel height split.Enteron a job: open job details.
In the job details popup:
c: cancel job.h: hold job.u: release job.r: requeue job.Esc: close popup.
Job actions require a y confirmation before Slurm is changed.
Filters
Filters are whitespace-separated tokens. Free text searches within the panel row, and key-value tokens narrow the result set:
owner=me state=running
owner=others part=gpu gpu=a100 train
state=pending
node_state=drain gpu=h100
Supported keys include owner, user, state, part, partition, gpu, gpu_type, gres, and node_state.
Workspace Layout
crates/slmtop-core: domain models, sorting, filtering, search, summaries, and GPU aggregation.crates/slmtop-parsers: pure parsers forsqueue,sinfo,sacct, memory, CPU, and GPU/GRES strings.crates/slmtop-slurm: backend traits, refresh orchestration, telemetry, and job-control contracts.crates/slmtop-slurm-cli: Slurm CLI backend.crates/slmtop-tui: Ratatui/Crossterm terminal UI.crates/slmtop:slmtopbinary.
Validation
cargo fmt --check
cargo test
cargo clippy --workspace --all-targets
cargo run -p slmtop -- --version-only