A keyboard-driven terminal UI for monitoring Slurm jobs
in real time over SSH. It runs the standard Slurm command-line tools
(squeue, sacct, scontrol, sinfo, sstat, nvidia-smi, scancel) against one
or more clusters, parses the output, and presents the result as a rich dashboard
built with Textual.
Features
- Real-time job table — active jobs from
squeuemerged with recent history fromsacct, color-coded by state. - Per-job detail screen —
scontrolstats with time / memory / per-GPU utilisation bars; one keystroke to the stdout, stderr, or submitted batch script. - Cluster dashboard — cluster-wide CPU / GPU / memory bars, partition summary,
per-node table fed by
sinfo. - Multi-cluster tabs — configure several clusters and switch with
h/l; filter, search, and sort state is remembered per tab. - Persistent job history & analytics (
H) — a local SQLite database records every run, its resource usage over time, and your favourites; browse, filter, and see GPU / CPU / memory-hour aggregates. On by default;--demoships a seeded history. - Favourites & notes — star important runs (
f) and annotate them (n); starred runs are exempt from history retention. - Vim-style navigation throughout.
- OSC 52 yank — copy job IDs, paths, and log lines to the system clipboard
through SSH, no
xclip/pbcopyrequired. - First-run wizard that writes a working TOML config and tests the SSH connection.
- Demo mode (
--demo) — exercise the entire TUI against built-in fixture data, no cluster needed.
Installation
slurmhub is published on PyPI and requires
Python ≥ 3.12 and an OpenSSH client.
The recommended installers are uv or
pipx — both install slurmhub into its own isolated
environment so its dependencies don't pollute your system Python:
# uv (https://docs.astral.sh/uv/)
uvx slurmhub # one-shot run
uv tool install slurmhub # persistent install on $PATH
# pipx (https://pipx.pypa.io/)
pipx install slurmhub
# plain pip — works, but consider a venv first
pip install --user slurmhub
Then:
slurmhub --demo # try it without an SSH connection
slurmhub # run against your configured cluster(s)
Or clone and run from source (for development):
git clone https://github.com/matteospanio/slurmhub.git
cd slurmhub
uv sync
uv run slurmhub
Quick start
-
Run
slurmhub. If no config exists at~/.config/slurmhub/config.toml, the first-run wizard walks you through creating one. -
Set up passwordless SSH to your cluster —
ssh-copy-idyour key and add aHostalias in~/.ssh/config. -
Reference the alias in your config:
[profiles.mycluster] host = "mycluster"
Full SSH and configuration walkthrough: docs site → Getting started.
Documentation
The full documentation lives at matteospanio.github.io/slurmhub.
- Getting started — installation, quickstart, SSH setup
- Configuration — TOML schema, profiles, log paths, worked examples
- Usage guides — job table, detail screen, log viewer, cluster dashboard, batch script, scancel
- Reference — keybindings, info sources, troubleshooting
- Changelog — release notes
Sphinx sources are under docs/. Build locally with:
uv sync --group docs
uv run sphinx-build -b html docs docs/_build/html
Development
uv sync --group dev
uv run pytest # run the test suite (417 tests)
pre-commit install # enable code-quality hooks
uv run python docs/scripts/generate_screenshots.py # regenerate docs SVGs
See CLAUDE.md for project context and development notes.
License
GPL-3.0 © Matteo Spanio
Metadata
Release files for slurmhub 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| slurmhub-1.1.0.tar.gz | 72.1 kB | Without provenance | Details for slurmhub-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| slurmhub-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for slurmhub-1.1.0-py3-none-any.whl |
Total release size: 166.7 kB
Release files / slurmhub-1.1.0.tar.gz
| Download URL | slurmhub-1.1.0.tar.gz |
|---|---|
| Size | 72.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db2d14f557159f299c6bab588abb7e61faa7c8377321b4c12d0f9325a3c9b6ad
|
|
BLAKE2b-256 checksum How to use checksums |
ad966688a7a9139da3f46fdffbd363878bf150f35ded67663f973fd5f378dbfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.3
|
Release files / slurmhub-1.1.0-py3-none-any.whl
| Download URL | slurmhub-1.1.0-py3-none-any.whl |
|---|---|
| Size | 94.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8029ed74d834a9c1ddd9e76e5f4fe36fd9b6bb11266ab23c6219dc42e8da60d4
|
|
BLAKE2b-256 checksum How to use checksums |
1c3d78b7d6815af04b181b697ec86c272b676daabd2d26a35e2c446b55a2c68f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.3
|
Security for slurmhub 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.