GPU router for coding agents

One command.
Every GPU on Earth.

gpyou routes training, finetuning and inference across seven providers. Always available. Lowest price. Scheduled to the greenest grid the moment you run.

Read the docs →
  • CLI only
  • Agent-native
  • 7 providers
  • Carbon-aware
agent · session 4f2109:09:39 UTC
$ gpyou train ./run.py --gpus 8xH100 --max-price 2.10
  scanning 7 providers · 31 regions ...... ok
  candidates under cap .................. 12
  greenest: eu-north (Nebius)  34 g/kWh  $1.98/h
  allocating 8×H100 80GB ................ ok
  mounting s3://acme-ckpt ............... ok
▶ job 4f21 running · logs streaming
  step 120/4000  loss 2.114  1.9 it/s  $0.42 spent
Routed across
01 · How it works

Your agent asks for compute. gpyou finds it.

No dashboards, no consoles. The CLI speaks plain stdout and JSON, so an agent can request, monitor and tear down GPUs the same way it runs tests.

  1. Request. gpyou train --gpus 8xH100 --max-price 2.10
  2. Route. Live inventory, price and grid carbon across 7 providers, 31 regions.
  3. Run. One endpoint, one bill, one log stream. Failover is automatic.
┌──────────────┐        ┌─────────────────────┐        ┌───────────────┐
│ coding agent │──cli──▶│        gpyou        │──────▶ │ Runpod        │
│ (any shell)  │◀─json──│  price · avail ·    │──────▶ │ Vast.ai       │
└──────────────┘        │  grid carbon score  │──────▶ │ Nebius        │
                        │                     │──────▶ │ CoreWeave     │
   $ gpyou train        │  failover  ·  ckpt  │──────▶ │ Lambda        │
   $ gpyou serve        │  one bill · one log │──────▶ │ Scaleway      │
   $ gpyou cost         └─────────────────────┘──────▶ │ Varda         │
                                 │                     └───────────────┘
                                 ▼
                        ┌─────────────────────┐
                        │  your bucket / vpc  │
                        └─────────────────────┘
02 · Availability
99.98%

Capacity pooled across every provider. If a region sells out mid-job, checkpoints move and the run continues.

03 · Price
−38%

Median saving versus a single provider. Spot and reserved inventory are compared on every request, not once a quarter.

04 · Carbon
34 g/kWh

Grid intensity of the region we would pick for you right now. Jobs go where the wind is blowing.

Carbon scheduling, live.

Every candidate region is scored on price and grid carbon intensity at the moment of your request. The lowest-carbon region under your price cap wins. Override with --carbon off if you must.

RegionGrid intensityg/kWh$/GPU·hPick
eu-north (Nebius) ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 34 1.98 ● now
ca-central (Vast) ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 67 2.04 ·
eu-west (Scaleway) █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 86 2.21 × price
us-central (CoreWeave) ███████████████████░░░░░░░░░░░░░░░░░░░░░ 306 1.92 ·
us-east (Lambda) ██████████████████████░░░░░░░░░░░░░░░░░░ 359 1.89 ·
eu-central (Runpod) █████████████████████████░░░░░░░░░░░░░░░ 407 1.95 ·
ap-south (Varda) █████████████████████████████████████░░░ 607 1.71 ·
Refreshes every 5 min · sources: ENTSO-E, EIA, provider inventory APIs 09:09:39 UTC
finetune.shexit 0
$ gpyou finetune qwen2.5-coder-7b --data ./repo.jsonl --json
{"job":"a91c","gpus":"4xA100-80","region":"eu-north","provider":"nebius",
 "price_per_hour":1.62,"grid_gco2_kwh":34,"eta_min":41}

$ gpyou status a91c --wait
  epoch 3/3  loss 0.71  eta 00:04  $1.08 spent

$ gpyou serve a91c --name repo-coder
  https://repo-coder.gpyou.run  ready  (cold start 3.1s)

$ gpyou cost --month
  training   $184.20   provider $173.77  margin $10.43
  inference   $12.06   4.1M tokens · 38 min audio
  carbon     41 kg CO₂e avoided vs. default region
05 · Built for agents

Stdout in. JSON out. Nothing to click.

Every command has a --json flag, idempotent retries and exit codes an agent can reason about. Long jobs stream logs; short ones return. Secrets stay in your environment.

  • gpyou train · finetune · serve · status · cost
  • Works in Claude Code, Codex, Cursor, Aider, plain bash
  • Checkpoints to your bucket, never ours
06 · Hosted small models

Small models, already warm.

For the parts of an agent loop that don't need a frontier model. Same routing, same bill, priced per million tokens or per audio minute. gpyou serve <model> for anything not listed.

07 · Pricing

Provider cost, plus 6%.

Pay per GPU-hour, billed by the second. No subscription, no minimum, no egress markup. You see the provider's price and our margin on every line of gpyou cost.

Volume pricing →
GPUBest nowMedian singleSaving
H100 80GB $1.89 $3.29 −43%
H200 141GB $2.64 $3.99 −34%
B200 180GB $4.10 $5.98 −31%
A100 80GB $1.19 $1.99 −40%
L40S 48GB $0.72 $1.14 −37%
$/GPU·hour, on-demand, includes margin. Live values update in the CLI.
08 · Questions

Before you install.

Is there a web dashboard?

No. gpyou is CLI only, by design. Every state the dashboard would show is one command away and machine-readable with --json.

Where do my checkpoints and data live?

In your own object storage. gpyou mounts it into the job; nothing persists on provider disks after teardown.

How does carbon scheduling affect price?

It only chooses among regions under your --max-price. If the greenest region is also the most expensive you allow, you pay that. Set --carbon off to route on price alone.

What happens when a provider runs out mid-job?

The job checkpoints, gpyou reroutes to the next best region and resumes. You see one interruption line in the log and nothing on the bill for the gap.

Which providers and GPUs?

Runpod, Vast.ai, Nebius, CoreWeave, Lambda, Scaleway and Varda today. H100, H200, B200, A100, L40S and RTX 4090/5090 in most regions.