Skip to content

Releases: ju-pixel/clusterpilot

v0.3.1 - Array-job logs and script-display fixes

Choose a tag to compare

@ju-pixel ju-pixel released this 30 Jun 13:29

Fixes

  • F1 TAIL and LOG now work for array jobs. ClusterPilot discovers the
    per-task log files (<job>-<id>-<task>.out), shows the lowest task by
    default, and lets you cycle through tasks with [T], instead of reporting
    "Log file not found yet."
  • The generated SLURM script panel no longer drops square brackets. Bash
    array indices (${ARR[$SLURM_ARRAY_TASK_ID]}), globs and regex classes
    now display verbatim.
  • Project uploads are minimal and layout-preserving.

Packaging

  • The source distribution now ships only the clusterpilot package and its
    tests, keeping the published artefact small and clean.

Release 0.3.0 - DRAC support

Choose a tag to compare

@ju-pixel ju-pixel released this 22 May 02:17

End-to-end support for Alliance Canada / DRAC clusters (Narval, Cedar, Beluga, Graham), plus partition-picker honesty and a
Grex GRES fix.

Highlights

  • DRAC clusters now work natively. No more --partition= in generated scripts; the DRAC scheduler routes jobs via
    --account, --gres, --time, --mem. The TUI picker becomes a routing hint instead of a hard constraint.
  • Automatic dependency pre-flight on DRAC. DRAC compute nodes have no outbound internet. ClusterPilot now warms the
    Julia depot (Pkg.instantiate()) or Python user-site (pip install --user) on the login node between rsync and sbatch.
    Supports Project.toml, requirements.txt, pyproject.toml, and inferred imports (with sklearn → scikit-learn style
    name mapping for Python).
  • CUDA.jl on DRAC. Auto-writes LocalPreferences.toml with local_toolkit = true and emits module load cuda/12.2 in
    the SLURM script so the system CUDA is found at runtime, even though Pkg.instantiate() runs on a login node with no GPU
    visible.
  • GPU library detection. Imports of CUDA, torch, jax, cupy, tensorflow, AMDGPU, oneAPI, Metal, KernelAbstractions,
    cudf, cuml, cugraph, pycuda, or numba now force a --gres=gpu:... directive even when the description doesn't mention
    "GPU".
  • Grex GRES fix. --gres=gpu:N is now the default on Grex; the typed form (gpu:l40s:N, gpu:v100:N) is only emitted
    when the user explicitly names a GPU type. Grex's submit_filter.lua rejects the typed form on some GPU partitions (lgpu
    in particular).

Partition picker & TUI polish

  • Availability labels distinguish idle, mix (partial), BUSY, and DRAIN so partially-allocated partitions stop
    looking unsubmittable.
  • RSYNC button enabled for FAILED / CANCELLED / TIMEOUT / OUT_OF_MEMORY / NODE_FAIL jobs — exactly when you
    need the crash log local.
  • module purge dropped on DRAC and Grex (their sticky base environments make it a no-op that just spams the log).
  • Help text rewritten to lead with plain-English framing — new SLURM users no longer need to think in terms of compute /
    memory / walltime unless they want to.

Probe robustness

  • sacctmgr failures (common on DRAC login nodes where slurmdbd is unreachable) no longer kill the whole cluster probe —
    sinfo alone is enough to populate the partition picker.

Install

pip install --upgrade clusterpilot

Compatibility

No breaking changes. Existing ~/.config/clusterpilot/config.toml profiles work unchanged. Python ≥ 3.9.

v0.2.0 - Hosted tier

Choose a tag to compare

@ju-pixel ju-pixel released this 01 Apr 17:08

What's new

Hosted tier (new)

ClusterPilot now has an optional hosted tier for researchers who want zero setup.
Self-hosted is still fully functional and always will be.

  • Managed API key: no need to supply your own Anthropic key
  • Web dashboard at app.clusterpilot.sh — view job history, status, and logs from
    any browser
  • Sign in with Clerk; billing via Stripe
  • The CLI connects to the hosted proxy endpoint automatically when a hosted
    account is configured

Bug fixes

  • Sync: log tail is now included in all terminal-state syncs (COMPLETED, FAILED,
    TIMEOUT)
  • Dashboard: fix job sync, status colours, job name, and script display
  • Dashboard: surface API errors and add trial banner
  • Fix welcome and payment email links to point to app.clusterpilot.sh

Updating

pip install --upgrade clusterpilot

v0.1.5 - Lazy SSH auth, crash fix on connection errors

Choose a tag to compare

@ju-pixel ju-pixel released this 20 Mar 03:46

What's new

TUI opens immediately - no login prompt at startup

Previously ClusterPilot attempted to authenticate with every configured
cluster before showing the interface. If any cluster was unreachable, the
app would hang or crash on launch.

The TUI now opens instantly with all clusters shown as disconnected.
Authentication is triggered on demand:

  • F2 Submit - prompts when you change the cluster dropdown
  • F1 Jobs - prompts when you use rsync, tail, kill, or clean on a job
  • If a cluster is down, the rest of the app still works normally

Fixed: app crash when SSH connection fails

A bug caused the app to crash with a MarkupError when an SSH connection
attempt failed (e.g. cluster unreachable, wrong credentials). The error
message contained characters that Textual tried to parse as markup.
The error is now displayed cleanly in a toast notification.

Cleaner SSH error messages

SSH failure messages no longer include the raw Python subprocess command
list. Errors are reported as SSH to host failed (exit 255) rather than
a wall of internal detail.

Updating

pip install --upgrade clusterpilot

v0.1.3

Choose a tag to compare

@ju-pixel ju-pixel released this 19 Mar 22:55

Full Changelog: v0.1.0...v0.1.3