My agents run around the clock on a cheap Hostinger VPS with no GPU. When a project needed a serious NVIDIA card, I put a Runpod pod next to it: an RTX 4090 with 24 GB, billed by the second, stopped when I'm not using it, with every tool, login and project file on a 50 GB network volume for about $3.50 a month. After a stop, the pod is ready again in about 30 seconds, with everything installed and every login intact. An 11-hour day costs me about $9.90.
The project is a proof of concept that makes a talking-head video shot on a webcam look as if it came from a pro camera and lens: separate the speaker from the background, rebuild a clean background plate, estimate depth, then render a real lens blur. The models are open-source research code, almost all NVIDIA-first: SAM 2.1, MatAnyone 2, BiRefNet, ProPainter, Depth Anything 3. On my MacBook I couldn't tell a failure of the method from a failure of the Mac.
What sold me is how ready it is for agents. Runpod ships an official MCP server and a Claude Code plugin, and I connected them with OAuth from inside Claude Code, so no API key sits on disk. Claude then checked live GPU stock per data center, created the network volume and the pod, started and stopped it, and recovered from a failed start, asking me before anything that costs money. The pod is plain Ubuntu with SSH and the official PyTorch image (CUDA 12.8, PyTorch 2.8, Ubuntu 24.04, the same OS as my VPS), so the same infrastructure-as-code repo that builds my VPS configures the pod too. It has the compliance a client asks about as well: SOC 2 Type II and ISO 27001.
It isn't the cheapest GPU you can rent: marketplaces start far lower. It's the cheapest I've found that keeps my work when I stop it, on data-center hardware, with tools an agent can drive. On the same card it's 26 to 42% under AWS in us-east-1, and it rents cards AWS doesn't, with no quota to wait for. When the data is a client's, the answer changes: Runpod or AWS for a GPU?
The catch is that a pod is a container, not a VM, and only its network volume survives a stop. Design for that from day one and it's fast and predictable; the gotchas below are what I learned the hard way. The whole setup, with the measurements, is in A GPU box next to the agent box.
Why not the others
What a GPU costs on demand elsewhere, and why I didn't pick it for this job:
| Provider | 24 GB, $/hour | 48 GB, $/hour | Stopped | What you get | Why not, for me | Better when |
|---|---|---|---|---|---|---|
| Runpod, Secure Cloud | 0.89 (RTX 4090) | 0.59 (RTX A6000) | Storage only | Container | My pick | |
| Vast.ai | from 0.14 (RTX 4090) | from 0.36 (RTX A6000) | Storage only, but the GPU can be gone | Container | Reliability varies from host to host; its verified data-center 4090s cost $0.72–0.94 | Throwaway runs at the lowest price |
| Lambda | 1.29 (A10) | 1.09 (RTX A6000) | Can't stop: delete it | VM | No stop, and dearer | Full VMs on 8× H100 or B200 nodes |
| Vultr | 1.71 (A40, Sydney) | Billed in full | VM | A stopped machine still bills | A GPU VM that stays up in Sydney, Singapore or Tokyo | |
| Modal | 0.80 plus CPU and RAM (L4) | 1.95 plus CPU and RAM (L40S) | Nothing to stop | Serverless functions and sandboxes | Not a box an agent lives in for a day | Serverless Python inference that scales to zero |
| Thunder Compute | 0.35 (RTX A6000) | Can't stop: snapshot, then delete | Container, CUDA pinned | No stop, no GPU video decoding, North America only | The cheapest 48 GB for a one-off run | |
| DigitalOcean | 0.76 (RTX 4000 Ada, 20 GB) | 1.57 (L40S) | Billed in full | VM | A stopped machine still bills | You already host on DigitalOcean |
| Google Cloud | 0.71 (L4, Iowa) | Disk only | VM | GPU quota starts at 0; no L4 in Australia | A team already on Google Cloud | |
| Azure | 1.13 (a quarter of an RTX PRO 6000) | 2.44 (half of one) | Disk only | VM | The price | Inference that must stay in Australia, on Container Apps' serverless GPUs |
| Hetzner | 0.38 (RTX PRO 4000) | Can't: cancelling ends the server | Dedicated server | A $233 setup fee on every new server; Germany and Finland only | A month or more, always on, in Europe | |
| AWS | 0.80 (L4, us-east-1) | 1.86 (L40S, us-east-1) | Disk only | VM | GPU quota starts at 0, and dearer for the same card | The client's data, in the client's account: Runpod or AWS |
Sources, checked on 1 November 2026: Runpod pricing, Vast.ai pricing, Lambda pricing, Vultr cloud GPU, Modal pricing, Thunder Compute pricing, DigitalOcean GPU Droplets pricing, Google Cloud GPU pricing, Azure Retail Prices API, Hetzner GPU servers, EC2 on-demand pricing. Hetzner's price converted from euros at 1.1172.
Australian GPU clouds (Sharon AI, Firmus and others) quote through sales, for committed spend: a fit for a client contract, not a daily experiment box.
Use it when
- Bursty GPU work you start in the morning and stop at night: research, proofs of concept, experiments. Stopped, you pay only for the storage.
- An AI agent works in the box: Claude Code installs the models, runs the experiments and iterates, and Runpod's MCP server lets it create, start and stop pods itself, asking before anything that costs money.
- CUDA-first open-source code (SAM 2, matting and depth models) that needs a real NVIDIA card, not a Mac's fallbacks.
- The card matters: an RTX 4090 or 5090, which the big clouds don't rent, or 48 GB from $0.59 an hour.
- You need the GPU today: no quota request, where AWS starts every account at zero GPUs.
Don't use it when
- The client's data must stay in Australia or inside its own AWS account: SageMaker or EC2 in that account.
- Inference that runs 24/7: on AWS, a 3-year Savings Plan puts an L4 at about $235 a month, and Runpod no longer sells a commitment discount.
- Software that needs a full VM: its own Docker, systemd, UDP (Mosh, Tailscale in kernel mode).
- A production system that needs an uptime commitment: Runpod's terms promise none.
Pricing
Secure Cloud, per second: RTX 4090 (24 GB) $0.89 an hour, L4 $0.59, RTX A6000 (48 GB) $0.59, L40S $1.09, H100 $3.99. Network volume $0.07 per GB a month, also billed while the pod is stopped. No fees for data in or out. Checked 1 November 2026: Secure prices rose 15–36% between July and October (the 4090 was $0.69), spot pods are retired, and savings plans were withdrawn in October.
In my words: what hurts
- It's a container, not a VM: no UDP, no systemd, no Docker of my own, so my VPS provisioning didn't transfer as it was.
- Network volumes are slow with many small files, and they refuse ownership changes.
- A stopped pod can't always restart on its own machine.
- GPU stock is uneven across regions, especially in Asia.
- The onboarding wizard hides the options that matter.
Gotchas, with fixes
Gotcha: A pod is a container: no systemd, no Docker of your own, no swap, no firewall control and no UDP. Mosh doesn't work, and Tailscale runs only in userspace mode.
Fix: Write a separate, container-safe provisioning script instead of reusing the VPS one, and connect with plain SSH.
Gotcha: A stop wipes everything except the network volume.
Fix: Put tools, logins and projects on a network volume from day one, and rebuild everything else with a start script on every start. Test the full stop-and-start cycle early: it found three bugs in my start script that a normal boot never showed.
Gotcha: A stopped pod is tied to its physical machine. If someone has taken its GPU, the restart is refused (Runpod calls these Zero GPU Pods).
Fix: Keep the work on a network volume and create a new pod on the same volume: mine was ready again 27 seconds later, with the same tools, logins and files.
Gotcha: The SSH port changes at every start, and the public IP changes too after a migration.
Fix: Write a small helper that reads the new address from the API and rewrites the laptop's SSH settings.
Gotcha: A network volume can't leave its data center, so it pins every future pod there.
Fix: Pick the data center for stock of the card you want and for network-volume support, not only for distance. From Malaysia I run in Romania, with about 200 ms of keyboard lag; the GPU work isn't affected.
Gotcha: The network volume is very slow with many small files. A pip install of 1.8 GB (about 19,000 files) took 10.5 minutes there and 22 seconds on the local disk; importing transformers took 26 seconds every time, against 0.9.
Fix: Run Python environments from the local disk, and keep each one on the volume as a single compressed archive (1.8 GB down to 516 MB), restored in about 2 seconds after a start.
Gotcha: The volume refuses chown and shows every file as writable by everyone, so SSH rejects keys in a home folder on it, and Git refuses the repositories.
Fix: Keep the home folder on the local disk and link only the tool folders (~/.local, ~/.claude, ~/.config, ~/.cache) into the volume. Set Git's safe.directory to '*'.
Gotcha: nproc and free show the host, not the pod: 32 CPUs and over 100 GB of RAM, against a real limit of 13.6 CPUs and about 61 GB. The CPUs and RAM that come with a GPU also vary from host to host.
Fix: Size worker pools from the container's real limits: a frame job sized from nproc ran at 5.8 frames a second, and at 14.3 sized to the limit.
Gotcha: There are two kinds of SSH. The proxy (ssh.runpod.io) checks the account's keys live but can't copy files; the pod's own SSH server supports scp and rsync but only knows the keys it had when the pod started.
Fix: Copy files over the pod's direct TCP port, and restart the pod after adding a key to the account.
Gotcha: The onboarding wizard hides the cloud type, network volumes, the template image and the start command.
Fix: Deploy from the full Pods → Deploy page.
Gotcha: The image's PyTorch gets duplicated: uv installed a second one (about 5 GB) because it ignores system packages, and pip's build isolation downloaded another, with CUDA 13 (about 3 GB), just to build SAM 2.
Fix: Use pip with a constraints file that pins the image's torch versions, and --no-build-isolation for packages that build against torch.
Gotcha: System libraries installed by hand vanish at the next stop: MediaPipe needs libegl1 and libgles2.
Fix: List every system package in the start script, installed from a download cache on the volume.
Gotcha: Billing is per second, but the real risk is a forgotten pod: about $21 a day for a 4090.
Fix: Show the uptime and running cost in the terminal's status bar, and send a phone reminder after 8 hours, then every 4. I chose a reminder over an automatic stop, because agent sessions legitimately run for hours.
Gotcha: At a zero balance, pods without a network volume are terminated and their data is gone. Network volumes keep billing and can eventually be deleted.
Fix: Turn on auto-pay and the low-balance email alerts, and keep everything that matters on a network volume.
Gotcha: The RTX 4090 is a GeForce card, and NVIDIA's GeForce licence says its software "is not licensed for datacenter deployment". A client's procurement team may raise it.
Fix: For client work, pick a professional or data-center card (L4, L40S, RTX A6000, H100), on Runpod or on AWS.
Provisioning
Pulumi via a Terraform provider · Community Terraform provider
Runpod publishes its own Terraform provider, runpod/runpod 2.0 (27 October 2026, built on the REST API v2): pods, network volumes, templates, serverless endpoints and SSH keys. The registry lists it as community tier. The Pulumi package is stale (v1.9.99, July 2024): from Pulumi, use the Terraform provider. Version 2.0 doesn't upgrade 1.x state: remove and re-import the resources.
Instead, consider
- SageMaker The data is the client's: training jobs and endpoints inside its AWS account, Sydney included.
- EC2 A full GPU VM in the client's account, or inference running 24/7 on a Savings Plan.
- Hostinger VPS The always-on box beside it, for the agents and everything that needs no GPU.
Decision guides
The concept behind it
Where it fits
- A GPU for models and experiments: Pick 01.
Research and experiments: the card you need in minutes, billed per second, stopped at night for the price of its storage.
Sources
- Runpod pricing
- Runpod: Pods overview and limitations
- Runpod: pod pricing and billing
- Runpod: network volumes
- Runpod: SSH, proxy and direct TCP
- Runpod: Zero GPU Pods
- Runpod for AI agents (MCP server and Claude Code plugin)
- Runpod MCP server
- Runpod Terraform provider
- Runpod: security and compliance
- NVIDIA GeForce software licence
Last reviewed by Nicolas Dao