Skip to main content

slurm-wtf

Where did the cluster capacity go?

wtf shows Slurm account usage, shared parent limits, estimated free capacity, and the jobs consuming it in one expandable terminal table.

Install

uv tool install slurm-wtf
wtf

Install directly from GitHub:

uv tool install git+https://github.com/youngsm/slurm-wtf.git

Run without installing:

uvx --from slurm-wtf wtf --demo

Requires Python 3.10+ and a POSIX terminal. Live mode also requires sacctmgr, scontrol, squeue, sinfo, and access to the cluster's accounting information. The package has no Python runtime dependencies.

Explore

wtf                 # interactive pools, accounts, and inline jobs
wtf --demo          # synthetic example, no cluster required
wtf -g              # GPU partitions
wtf -c              # CPU partitions
wtf -m research     # filter account or partition names
wtf --plain         # printable snapshot
wtf --json          # machine-readable snapshot
wtf -w 30           # refresh every 30 seconds
Action Control
Expand pool accounts Click, Space, or Right
Expand running jobs Enter on a pool or account
Collapse a branch Left or Escape
Move Arrows, j/k, Page Up/Down, mouse wheel
Refresh / quit r / q

Jobs expand in place, with name, user, elapsed time, time limit, GPUs, and estimated node share. The selected job's footer shows its full name and account. Redirected output is automatically noninteractive. --no-color and NO_COLOR disable colors.

Reading the numbers

  • IN USE: resource usage on this partition, across all users in the account or pool.
  • USED / LIMIT: GPU-node equivalents for GPU partitions, respecting child GPU ceilings and shared ancestors.
  • EST. FREE: a conservative estimate through an attached account, constrained by account quotas and available hardware.
  • NODE EQ: a job's largest GPU, CPU, or host-RAM share of its assigned nodes.

Four GPUs on four-GPU hosts equal one GPU-node equivalent, even if the placement allowance permits using two separate hosts. Shared child quotas are never added beyond the parent ceiling. Pool estimates use the best attached-account offer; do not add pool and child estimates together. A zero estimate at an occupied-node limit does not rule out a smaller job fitting on an already occupied host.

Cluster portability

Account names are treated as names, with no required prefix, separator, partition suffix, or institution-specific convention. Partitions come from Slurm associations and partition metadata. An association without a partition restriction is expanded over accessible partitions, respecting published account, group, and QoS access lists. Database queries are restricted to the current cluster, and controller counters retain partition scope. CPU-only clusters and both typed and untyped GPU resources are supported.

All users and QoS names count as ordinary usage by default. If your administrators confirm that certain jobs are reclaimable, configure that explicitly:

wtf --preemptible-qos scavenger,spot
wtf --ignore-users placeholder

SA_PREEMPTIBLE_QOS and SA_IGNORE_USERS provide the same comma-separated defaults. No user is ignored automatically, and an unfamiliar QoS is never assumed reclaimable.

Limits of an estimate

This is an accounting view, not a replacement for Slurm's scheduler. Reservations, user-specific limits, QoS resource caps, fair-share priority, job-submit plugins, and a particular job's CPU, RAM, GPU type, or placement constraints can reduce what can run. Read permissions and PrivateData can restrict visibility; unavailable controller usage is shown as unknown. Shared account limits may span partitions and should not be summed across their rows. For such accounts, IN USE is derived from visible jobs on the selected partition, while USED / LIMIT retains account-wide quota usage. The selected pool identifies which partitions share its quota. On heterogeneous partitions, GPU-node equivalents and job shares are estimates based on reported hardware capacities.

Development

uv sync --all-extras
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run wtf --demo
uv build

Tests use synthetic Slurm snapshots and require no cluster access. See RELEASING.md for PyPI publishing.

Metadata

Release files for slurm-wtf 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slurm-wtf 0.1.0
File Size Uploaded
slurm_wtf-0.1.0.tar.gz 24.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slurm-wtf 0.1.0
File Interpreter ABI Platform
slurm_wtf-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / slurm_wtf-0.1.0.tar.gz

Download URL slurm_wtf-0.1.0.tar.gz
Size 24.3 kB
Tags Source
SHA-256 checksum
How to use checksums
21a10b0f5707b0e5595e1b3747d7fcfa0c4ba5096ca058338f482fbd7260d579
BLAKE2b-256 checksum
How to use checksums
d4a7748156a852060586266365c8edf06de06e943291a963c6b44e139811c7b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / slurm_wtf-0.1.0-py3-none-any.whl

Download URL slurm_wtf-0.1.0-py3-none-any.whl
Size 25.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f527574d449b0c0a77b4e310667db1ea550dcc2a5daed163a8b8f24d5f973bb8
BLAKE2b-256 checksum
How to use checksums
8d5654ac4750110795e2eecc89d2d0a92a35bcee4fe4dfb010ea8cdce30118cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page