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
flagdescriptiondefault
-g, --gpu <n>number of GPUs1
-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 nameauto-generated
--mem <size>total CPU memory (e.g. 200G)auto
--migshortcut for --gpu 1 --type mig (free, instant)
--dry-runshow strategies without submitting

more examples:

rv up --mig # free MIG slice, instant
rv up --dry-run # preview strategies

rv 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
flagdescriptiondefault
-g, --gpu <n>number of GPUs1
-t, --type <type>GPU type
--time <duration>total time needed2:59:00
--name <name>job nameauto-generated
--mem <size>total CPU memoryauto
--migshortcut for --gpu 1 --type mig (free)
-o, --output <paths...>copy these paths from snapshot to persistent storage after job completes
--single-nodeforce single-node allocation (no multi-node strategies)
-f, --followwait 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.py
rv run -f torchrun --nproc_per_node=4 train.py # wait + tail logs
rv run --output ./artifacts python train.py # auto-copy artifacts after job
rv 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
flagdescriptiondefault
-a, --allinclude 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
flagdescriptiondefault
-a, --allcancel all your jobs (requires confirmation)
rv stop my-job-name # cancel by name (all strategies)
rv stop --all # cancel everything

rv 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 ssh
rv ssh 12345 # attach to specific job
rv ssh 12345 --node 1 # attach to second node (multi-node jobs)
rv ssh --config # print SSH config for VS Code

rv logs

View job output logs. Defaults to the most recent job. Automatically follows output for running jobs.

rv logs
flagdescriptiondefault
--errshow stderr instead of stdout
--pulldownload log files locally
-f, --followfollow log outputauto for running jobs
--node <index>show specific node's output (multi-node jobs)
--tail <n>show last N lines (default: entire file)
--rawshow raw output without filtering progress bars
rv logs 12345 --err # view stderr
rv logs --pull # download log files
rv 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 status

rv 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 push

sync 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}/code
rv sync push ./src /scratch/user/project # explicit remote path

sync pull

pull remote files to your machine.

rv sync pull /scratch/user/results ./data

sync watch

watch local directory and auto-push on changes. uses the same git-aware default path as push.

rv sync watch
flagdescriptiondefault
--dry-runshow 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
flagdescriptiondefault
--autoauto-detect common ports (Ray, Jupyter, TensorBoard)
-l, --listlist 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 all
rv forward --list # show active forwards

rv 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 .env

env set

rv env set KEY value

env import

bulk-import from a .env file (defaults to .env in current directory)

rv env import
rv env import .env.prod

env list

rv env list

env rm

rv env rm KEY

rv 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
flagdescriptiondefault
-g, --gpu <n>number of GPUs1
-t, --type <type>GPU type
--time <duration>time duration2: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
flagdescriptiondefault
--timeout <seconds>SSH command timeout in seconds120
rv exec ls /scratch/user
rv 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
flagdescriptiondefault
[jobId]job ID (defaults to most recent running job)
--node <index>node index for multi-node jobs (default: all nodes)
--jsonoutput as JSON
rv gpu 12345 # specific job rv gpu 12345 --node 0 # specific node in multi-node job

rv 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 upgrade

rv init

Interactive setup wizard. Configures your computing ID, SSH keys, VPN check, Slurm account, and remote environment. Run once after installing.

rv init
flagdescriptiondefault
--forcere-run setup even if already configured