Releases: ju-pixel/clusterpilot
Release list
v0.3.1 - Array-job logs and script-display fixes
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
clusterpilotpackage and its
tests, keeping the published artefact small and clean.
Release 0.3.0 - DRAC support
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 andsbatch.
SupportsProject.toml,requirements.txt,pyproject.toml, and inferred imports (withsklearn → scikit-learnstyle
name mapping for Python). - CUDA.jl on DRAC. Auto-writes
LocalPreferences.tomlwithlocal_toolkit = trueand emitsmodule load cuda/12.2in
the SLURM script so the system CUDA is found at runtime, even thoughPkg.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:Nis 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'ssubmit_filter.luarejects the typed form on some GPU partitions (lgpu
in particular).
Partition picker & TUI polish
- Availability labels distinguish
idle,mix(partial),BUSY, andDRAINso partially-allocated partitions stop
looking unsubmittable. RSYNCbutton enabled forFAILED/CANCELLED/TIMEOUT/OUT_OF_MEMORY/NODE_FAILjobs — exactly when you
need the crash log local.module purgedropped 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
sacctmgrfailures (common on DRAC login nodes whereslurmdbdis unreachable) no longer kill the whole cluster probe —
sinfoalone is enough to populate the partition picker.
Install
pip install --upgrade clusterpilotCompatibility
No breaking changes. Existing ~/.config/clusterpilot/config.toml profiles work unchanged. Python ≥ 3.9.
v0.2.0 - Hosted tier
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
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