commands
full reference for all rv commands. every command supports --json for scripted output.
rv up
Allocate GPUs on Rivanna and attach an interactive shell. Probes the cluster, generates strategies across all compatible GPU types and partitions, submits them in parallel, and drops you into a shell when the first allocation starts running. Use rv run for batch jobs.
rv up -g 2 -t a100 --time 8h| flag | description | default |
|---|---|---|
| -g, --gpu <n> | number of GPUs | 1 |
| -t, --type <type> | GPU type (a100, a6000, a40, h200, v100, rtx3090, mig) | — |
| --time <duration> | total time needed (e.g. 2h, 24h, 3d) | 2:59:00 |
| --name <name> | job name | auto-generated |
| --mem <size> | total CPU memory (e.g. 200G) | auto |
| --mig | shortcut for --gpu 1 --type mig (free, instant) | — |
| --dry-run | show strategies without submitting | — |
more examples:
rv up --mig # free MIG slice, instantrv up --dry-run # preview strategiesrv run
Run a command on Rivanna GPUs. Syncs local files to a git-aware workspace, creates an immutable snapshot, submits strategies across compatible GPU types, and exits. Returns immediately after submission by default — use rv ps to check status and rv logs -f to follow output. Pass -f to wait for allocation and tail logs inline.
rv run python train.py| flag | description | default |
|---|---|---|
| -g, --gpu <n> | number of GPUs | 1 |
| -t, --type <type> | GPU type | — |
| --time <duration> | total time needed | 2:59:00 |
| --name <name> | job name | auto-generated |
| --mem <size> | total CPU memory | auto |
| --mig | shortcut for --gpu 1 --type mig (free) | — |
| -o, --output <paths...> | copy these paths from snapshot to persistent storage after job completes | — |
| --single-node | force single-node allocation (no multi-node strategies) | — |
| -f, --follow | wait for allocation and tail logs | — |
important: argument ordering
rv options must come before the command. Options placed after the command are passed through to it silently.
rv run -g 4 -t a100 python train.py ✓
rv run python train.py -g 4 -t a100 ✗
rv run uploads the current working directory as the job workspace. Only git-tracked files are synced.
more examples:
rv run -g 4 -t a100 python train.pyrv run -f torchrun --nproc_per_node=4 train.py # wait + tail logsrv run --output ./artifacts python train.py # auto-copy artifacts after jobrv run -g 4 --single-node python generate.py # force single-node (inference)rv ps
List your jobs on Rivanna. Also available as rv ls. Shows job ID, name, state, GPU type, node, and elapsed time. When multiple allocation strategies are pending for the same request, they are collapsed into a single row. Displays git branch and commit hash when available. Automatically cancels losing fan-out strategies when a winner starts running.
rv ps| flag | description | default |
|---|---|---|
| -a, --all | include completed/failed jobs (last 7 days) | — |
rv stop
Cancel jobs on Rivanna. Also available as rv cancel. Accepts a job ID or job name. When cancelling a job that's part of a fan-out strategy group, rv shows all sibling strategies and offers to cancel them together. Use rv stop instead of scancel to avoid orphaning strategies.
rv stop 12345| flag | description | default |
|---|---|---|
| -a, --all | cancel all your jobs (requires confirmation) | — |
rv stop my-job-name # cancel by name (all strategies)rv stop --all # cancel everythingrv ssh
Attach to a running job's compute node. Defaults to the most recent running job if no ID is given. Use --config to print an SSH config entry for VS Code or Cursor.
rv sshrv ssh 12345 # attach to specific jobrv ssh 12345 --node 1 # attach to second node (multi-node jobs)rv ssh --config # print SSH config for VS Coderv logs
View job output logs. Defaults to the most recent job. Automatically follows output for running jobs.
rv logs| flag | description | default |
|---|---|---|
| --err | show stderr instead of stdout | — |
| --pull | download log files locally | — |
| -f, --follow | follow log output | auto for running jobs |
| --node <index> | show specific node's output (multi-node jobs) | — |
| --tail <n> | show last N lines (default: entire file) | — |
| --raw | show raw output without filtering progress bars | — |
rv logs 12345 --err # view stderrrv logs --pull # download log filesrv logs 12345 --node 1 # view node 1 output (multi-node)rv status
Dashboard showing cluster status: connection health, Slurm account, storage usage, active jobs, port forwards, and GPU availability across all partitions.
rv statusrv sync
Sync files between your machine and Rivanna using rsync. Three subcommands: push, pull, and watch. When run from a git repo without an explicit remote path, automatically targets the current branch's workspace.
rv sync pushsync push
push local files to Rivanna. defaults to current directory. without a remote path, syncs to the git-aware workspace path.
rv sync push # syncs to {project}/{branch}/coderv sync push ./src /scratch/user/project # explicit remote pathsync pull
pull remote files to your machine.
rv sync pull /scratch/user/results ./datasync watch
watch local directory and auto-push on changes. uses the same git-aware default path as push.
rv sync watch| flag | description | default |
|---|---|---|
| --dry-run | show what would be synced (push/pull only) | — |
rv forward
Forward ports from a running job to your local machine. Useful for Jupyter, TensorBoard, Ray Dashboard, and other web UIs.
rv forward 8888| flag | description | default |
|---|---|---|
| --auto | auto-detect common ports (Ray, Jupyter, TensorBoard) | — |
| -l, --list | list active forwards | — |
| -s, --stop [port] | stop a forward (or all if no port given) | — |
| --node <index> | node index for multi-node jobs (default: 0, the head node) | — |
rv forward --auto # detect + forward allrv forward --list # show active forwardsrv env
Manage environment variables that are injected into every job. Useful for API keys and other secrets. Env vars are global — use config files for experiment-specific settings.
rv env import .envenv set
rv env set KEY valueenv import
bulk-import from a .env file (defaults to .env in current directory)
rv env importrv env import .env.prodenv list
rv env listenv rm
rv env rm KEYrv cost
Estimate SU (Service Unit) cost for a job configuration. Shows cost across all GPU types if no type is specified. MIG is always free.
rv cost -g 4 -t a100 --time 24h| flag | description | default |
|---|---|---|
| -g, --gpu <n> | number of GPUs | 1 |
| -t, --type <type> | GPU type | — |
| --time <duration> | time duration | 2:59:00 |
rv exec
Run a command on the Rivanna login node (no GPU allocation). Useful for checking SU balance, listing files, or quick remote operations. Accepts both individual arguments and quoted shell strings.
rv exec allocations| flag | description | default |
|---|---|---|
| --timeout <seconds> | SSH command timeout in seconds | 120 |
rv exec ls /scratch/userrv exec "pip list | grep torch"rv exec --timeout 300 "uv pip install vllm"rv gpu
Show GPU utilization for a running job via nvidia-smi. Shows all GPUs allocated to the job. Defaults to the most recent running job if no ID is given. For multi-node jobs, shows per-node output with headers.
rv gpu| flag | description | default |
|---|---|---|
| [jobId] | job ID (defaults to most recent running job) | — |
| --node <index> | node index for multi-node jobs (default: all nodes) | — |
| --json | output as JSON | — |
rv gpu 12345 # specific job
rv gpu 12345 --node 0 # specific node in multi-node jobrv upgrade
Check for a newer version and upgrade the rv CLI in place. Downloads the latest binary via the install script. The CLI also checks for updates automatically once per day.
rv upgraderv init
Interactive setup wizard. Configures your computing ID, SSH keys, VPN check, Slurm account, and remote environment. Run once after installing.
rv init| flag | description | default |
|---|---|---|
| --force | re-run setup even if already configured | — |