A live, configurable terminal dashboard for multiple Slurm clusters.
slurm-avail brings live CPU, memory, GPU, filesystem, and scheduler data from
multiple Slurm clusters into one keyboard-driven TUI. Clusters can be queried
locally or over SSH. No slurm-avail agent or service needs to be installed on
the HPC systems; the dashboard uses their existing Slurm command-line tools.
| Live multi-cluster overview | Scheduler forecast |
|---|---|
Views
Nodes gives a live overview of all configured clusters. It summarizes free CPU, memory, and physical GPU capacity and then shows how those resources are distributed across individual nodes. Node states such as allocated, reserved, user-exclusive, drained, and down remain visible in the same view.
Filesystems compares capacity and available space for the storage paths configured on each cluster.
Login Nodes shows which SSH endpoints are reachable, which endpoint is currently supplying data, and whether automatic failover is available.
Jobs combines the current user's live queue with recent accounting history.
Its default All scope lists jobs from every configured cluster; numbered
cluster scopes filter the same table. Running jobs show their actual nodes and
start/end times, pending jobs show Slurm's wait reason and placement estimate,
and finished jobs appear in a separate history table with result-aware colors.
A fixed inspector at the bottom follows the selected row and shows its full
timing and result information. For pending jobs it also exposes weighted
sprio factors and account and user fair-share data from sshare. Scheduler
estimates are presented as estimates, not predictions made by the dashboard.
The history window and its refresh interval are configurable; they default to
seven days and one minute.
Forecast presents a per-node timeline of exact Slurm reservations and the remaining time limits of currently running jobs. The timeline can be zoomed and navigated from short operational windows up to a year. It deliberately does not speculate about when pending jobs will start.
Config manages clusters and dashboard behavior without leaving the TUI. Clusters can use local or SSH collection, multiple login endpoints, CPU or GPU focused layouts, custom Slurm locations, and selected filesystem paths. They can also be hidden or reordered, while refresh and retry intervals are shared dashboard settings. Everything is persisted in a readable TOML file.
Installation
Install from PyPI with uv:
uv tool install slurm-avail
slurm-avail
pipx is also supported:
pipx install slurm-avail
The package has no third-party runtime dependencies.
Quick start
Run:
slurm-avail
On first launch, the Config view opens automatically and creates:
~/.config/slurm-avail/config.toml
Select the initial local cluster and press Enter to edit it, or press a to
add an SSH cluster. Press s to save and apply, then use Tab to switch
between Nodes, Filesystems, Login Nodes, Jobs, Forecast, and Config.
You can return directly to configuration with:
slurm-avail --init
Configuration
Clusters may run locally or be reached through one or more SSH endpoints.
The following is an example configuration for the TU Dresden HPC system.
It monitors the Capella, Alpha, Barnard, and Romeo clusters, including their
two login nodes and shared filesystems. Replace USERNAME with your own
TU Dresden/ZIH username.
Show TU Dresden HPC example configuration
version = 1
[settings]
node_refresh_seconds = 10
filesystem_refresh_seconds = 60
login_refresh_seconds = 60
jobs_refresh_seconds = 10
jobs_history_refresh_seconds = 60
jobs_history_days = 7
forecast_refresh_seconds = 300
failed_retry_seconds = 10
ssh_connect_timeout_seconds = 8
command_timeout_seconds = 20
login_probe_timeout_seconds = 10
filesystem_probe_timeout_seconds = 2
retries_per_address = 0
retry_delay_seconds = 1
forecast_horizon_days = 365
[[clusters]]
name = "CAPELLA"
mode = "ssh"
addresses = ["login1.capella.hpc.tu-dresden.de", "login2.capella.hpc.tu-dresden.de"]
user = "USERNAME"
focus = "gpu"
hidden = false
filesystems = ["/home", "/software", "/data/horse", "/data/walrus", "/data/narwhal", "/data/quokka", "/data/cat"]
slurm_bin_path = "/opt/slurm/current/bin"
exclude_partitions = ["interactive", "capella-interactive"]
[[clusters]]
name = "ALPHA"
mode = "ssh"
addresses = ["login1.alpha.hpc.tu-dresden.de", "login2.alpha.hpc.tu-dresden.de"]
user = "USERNAME"
focus = "gpu"
hidden = false
filesystems = ["/home", "/software", "/data/horse", "/data/walrus", "/data/narwhal", "/data/quokka", "/data/cat"]
slurm_bin_path = "/opt/slurm/current/bin"
exclude_partitions = ["interactive", "alpha-interactive"]
[[clusters]]
name = "BARNARD"
mode = "ssh"
addresses = ["login1.barnard.hpc.tu-dresden.de", "login2.barnard.hpc.tu-dresden.de"]
user = "USERNAME"
focus = "cpu"
hidden = false
filesystems = ["/home", "/software", "/data/horse", "/data/walrus", "/data/narwhal", "/data/quokka", "/data/cat"]
slurm_bin_path = "/opt/slurm/current/bin"
exclude_partitions = ["interactive"]
[[clusters]]
name = "ROMEO"
mode = "ssh"
addresses = ["login1.romeo.hpc.tu-dresden.de", "login2.romeo.hpc.tu-dresden.de"]
user = "USERNAME"
focus = "cpu"
hidden = false
filesystems = ["/home", "/software", "/data/horse", "/data/walrus", "/data/narwhal", "/data/quokka", "/data/cat"]
slurm_bin_path = "/opt/slurm/current/bin"
exclude_partitions = ["interactive"]
For a smaller generic example, see config.example.toml.
The user field is optional; when omitted, OpenSSH configuration determines
the user. The Slurm path is also optional when scontrol and squeue are
already available on the endpoint's PATH.
A different configuration file can be selected with:
slurm-avail --config /path/to/config.toml
XDG_CONFIG_HOME is respected.
Controls
| Key | Action |
|---|---|
Tab |
Switch view |
| Arrow keys | Scroll or navigate |
Page Up / Page Down |
Scroll by page |
Home / End |
Jump to top or bottom |
r |
Refresh now |
+ / - |
Change forecast resolution |
[ / ] |
Change Jobs scope or Forecast cluster |
q |
Quit |
The Config view shows its editing controls in the legend. In particular, use
a to add, Enter to edit, h to hide or show, Shift+Up/Down to reorder,
and s to save clusters.
Requirements
On the computer running slurm-avail:
- Python 3.11 or newer
- a curses-capable POSIX terminal
- OpenSSH's
sshcommand for remote clusters
On each configured cluster endpoint:
- a working Slurm installation connected to the cluster controller
- Slurm's
scontrolandsqueuecommands available onPATHor through the configuredslurm_bin_path - Slurm's
sprioandssharecommands for Jobs priority and fair-share details (the Jobs view degrades gracefully when they are unavailable) - Slurm's
sacctcommand and accounting data for recent Jobs history (live jobs remain available if accounting is disabled or unavailable) /bin/shand standard POSIX utilities includingid,date,awk,sort,sed, andgrepdfandtailfor filesystem monitoring (timeoutis used when present)
SSH authentication must already work non-interactively, normally through an
SSH agent, keys, and ~/.ssh/config. slurm-avail does not store passwords or
private keys.
Command-line usage
slurm-avail --help
slurm-avail --version
slurm-avail --once
slurm-avail --view jobs
slurm-avail --view forecast --cluster 2
Development
git clone https://github.com/LukasBuschmann/slurm-avail.git
cd slurm-avail
python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
pytest
ruff check .
Contributions and issue reports are welcome. Release instructions are in RELEASING.md.
License
slurm-avail is available under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slurm_avail-0.2.1.tar.gz.
File metadata
- Download URL: slurm_avail-0.2.1.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aad02121f5a9c53dcf4077cb1d28d86e01d9165fe531acbd29ed485c44445be
|
|
| MD5 |
24e28a41252bdfb836a2bf49af030712
|
|
| BLAKE2b-256 |
bce3b02e674fd3764bb473a07f69798f97d3cb3b865965d53972121474173abe
|
Provenance
The following attestation bundles were made for slurm_avail-0.2.1.tar.gz:
Publisher:
release.yml on LukasBuschmann/slurm-avail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slurm_avail-0.2.1.tar.gz -
Subject digest:
1aad02121f5a9c53dcf4077cb1d28d86e01d9165fe531acbd29ed485c44445be - Sigstore transparency entry: 2518376340
- Sigstore integration time:
-
Permalink:
LukasBuschmann/slurm-avail@9e6a7c6b9c6888324c81b3eaca689336d93cb1bd -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/LukasBuschmann
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9e6a7c6b9c6888324c81b3eaca689336d93cb1bd -
Trigger Event:
release
-
Statement type:
File details
Details for the file slurm_avail-0.2.1-py3-none-any.whl.
File metadata
- Download URL: slurm_avail-0.2.1-py3-none-any.whl
- Upload date:
- Size: 50.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d00b65a66ccb0f8c97eac157303ae5db80becadea5c76d44b4868845e465cfb
|
|
| MD5 |
30241d75acd727f3259cc89ddbe1c0d9
|
|
| BLAKE2b-256 |
23d1a2723f622b6d5d0ae472bbddee7af08acc60d7d106ece30ff7c439fa7e0a
|
Provenance
The following attestation bundles were made for slurm_avail-0.2.1-py3-none-any.whl:
Publisher:
release.yml on LukasBuschmann/slurm-avail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slurm_avail-0.2.1-py3-none-any.whl -
Subject digest:
2d00b65a66ccb0f8c97eac157303ae5db80becadea5c76d44b4868845e465cfb - Sigstore transparency entry: 2518376954
- Sigstore integration time:
-
Permalink:
LukasBuschmann/slurm-avail@9e6a7c6b9c6888324c81b3eaca689336d93cb1bd -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/LukasBuschmann
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9e6a7c6b9c6888324c81b3eaca689336d93cb1bd -
Trigger Event:
release
-
Statement type: