Skip to main content

turm

image image Conda Version

A TUI for Slurm, which provides a convenient way to manage your cluster jobs.

turm demo

turm accepts the same options as squeue (see man squeue). Use turm --help to get a list of all available options. For example, to show only your own jobs, sorted by descending job ID, including all job states (i.e., including completed and failed jobs):

turm --me --sort=-id --states=ALL

Installation

turm is available on PyPI, crates.io, and conda-forge:

# With uv.
uv tool install turm

# With pip.
pip install turm

# With cargo.
cargo install turm

# With pixi.
pixi global install turm

# With conda.
conda install --channel conda-forge turm

# With wget. Make sure ~/.local/bin is in your $PATH.
wget https://github.com/karimknaebel/turm/releases/latest/download/turm-x86_64-unknown-linux-musl.tar.gz -O - | tar -xz -C ~/.local/bin/

The release page also contains precompiled binaries for Linux.

Shell Completion (optional)

Bash

In your .bashrc, add the following line:

eval "$(turm completion bash)"

Zsh

In your .zshrc, add the following line:

eval "$(turm completion zsh)"

Fish

In your config.fish or in a separate completions/turm.fish file, add the following line:

turm completion fish | source

Open in external pager

When pressing p to open the log in an external pager, the command is chosen in this order: --pager, $TURM_PAGER, $PAGER, then less (or more if less is not installed).

How it works

turm obtains information about jobs by parsing the output of squeue. The reason for this is that squeue is available on all Slurm clusters, and running it periodically is not too expensive for the Slurm controller ( particularly when filtering by user). In contrast, Slurm's C API is unstable, and Slurm's REST API is not always available and can be costly for the Slurm controller. Another advantage is that we get free support for the exact same CLI flags as squeue, which users are already familiar with, for filtering and sorting the jobs.

Resource usage

TL;DR: turm ≈ watch -n2 squeue + tail -f slurm-log.out

Special care has been taken to ensure that turm is as lightweight as possible in terms of its impact on the Slurm controller and its file I/O operations. The job queue is updated every two seconds by running squeue. When there are many jobs in the queue, it is advisable to specify a single user to reduce the load on the Slurm controller (see squeue --user). turm updates the currently displayed log file on every inotify modify notification, and it only reads the newly appended lines after the initial read. However, since inotify notifications are not supported for remote file systems, such as NFS, turm also polls the file for newly appended bytes every two seconds.

Development without Slurm

For local UI testing, this repository includes mocks for squeue, scancel, and scontrol:

PATH=scripts/mock-slurm/bin:$PATH cargo run -- --me

The mock commands read/write files in scripts/mock-slurm/logs, so you can test log rendering and control actions without a Slurm install.

Star History

Star History Chart

Metadata

Release files for turm 0.16.0

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

Built distributions (wheels)

Table of built distributions (wheels) for turm 0.16.0
File Actions
turm-0.16.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details for turm-0.16.0-py3-none-musllinux_1_2_x86_64.whl
turm-0.16.0-py3-none-musllinux_1_2_i686.whl Python 3 none Linux musl 1.2+ x86-32 Details for turm-0.16.0-py3-none-musllinux_1_2_i686.whl
turm-0.16.0-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details for turm-0.16.0-py3-none-musllinux_1_2_armv7l.whl
turm-0.16.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details for turm-0.16.0-py3-none-musllinux_1_2_aarch64.whl
turm-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for turm-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
turm-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl Python 3 none Linux glibc 2.17+ IBM System/390x Details for turm-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
turm-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le Details for turm-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
turm-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details for turm-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
turm-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details for turm-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
turm-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for turm-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Total release size: 17.2 MB

Release files / turm-0.16.0-py3-none-musllinux_1_2_x86_64.whl

Download URL turm-0.16.0-py3-none-musllinux_1_2_x86_64.whl
Size 1.8 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
db794518edcfa2165b220ef80bc8814a3ac15079ba230eaeddd754441613cf25
BLAKE2b-256 checksum
How to use checksums
5f0ca5f5ef634a8e610c00a5c4ef41194f5fafd6629a4de7aed5b114c6b27ff6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-musllinux_1_2_i686.whl

Download URL turm-0.16.0-py3-none-musllinux_1_2_i686.whl
Size 1.7 MB
Tags Linux musl 1.2+ x86-32 Python 3
SHA-256 checksum
How to use checksums
178318879b54230854cee96acf23b8d0a8dec97ccbb988ee7689655420e4fe6f
BLAKE2b-256 checksum
How to use checksums
bfc8111a7bd322a55c770e9c9562d0bd36ab5e24c03f7ec8a387d9307d617335
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-musllinux_1_2_armv7l.whl

Download URL turm-0.16.0-py3-none-musllinux_1_2_armv7l.whl
Size 1.6 MB
Tags Linux musl 1.2+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
f9ee93526f3d5a54970a3174d593b06885e0209fc165263044720e5635dcb117
BLAKE2b-256 checksum
How to use checksums
851f839e78153efecfc028489ea90132af1ff18d127a4c365dde9c80b0568a0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-musllinux_1_2_aarch64.whl

Download URL turm-0.16.0-py3-none-musllinux_1_2_aarch64.whl
Size 1.7 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
e751bf5775cf6df5e68357a46bd77eb99c8202b2ada6926f4c2c6633c5181f11
BLAKE2b-256 checksum
How to use checksums
006be31067282a0498c0d795123cce763ec6ab0f837799a405c627eade4e3dee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
f9d32c17463c1c76a495699facb3bde65ca5f167df273a107975f66e1b67c37b
BLAKE2b-256 checksum
How to use checksums
1126e322eec094268a715a4dc677d78f427f4b3a70fe3bf503049081d738e669
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 1.7 MB
Tags Linux glibc 2.17+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
01ba33f7c007a513e3193170268ecda695a33756702511d8416856a70441b01d
BLAKE2b-256 checksum
How to use checksums
52db7c12e96b370cfb95df532e1e164a4cf535392b3dc9af45910b65d5f345b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 1.9 MB
Tags Linux glibc 2.17+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
612d784b94e16991bbf85776bf3943d1f82f9e51c8c660e3810fe843ff7449af
BLAKE2b-256 checksum
How to use checksums
eca72e73822a9f622a654baf6ff8740bbd5f637617816f4faf3ea38d450f4230
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Size 1.8 MB
Tags Linux glibc 2.17+ x86-32 Python 3
SHA-256 checksum
How to use checksums
35e730293b55e07341f4909cc4e078777aacbf7a478e7be34e8cd87521774e88
BLAKE2b-256 checksum
How to use checksums
0782fe76145b97a57fdbf49ea9d6b3e3eeceabfcedd3a593cdb7ba5d7ba049b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 1.6 MB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
424f102f61f5f95f5b8743eefa72568a7862f5d6f4f08e388845835145ac8be8
BLAKE2b-256 checksum
How to use checksums
1c8935d4a8ac6d519374d15f7fc82a66aa21cf022cb0aacad98570252fa6d5b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / turm-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL turm-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.7 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
ec85e6f9cee0ec07387c4de6b8df12c62b87a9a50e6fa3c9fbea81b9af0bed5a
BLAKE2b-256 checksum
How to use checksums
602f1ffc5e8f04fc9eb345d91cc4ff3df72c58065b1b52b02241a633a035b2a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Security for turm 0.16.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.

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