Loading articleโฆ
Loading 4weirdโฆ
Loading articleโฆ
DocsRunPod vs DigitalOcean
Docs ยท pick the right cloud
Two providers, two jobs. RunPod rents you GPUs by the second for short bursty work. DigitalOcean rents you whole servers by the month for things that stay up. This page tells you which to pick, what each costs, and which buttons talk to which.
The one-sentence version
RunPod = short, bursty, GPU-heavy work (rent an agent box for hours, render something, run a serverless job, shut it down). DigitalOcean = long-term servers (a Droplet that stays up for days or weeks, with attached volumes and point-in-time snapshots). Under 24 hours or needs a GPU? RunPod. Stays up for weeks? DigitalOcean.
RunPod โ the supercomputer rental
GPU pods (always-on boxes), serverless endpoints (scale-to-zero jobs), network volumes. Billed per-second-ish by RunPod on your card; mirrored read-only onto /my/usage/ with no Vibe cut.
DigitalOcean โ the apartment lease
Droplets (whole servers), volumes (attached disks), snapshots (restore points). Monthly-first pricing that rewards leaving the box up. Best for persistent agent servers, bots, and game servers.
Money
Shapes differ more than prices: RunPod meters GPU time tightly (great for bursts, punishing to idle on), DigitalOcean charges flat monthly-ish rates (great for always-on, wasteful for a 20-minute render). Always check the live catalog โ provider prices shift.
| Dimension | RunPod | DigitalOcean |
|---|---|---|
| Billing unit | Per-second GPU time (pods), per-execution (serverless) | Hourly with a monthly cap (Droplets, volumes) |
| GPU access | Yes โ the reason to pick it; cheapest Secure GPU with live stock | CPU-first; GPU droplets exist but are not the 4weird default path |
| Idle cost | High โ a running pod meters even when you're tabbed away (idle watchdog stops it) | Flat โ the Droplet costs the same idle or busy; snapshots/volumes add a little |
| Short burst (< 24h) | โ Cheaper almost always | โ You pay the hour/month shape anyway |
| Always-on (weeks) | โ A pod left up for weeks is the most expensive option | โ Monthly cap wins; snapshots protect you |
| Vibe Coins cut | Direct spend mirrored with no 25% cut (nothing to split) | Same rule when mirrored โ marketplace bookings always carry the 25% inside |
Keys
Both keys are server-only: no NEXT_PUBLIC_ prefix, never imported in client components. Without a key, that provider reports unconfigured and the app says so honestly instead of faking.
| Key | Where to get it | What it unlocks |
|---|---|---|
| RUNPOD_API_KEY | RunPod console โ Settings โ API Keys | Provider โconfiguredโ badge, live key check, billing mirror, auto-provisioning of agent pods + desktops |
| RUNPOD_API_BASE | Optional override (default https://api.runpod.io/v2) | Point the RunPod client at a proxy or pinned API host |
| DIGITALOCEAN_TOKEN | DigitalOcean โ API โ Tokens (personal access token) | Provider โconfiguredโ badge; Droplet / volume / snapshot calls in lib/digitalocean.ts |
| DIGITALOCEAN_API_BASE | Optional override (default https://api.digitalocean.com/v2) | Point the DO client at a proxy; non-https values fall back to the default |
Wires
Every route below fails closed without its key: unconfigured means an honest unconfigured error, never invented data.
RunPod routes
GET /api/agents/providers โ configured flags for runpod / digitalocean / custom (booleans only, keys never leave the server).GET /api/agents/runpod-status โ signed-in liveness probe: read-only 24h pod-billing query proves the key without spending.POST /api/agents/runpod-sync โ mirrors real RunPod billing (pods + serverless + volumes, 1โ31 days, default 7) into runpod_usage; 5 syncs/hour.POST /api/desktop/provision โ rents the box (cpu / gpu); GET on the same route is the public no-login catalog.GET /api/desktop/mine + /api/desktop/[id]/heartbeat|pod|policy โ track, keep-alive, inspect, and read the idle policy of your desktops.DigitalOcean routes & client
lib/digitalocean.ts โ droplets (get/create/action), volumes, snapshots, sizes, regions; every failure returns { ok: false, error } with the upstream status.lib/compute.ts โ digitaloceanProvider โ marketplace hook: a supplied https:// endpoint is used as-is; blank auto-provision honestly reports โnot wired yet โ supply an endpoint or use RunPodโ.POST /api/cloud/provision โ UnitUnite squad workspace provisioning (org wallet, cloud.provision permission)./api/agents/* (bookings) โ provider-agnostic escrow math: book โ heartbeat (1โ3600s per beat) โ end with refund; works the same whatever the metal.How to choose
https:// URL back as the listing endpoint.House rule
This is the load-bearing rule of the whole cloud surface: the app never invents infrastructure. No stock, no key, no budget fit, quota hit โ the page and the API say so in words, and you are not charged.