Developer Experience: CLI

pip install gpu-dev

Reserve GPUs
$ gpu-dev reserve --gpu-type h100 --gpus 4 --hours 8

📋 Reservation a1b2c3d4 created
⏳ Waiting for pod...
🔧 Restoring persistent disk...
✅ Ready! (18s)

SSH: ssh dev@a1b2c3d4.osdc.dev
GPUs: 4x H100 (320 GB)
Disk: my-project (restored from snapshot)
Expires: 2026-05-27 14:30:00

# Also: --jupyter, --spot, --dockerfile, --distributed
GPU Availability
$ gpu-dev avail

GPU Type      Avail  Total  Queue  Est. Wait  Interconnect
──────────────────────────────────────────────────────────────
B300          8/16    0     0 min    NVLink + EFA
B200          4/16    1     ~15 min  NVLink + EFA
H200          8/16    0     0 min    NVLink + EFA
H100          0/16    3     ~45 min  NVLink + EFA
RTX PRO 6000  4/8     0     0 min    PCIe
A100          6/16    0     0 min    NVLink + EFA
T4            12/16   0     0 min    PCIe
CPU (ARM)     4/4     0     0 min    —
CPU (x86)     4/4     0     0 min    —

# Multinode: --gpus 16 --distributed  ·  Spot: --spot (~70% cheaper)
Batch Job Submission
$ gpu-dev submit --gpu-type h100 --gpus 8 --spot
  --disk my-project --runtime ./src -- python train.py

📋 Job e5f6g7h8 submitted
💰 Using spot instance (~70% cheaper)
💾 Persistent disk: my-project
📂 Syncing ./src → /home/dev/runtime/
⏳ Queued, waiting for capacity...
🚀 Running on 8x H100

[stdout] Epoch 1/10: loss=2.34 lr=0.001
[stdout] Epoch 2/10: loss=1.87 lr=0.001
[stdout] Epoch 3/10: loss=1.21 lr=0.0005
...

✅ Job completed. Results synced back.
Inspect Disk Contents
$ gpu-dev disk list-content my-project

my-project (100 GB) — last used 2h ago
────────────────────────────────────────────
📁 /home/dev/
  ├── src/
  │   ├── train.py 4.2 KB
  │   ├── model.py 12.8 KB
  │   └── data/ 2.1 GB
  ├── outputs/
  │   ├── checkpoint_ep10.pt 1.4 GB
  │   └── logs/ 48 MB
  ├── .bashrc 1.2 KB
  └── .venv/ 3.8 GB

Snapshot #3 · 2026-05-26 10:14:22

$ gpu-dev disk clone my-project experiment-v2
✅ Cloned my-project → experiment-v2 (3.1s)