GPU router for coding agents

The OpenRouter
for compute.

One account, one command, GPUs from every provider we route to. gpyou pools their capacity, rents the cheapest offer in stock and moves to the next one when a GPU is sold out.

Create an account →

Or pipx install gpyou. Needs Python 3.12+ and a gpyou account.

  • Cheapest offer wins
  • Pooled capacity
  • Automatic fallback
  • No API keys
agent · session 4f2111:22:39 UTC
$ gpyou launch acme/train:1 2.50 --gpu 'RTX 4090' --max-duration 3600 --yes
  checking runpod · vast · verda ........ 9 offers under $2.50/h
  cheapest: RTX 4090 24GB  vast  $0.46/h
  vast: sold out · trying the next offer
  next: RTX 4090 24GB  runpod  $0.52/h
  renting ............................... ok
  pulling registry.gpyou.ai/acme/train:1  ok
▶ op 4f21 running · gpyou logs 4f21
Routed across · more providers soon
01 · How it works

Your agent asks for compute. gpyou finds it.

No provider consoles. The CLI prints text on a terminal and JSON when piped, so an agent can request, watch and stop GPUs the same way it runs tests.

  1. → Request. gpyou launch acme/train:1 2.50 --gpu 'RTX 4090'
  2. → Quote. In-stock offers from Runpod, Vast.ai and Verda. The cheapest one under your price wins.
  3. → Run. One prepaid balance, one log stream. A refused rental moves on to the next offer.
┌──────────────┐        ┌─────────────────────┐        ┌───────────────┐
│ coding agent │──cli──▶│        gpyou        │──────▶ │ Runpod        │
│ (any shell)  │◀─json──│  price · stock ·    │──────▶ │ Vast.ai       │
└──────────────┘        │  quote · spend cap  │──────▶ │ Verda         │
                        │                     │        │               │
   $ gpyou launch       │  prepaid credit     │ ─ ─ ─▶ │ more soon     │
   $ gpyou finetune     │  one log stream     │        └───────────────┘
   $ gpyou serve        └─────────────────────┘
                                 │
                                 ▼
                        ┌─────────────────────┐
                        │ R2 buckets (EU) and │
                        │ private registry    │
                        └─────────────────────┘
02 · Price
Cheapest wins

Every in-stock offer under your max price is compared the moment you ask. The lowest one is rented. You see the quote first and pay per second.

03 · Availability
Next offer

Sold out or refused? gpyou moves on to the next offer and keeps looking for up to 10 minutes. If no GPU turns up, your reserved credit comes back.

04 · Capacity
One pool

Runpod, Vast.ai and Verda behind one account, every GPU from 24 GB up. More providers are on the way, and each one adds to the pool.

finetune.shexample
$ gpyou storage upload bkt_7d1e ./chats.jsonl
  48 MB uploaded · sha-256 verified · obj_5b20

$ gpyou finetune validate obj_5b20
{"dataset_id":"ds_91a2","rows":1240,"valid":true}

$ gpyou finetune start ds_91a2 1.00 5.00 --method qlora --json
{"id":"ft_a91c","state":"queued","model":"Qwen/Qwen2.5-1.5B-Instruct",
 "max_hourly_usd":1.00,"max_spend_usd":5.00}

$ gpyou finetune wait ft_a91c
  completed · $0.41 spent

$ gpyou serve 1.00 --adapter-job-id ft_a91c
  ep_3c9e created asleep · wakes on the first request

$ gpyou endpoints chat ep_3c9e "Summarise this repo"
  waking · finding a GPU · renting · loading model ... ready
05 · Built for agents

Stdout in. JSON out. Nothing to click.

Every command takes --json and answers in JSON when piped. Creation is retry-safe with --request-id, and every spend has a quote and a cap. Long jobs have wait and logs.

  • gpyou launch · finetune · serve · endpoints · credits
  • Runs from any agent shell: Claude Code, Codex, Cursor, plain bash
  • CI signs in with GitHub Actions OIDC. No API keys to leak
06 · What you can run

Containers, fine-tunes, endpoints.

Bring an image, a dataset or a model. gpyou rents the GPU, runs the work and releases it. Your data stays in R2 buckets under EU jurisdiction and survives every GPU you stop.

07 · Pricing

Pay per second. See the price first.

Prepaid credit. No subscription and no seat fees. Every launch shows its quote first, and fine-tunes stop at the spend cap you set.

ItemPriceDetail
GPU compute Live market rate Per second, at the rate you were quoted
Endpoints Same GPU rate Only while awake. Released after 15 idle min
Storage and images $0.018 / GB·month 1 TiB per account
Transfer Quoted per GB Capped per job with --max-transfer
Credit $10 to $1,000 Per top-up. Optional auto top-up
USD. VAT added where it applies. Live GPU prices: gpyou gpus.
08 · Questions

Before you install.

What does public beta mean?

gpyou is open to everyone and charges real money for real GPUs. Expect rough edges, no SLA and commands that may still change. Endpoints are for development: one GPU, no autoscaling.

Which providers and GPUs?

Runpod Secure Cloud, Vast.ai verified hosts and Verda, all on demand. More providers are on the way. You get every GPU model with at least 24 GB that one of them has in stock, such as RTX 4090, L40S, A100, H100 and H200.

How am I billed?

With prepaid credit. You buy $10 to $1,000 through Stripe, or set an automatic top-up with a monthly limit. GPUs are charged per second at the rate you were quoted. There is no subscription.

Where does my data live?

Buckets and container images live in Cloudflare R2, EU jurisdiction. Jobs run at the provider you land on. Verda is in the EU, Runpod and Vast.ai machines can be outside it. Pass --provider verda to stay in the EU.

What if no GPU is available?

Before renting, gpyou moves to the next offer when a provider refuses, and keeps looking for up to 10 minutes. If no machine appears within 15 minutes, the reserved credit comes back. A running job is not moved. Fine-tunes checkpoint every 100 steps.

Do I need an API key?

No. Sign in with an email code, a passkey or an authenticator app. The session lives in your OS keychain. CI signs in with GitHub Actions OIDC.

Is there a web dashboard?

The CLI does everything. For the browser, app.gpyou.ai has your account, credit, payments and a Compute page.