Rent the cheapest GPU in stock from your terminal.
gpyou is a CLI that quotes every provider it knows, rents the cheapest GPU under your price and runs your container, fine-tune or model endpoint. You pay with prepaid credit. There are no API keys to manage. Every command speaks JSON, so a coding agent can drive it end to end.
gpyou is open to everyone and rents real GPUs for real money. Three providers are live today and more are on the way. Expect rough edges, no SLA, and commands that may still change. Read the beta limits.
01Install and sign in
gpyou is on PyPI. Install it with uv or pipx on Python 3.12 or newer. You need a gpyou account to use it: sign up from the terminal with your email and a verification code, then add a passkey or an authenticator app if you like. The session lives in your OS keychain.
$ uv tool install gpyou # or: pipx install gpyou $ gpyou signup # email code, then passkey, app or skip $ gpyou credits add 50 # opens Stripe Checkout $ gpyou status
Update with uv tool upgrade gpyou or pipx upgrade gpyou.
Headless box? Add --no-browser to credits add and open the Checkout
URL from the JSON on another device.
02Quickstart
gpyou gpus lists the cheapest in-stock offer of every GPU model with at least 24
GB, across all providers. Pick one and the CLI asks what to run on it, then waits with live
state until it is running.
$ gpyou gpus GPU VRAM PROVIDER WHERE $/HR › RTX 4090 24 GB cheapest ·· ···· L40S 48 GB cheapest ·· ···· A100 80GB 80 GB cheapest ·· ···· H100 80GB 80 GB cheapest ·· ···· H200 141 GB cheapest ·· ···· What should run on it? container · fine-tune · endpoint
--provider verda --country NL gpyou instances wait ID Ctrl-C stops the waiting, not the job.
No machine within 15 minutes means the reserved credit comes back. Nothing is charged.
03Providers
Three providers are live, all on demand. gpyou ranks offers by confirmed stock, then past launch success, then price. If a provider refuses before renting, it moves to the next offer. More providers are coming.
- Live container Runpod
Secure Cloud. Data centres worldwide.
--provider runpod - Live container Vast.ai
Verified hosts only. Widest range.
--provider vast - Live vm · EU Verda
Finland and Iceland. Stays in the EU.
--provider verda - Coming soon More providers
Each one passes the same lifecycle, isolation and billing tests before it gets traffic.
04Run a container
Quote first, then launch at the rate you saw. The quote and request ID go to stderr, one
JSON operation goes to stdout. Retry with the same --quote-id and
--request-id. Never mint a new request ID when the outcome is unclear.
$ gpyou offers ghcr.io/you/train:1 2 --gpu 'RTX 4090' $ gpyou launch ghcr.io/you/train:1 2 --gpu 'RTX 4090' \ --count 1 --max-duration 3600 --yes $ gpyou logs OPERATION_ID $ gpyou terminate OPERATION_ID
| Flag | Default | What it does |
|---|---|---|
IMAGE MAX_PRICE | required | Image to run and your hourly ceiling in USD. The chosen offer price becomes the cap. |
--gpu | RTX 4090 | GPU model. Every model with at least 24 GB is eligible. |
--count | 1 | GPUs per machine, 1 to 8. |
--provider | any | runpod, vast or verda. |
--country | any | ISO country code for placement. |
--max-duration | none | Seconds before the job stops. 300 to 604,800 (7 days). |
--max-transfer | 0 | Transfer price cap in USD per GB. |
--disk | 40 | Temporary disk in GB. Deleted with the machine. |
--spec | none | Read the full request from a JSON file. |
05Fine-tune
QLoRA or LoRA on Qwen2.5 1.5B and 7B Instruct, with pinned model revisions.
MAX_SPEND is a hard cap. Jobs checkpoint every 100 steps.
$ gpyou buckets create data $ gpyou storage upload BUCKET chat.jsonl $ gpyou finetune validate OBJECT_ID $ gpyou finetune quote DATASET 2 20 $ gpyou finetune start DATASET 2 20 \ --method qlora $ gpyou finetune wait OPERATION_ID
06Serve an endpoint
vLLM on one GPU, base model or your adapter. It starts asleep, wakes on the first request and releases its GPU after 15 idle minutes. You pay only while it is awake.
$ gpyou serve 2 \ --model Qwen/Qwen2.5-1.5B-Instruct $ gpyou serve 2 --adapter-job-id JOB $ gpyou endpoints chat ID "hello" $ gpyou endpoints usage ID $ gpyou endpoints delete ID
07Storage and registry
Buckets and images live in Cloudflare R2, EU jurisdiction, and survive GPU termination.
Uploads resume with --upload-id. gpyou registry login installs a Docker
credential helper for your private namespace. Transfers use short-lived, scoped credentials.
08For coding agents
Pass --json to any command for machine output. Prices in the CLI are USD; the API
uses integer micro-USD. Without a terminal, interactive pickers return JSON instead of prompting.
Every launch carries a request ID. A retry with the same ID never rents twice.
Price, spend, duration and transfer ceilings are set per job, before anything runs.
GitHub Actions signs in with OIDC. Trust a repo with gpyou identities trust.
$ gpyou --json instances get OPERATION_ID
{
"id": "OPERATION_ID",
"state": "running",
"provider": "verda",
"gpu": "RTX 4090",
"max_hourly_micro_usd": 2000000
} 09Python SDK
The SDK reuses the CLI's keychain session. chat() and
stream_chat() wait through cold starts and never retry once inference begins. The
gateway speaks an OpenAI-style chat schema.
from gpyou.client import Client
client = Client()
endpoint = client.request("GET", "/v1/endpoints")[0]
result = client.chat(endpoint["id"], [
{"role": "user", "content": "Explain gradient accumulation."},
])
print(result["choices"][0]["message"]["content"]) 10CLI reference
Every command has --help with its arguments.
| Command | Subcommands |
|---|---|
gpyou gpus | Cheapest in-stock offer per GPU model, then pick and run. |
gpyou offers · launch | Quote and start a container. |
gpyou instances | list · get · wait, plus logs and terminate |
gpyou finetune | validate · quote · start · status · wait · cancel |
gpyou serve · endpoints | list · chat · usage · delete |
gpyou buckets · storage | create · list · delete · upload · download · abort |
gpyou registry · images | login · add · list · remove · delete |
gpyou credits · billing | add · balance · usage · auto-topup · payments · recover |
gpyou identities | list · trust · revoke · sessions · revoke-session |
gpyou agent | Ask about your account and jobs. Anything that spends needs your y. |
11Credit and billing
| Item | Price | Detail |
|---|---|---|
| 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 |
Beta limits Public beta
- Three providers live. More are being added.
- No SLA. Commands and flags may still change.
- Endpoints are for development: one GPU, no autoscaling.
- A running job is never moved to another provider.
- Fine-tune runtime estimates are not published yet.
- Runpod and Vast.ai machines can sit outside the EU.