Skip to content

Clouds

Every cloud is an adapter behind the same six-primitive CloudProvider contract. The shared state machines supply failover, retries, compensation, and crash recovery; each adapter only maps a cloud's API onto the contract. Pick one with --cloud <id>.

Pick a cloud

For… Use
cheap 24–48 GB NVIDIA GPUs for a development session massedcompute (US), hyperstack (Canada)
a second, independent US source when one is sold out lambda
the hyperscalers you already have accounts with aws, gcp
an existing DigitalOcean account; Toronto RTX Ada / L40S, US H100 / MI300X digitalocean
B300 / B200 / H200 / H100 in Europe and the US, live spot pricing nebius
European capacity, spot pricing verda
marketplace breadth (many upstream providers) primeintellect, runpod
trying gpuprov without any account docker

Prices and stock change minute to minute. Every adapter except AWS and GCP plans from live availability, so the offers are what can actually be launched now, cheapest first.

At a glance

Cloud --cloud What a VM is Regions (--region) Default when none given Planning
AWS aws (default) EC2 instance us-west-2, … required static GPU ladder
GCP gcp Compute Engine instance us-central1, … (zone per offer) required static ladder + live zone offerings
Massed Compute massedcompute VM any; Massed chooses the placement anywhere (US) live inventory
Hyperstack hyperstack VM CANADA-1, US-1, NORWAY-1 CANADA-1, US-1 live flavor ⨝ stock ⨝ price
Lambda lambda VM us-east-1, … US regions live capacity per region
DigitalOcean digitalocean GPU Droplet tor1, nyc2, atl1, … North American regions live sizes × regions
Nebius nebius Compute instance (platform + preset) eu-north1, us-central1, … (one project each) every region with a project live platforms × projects, calculator / spot prices, capacity advisor
Verda verda VM location FIN-01, … or country FI anywhere live per-location availability
Prime Intellect primeintellect marketplace pod (VM) united_states, canada, … anywhere live marketplace availability
RunPod runpod GPU container (pod) continent, or country (US) anywhere live per-data-center stock
Docker docker local sshd container local local one offer

Capabilities

Cloud k3s (on by default) k8s API access --port --spot --image Login Per-VM side resources
AWS ✓ at boot (cloud-init) direct ✓ security group ✓ AMI id ubuntu@22 security group
GCP ✓ at boot (cloud-init) direct ✓ firewall rule ✓ image URL / family ubuntu@22 firewall rule
Massed Compute ✓ over SSH SSH tunnel ✗ ✗ image id / name Ubuntu@22 —
Hyperstack ✓ at boot (cloud-init) direct ✓ VM security rules ✓ spot flavors image name ubuntu@22 — (environment and key pair are shared per region)
Lambda ✓ at boot (cloud-init) direct ✓ per-VM firewall ruleset ✗ image id / family ubuntu@22 firewall ruleset (when ports are opened)
DigitalOcean ✓ at boot (cloud-init) direct ✓ per-VM cloud firewall ✗ image slug / id root@22 cloud firewall (always: SSH + requested ports) and per-VM tag
Nebius ✓ at boot (cloud-init) direct ✓ (default security group allows all traffic) ✓ preemptible image family / id ubuntu@22 — (boot disk is VM-managed)
Verda ✓ at boot (startup script) SSH tunnel ✗ ✓ image type root@22 OS volume, startup script
Prime Intellect ✓ over SSH SSH tunnel ✗ ✗ ✗ dictated by the pod —
RunPod ✗ (containers, no systemd) — ✗ ✗ container image root@random port —
Docker ✗ (no systemd) — ✗ ✗ ✗ ubuntu@random local port —

Unsupported combinations are rejected before planning, with the cloud's reason. For example, --port 8080 on Massed Compute is refused because there is no firewall API. The default k3s cluster is skipped, with a note, only on clouds that cannot host it.

Support status

Adapters are tested against each cloud's documented API, with pure tests plus mock HTTP servers. A cloud is labeled supported only after a real-account run of the acceptance suite: allocate, SSH, k3s + GPU, terminate, verify nothing billable remains, and interrupt-midway cleanup. See that page for the current results.