Skip to main content

Remote cluster controller: push, pull, run, shell over SSH + rsync

Project description

rcc

Remote cluster controller. Generalizes the classic ssh host "cd dir && cmd" + rsync project/ host:dir/ workflow into a small CLI with per-project config.

Install

uv tool install remote-cluster-controller
# or
pipx install remote-cluster-controller

Both install the rcc command.

Quickstart

cd my-project
rcc init
# edit .rcc/config.toml to set host and remote_dir
rcc push --dry-run
rcc push
rcc run -- nvidia-smi
rcc run -t -- htop
rcc run -s 'squeue -u $USER | head'   # shell snippet: pipelines, $vars survive
rcc shell
rcc pull
rcc status
rcc close

Configuration

.rcc/config.toml (per project, gitignored):

default = "myhost"

[profiles.myhost]
host = "myhost"
remote_dir = "/abs/path/on/remote"

Per-command overrides: --profile, --host, --remote-dir. Excludes: edit .rcc/rccignore (gitignore syntax).

Slurm jobs (rcc job)

For HPC login nodes running Slurm, rcc job wraps the common verbs so you never have to shell-quote a --format= value, a $USER, or a pipeline (the friction that motivated this command — see issue #1).

rcc job submit train.sh --extra-env EPOCHS=10   # sbatch, prints the JOBID
rcc job submit train.sh -W --dependency afterok:524614   # block until done + chain after a prior job
rcc job list                                     # squeue for your user
rcc job status 524614                            # sacct -j <id> (fixed format)
rcc job tail 524614 -f                           # tail -f slurm-524614.out
rcc job cancel 524614                            # scancel

Notes:

  • The submit/list/status/cancel verbs sniff for sbatch on the remote and exit 127 with a hint on non-Slurm hosts; tail skips the check (tail is universal).
  • list and status use a fixed, readable --format=; you never type one.
  • job submit -W/--wait blocks until the job finishes and rcc exits with the job's exit code — closing the submit→monitor loop in one command. --dependency passes --dependency=<TYPE:JOBID> straight to sbatch for chaining (e.g. afterok:524614).
  • job tail reads slurm-<JOBID>.out inside remote_dir by default. Pass --file NAME for jobs that set a custom --output.

For one-off Slurm commands that aren't wrapped, use the shell-string mode of rcc run, which also sidesteps the quoting problem:

rcc run -s 'sacct -j 524614 --format=JobID,State,Elapsed,ExitCode,Reason'

See docs/superpowers/specs/2026-04-23-rcc-design.md for the full spec.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remote_cluster_controller-0.1.1.tar.gz (81.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remote_cluster_controller-0.1.1-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file remote_cluster_controller-0.1.1.tar.gz.

File metadata

File hashes

Hashes for remote_cluster_controller-0.1.1.tar.gz
Algorithm Hash digest
SHA256 797b93d73f15f64c08cdb4f3d3a6cdf8d183457674f19a38faea6a600293fb42
MD5 ae0365c44b59bc8d60c287e28b20a3ea
BLAKE2b-256 ddb0d96081a2b2c1c242cf61025bb6ca725aec910c57158f5c795edd4e345e09

See more details on using hashes here.

File details

Details for the file remote_cluster_controller-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for remote_cluster_controller-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 96757e028c5e0e2bb228137f309519b8b2a6f7e7011693a5cf21e49431ad4d99
MD5 ea321524e154dacb708d13b237985b90
BLAKE2b-256 e17a55498fae404b6704ea14a8cbdcf074b1892d237e862a795a5e70015bb374

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page