Skip to main content

slurmster

A minimal Python tool to run parameter-grid experiments on a Slurm cluster with persistent SSH, log streaming, and simple YAML configs.

Install

pip install slurmster

Slurmster GUI

Features

  • CLI with subcommands: submit, monitor, status, fetch, cancel, gui
  • YAML config (explicitly provided via --config)
  • Persistent SSH connection for low latency
  • Per-run working directories on the remote side
  • Automatic log redirection to stdout.log inside each run directory
  • Live log streaming (and re-attach later)
  • Local workspace to track runs and "fetched" state
  • Cancel jobs from local machine
  • Web-based GUI for easy management

CLI Usage

All commands follow this pattern:

slurmster --config <config.yaml> --user <username> --host <hostname> [options] <command>

Basic Commands

Submit experiments:

slurmster --config config.yaml --user myuser --host myhost submit

Monitor logs:

# Monitor by job ID:
slurmster --config config.yaml --user myuser --host myhost monitor --job 1234567

Check status:

slurmster --config config.yaml --user myuser --host myhost status

Fetch completed runs:

# Fetch all completed runs:
slurmster --config config.yaml --user myuser --host myhost fetch
# Or fetch a specific job:
slurmster --config config.yaml --user myuser --host myhost fetch --job 1234567

Cancel jobs:

# Cancel specific job:
slurmster --config config.yaml --user myuser --host myhost cancel --job 1234567
# or cancel all:
slurmster --config config.yaml --user myuser --host myhost cancel --all

Additional Options

  • --password-env ENV_VAR: Use password from environment variable
  • --key /path/to/key: Use SSH key file instead of password
  • --port 22: Specify SSH port (default: 22)

For submit:

  • --no-monitor: Don't automatically start monitoring after submission

For monitor:

  • --from-start: Stream from beginning instead of last 100 lines
  • --lines N: Number of trailing lines when attaching (default: 100)

For status:

  • --all: Show all runs (default: only non-fetched)

For fetch:

  • --job <job_id>: Only fetch a specific job by ID

Configuration File

Create a YAML config file (see example/config.yaml):

remote:
  base_dir: ~/experiments            # remote working root

files:
  push:
    - example/train.py               # any code/data files you need on remote
  fetch:
    - "model.pth"                   # optional; if omitted we fetch the entire run dir
    - "log.txt"

slurm:
  directives: |                      # SBATCH lines; placeholders allowed
    #SBATCH --job-name={base_dir}
    #SBATCH --partition=gpu
    #SBATCH --time=00:10:00
    #SBATCH --cpus-per-gpu=40
    #SBATCH --nodes=1
    #SBATCH --gres=gpu:1
    #SBATCH --mem=32G

run:
  command: |                         # your run command; placeholders allowed
    source venv/bin/activate
    python example/train.py --lr {lr} --epochs {epochs} --save_model "{run_dir}/model.pth" --log_file "{run_dir}/log.txt"

  # ONE of the following:
  grid:
    lr: [0.1, 0.01, 0.001]
    epochs: [1, 2, 5, 10]
  # experiments:
  #   - { lr: 0.1, epochs: 1 }
  #   - { lr: 0.001, epochs: 10 }

Placeholders

  • {base_dir}: resolved remote base directory (e.g. /home/you/experiments)
  • Any run parameter placeholder, e.g. {lr}, {epochs}
  • {remote_dir}: the configured remote.base_dir
  • {run_dir}: the per-run directory (under remote.base_dir/runs/{exp_name})

Local workspace

Under the .slurmster directory next to your config.yaml (<config-dir>/.slurmster/<user>@<host>/<sanitized-remote-base>), we store:

  • runs.json — run registry (job id, exp name, fetched flag, etc.)
  • results/<exp_name>_<job_id>/... — fetched run directories

GUI Usage

For a more user-friendly experience, you can use the web-based GUI:

slurmster --config config.yaml --user myuser --host myhost gui

Additional GUI options:

  • --gui-port 8000: Set the HTTP port (default: 8000)
  • --gui-bind 0.0.0.0: Set the bind interface (default: 0.0.0.0)
  • --no-browser: Don't automatically open browser

The GUI provides:

Configuration Management:

  • View and edit your current configuration
  • See resolved placeholders and SLURM directives
  • Modify files to push/fetch and run commands

Job Submission:

  • Submit single jobs with custom parameters
  • Submit grid jobs with parameter combinations
  • Real-time parameter validation

Job Monitoring:

  • View all jobs with their current status
  • Monitor and browse job outputs in real-time
  • Access job logs directly in the browser

Bulk Operations:

  • Fetch all completed jobs at once
  • Cancel multiple jobs
  • Track job progress and completion status

The GUI automatically opens in your browser at http://localhost:8000 (or your specified port) and provides an intuitive interface for all slurmster functionality.

License

MIT — see LICENSE.

Metadata

Release files for slurmster 0.2.26

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

Source distribution (sdist)

Source distribution for slurmster 0.2.26
File Size Uploaded Provenance
slurmster-0.2.26.tar.gz 40.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for slurmster 0.2.26
File Interpreter ABI Platform
slurmster-0.2.26-py3-none-any.whl Python 3 none any Details

Total release size: 85.7 kB

Release files / slurmster-0.2.26.tar.gz

Download URL slurmster-0.2.26.tar.gz
Size 40.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4ff54283e65bc6a2b710d3949e68dcf077d294849ad55e1a7621888bd7731224
BLAKE2b-256 checksum
How to use checksums
e526aa9c9570b676c19d8cb9fbdd381effbc8314f6c6e797654f7b276a7b7464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 7, 2025.

Transparency log

Release files / slurmster-0.2.26-py3-none-any.whl

Download URL slurmster-0.2.26-py3-none-any.whl
Size 45.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d79593c3ea42a7646f1a55d520bd8e1057f1903ae5d51d43283a40d34dd54359
BLAKE2b-256 checksum
How to use checksums
a65eb03932ab5d343739cd072848691ee1e45c3196c663da0e35e67a6e4afa1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 7, 2025.

Transparency log

Security for slurmster 0.2.26

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for slurmster-0.2.26.tar.gz

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 Aug 7, 2025.

Transparency log

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