Hetzner Cloud vs Vultr
Both rent plain KVM servers by the hour that you set up and run yourself. Hetzner Cloud is the leaner list price with six locations and outbound firewalls, while Vultr spreads across 33 locations and adds GPUs and Windows.
The companies and products
Hetzner Cloud
Hetzner is a German hosting company founded in 1997; Hetzner Cloud rents virtual servers, storage and networking by the hour.
A Hetzner Cloud server is a Linux VM picked from shared vCPU lines (cost-optimized CX and CAX, regular CPX) or dedicated vCPU (CCX), with local NVMe disk, a public IP and up to 20 TB of traffic in the EU. You add volumes, private networks, firewalls and load balancers, and run everything yourself through the Console, the Cloud API, the hcloud CLI or Terraform. It is general infrastructure, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine.
Vultr
Vultr is a general-purpose cloud, and Cloud Compute is its line of KVM virtual servers.
A Vultr instance is a Linux or Windows VM you rent by size, with root, a public IPv4, local SSD or NVMe and a monthly transfer allowance. You choose shared vCPU plans (Regular, High Performance, High Frequency) or dedicated vCPU plans (Optimized Cloud Compute, VX1), and run your own software next to Vultr block storage, file systems, VPCs, Kubernetes, bare metal and GPUs. It is a server host, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine.
Which use cases each one fits
For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “51st cheapest of 364” means 50 of the other 363 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.
| Use case and its workload | Hetzner Cloud: price rank | Vultr: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Both give a full VM with root and Docker that you set up yourself; Hetzner says nested virtualization is not possible, and Vultr documents it only on VX1 and bare metal. bochka has /dev/kvm on every machine. | 46th of 367, with limits $287 a month | 114th of 367, with limits $1,060 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB | 94th of 366, with limits $325 a month | 144th of 366, with limits $1,000 a month | 5th cheapest of 366 $657 a month |
| Code interpreter bursts 100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month | 156th of 345, with limits $649 a month | 168th of 345, with limits $1,000 a month | 186th of 345, with limits $2,000 a month |
| Sandboxes for your users 300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month Neither Hetzner nor Vultr publishes its default server limit, so hundreds of user sandboxes need a support request first on both; bochka allows 100 to 2,000 sandboxes by plan. | 46th of 361, with limits $314 a month | 98th of 361, with limits $899 a month | Cheapest of 361 $209 a month |
| RL rollouts 1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month | 104th of 360, with limits $6,490 a month | 179th of 360, with limits $20,000 a month | 34th of 360, with limits $2,000 a month |
| Agent evals 250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month Both fit agent evals as full VMs, and they land close together in the table; Hetzner's CX line is out of stock today, so the servers you can order cost more. | 51st cheapest of 364 $1,010 a month | 47th cheapest of 364 $893 a month | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month Both bill a ten-minute job as a full started hour and leave the runner software to you; bochka bills per second and stops for free. | 83rd cheapest of 377 $788 a month | 91st cheapest of 377 $857 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB All three fit a 24/7 dev box: Hetzner and Vultr are classic always-on servers with a monthly cap, and bochka keeps the disk with snapshots every minute. | 32nd cheapest of 368 $42 a month | 28th cheapest of 368 $40 a month | 18th cheapest of 368 $26 a month |
| Computer-use agents 50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month Neither ships a desktop: on Hetzner and on Vultr you install the desktop, VNC and the control loop yourself, while bochka streams a 60fps desktop with computer use. | 134th of 369, with limits $320 a month | 252nd of 369, with limits $1,190 a month | 6th cheapest of 369 $200 a month |
| Browser-use agents 50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month Neither ships a browser stack, so you install and run Chromium yourself on both; bochka has Chromium and browser control in every sandbox. | 227th of 367, with limits $312 a month | 300th of 367, with limits $894 a month | 7th cheapest of 367 $200 a month |
| Scraping & bots (startup scale) 50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month | 157th of 346, with limits $62 a month | 175th of 346, with limits $89 a month | 6th cheapest of 346 $90 a month |
| Mass scraping & bots (undetectable) 1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month | 45th of 338, with limits $1,248 a month | 72nd of 338, with limits $1,818 a month | 71st of 338, with limits $1,800 a month |
| Parallel red teaming 200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month | 114th of 360, with limits $52 a month | 168th of 360, with limits $150 a month | 2nd cheapest of 360 $200 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month Only Vultr rents GPUs (Nvidia and AMD); Hetzner Cloud and bochka have none. | Can't run it | Can't run it | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month | Can't run it | Can't run it | Can't run it |
Key features
| Feature | Hetzner Cloud | Vultr | bochka |
|---|---|---|---|
| What you get | A general Linux VM you set up and run yourself | A general KVM server you set up and run yourself | A sandbox API for agents, on full VMs |
| Isolation | Every server is a full VM with its own kernel | Every instance is a KVM VM with its own kernel | Every sandbox is a full VM with its own kernel |
| CPU speed (Node.js build-and-test, 4 vCPU / 8 GB) | 8.88 runs/s on a shared CX33; CPX and CCX were not measured | No comparable measurement | 26.69 runs/s on dedicated AMD Ryzen 9 9950X (Zen 5) hosts |
| Docker and nested virtualization | Root and Docker; nested virtualization is "not possible on cloud server" | Root and Docker; virtualization documented for VX1 and bare metal, not other Cloud Compute plans | Docker, root, systemd and /dev/kvm on every machine |
| Billing unit | Every started hour, with a monthly cap | Every started hour, capped at 672 hours a month on most plans | Per second from plan credit |
| Stopping | A powered-off server bills at the full rate until you delete it | A stopped instance is billed in full until you destroy it | A stopped sandbox costs nothing and keeps its disk |
| Snapshots | Snapshots you take yourself, or daily backups in 7 slots for 20% of the server price | Manual disk snapshots that can take up to 30 minutes; paid scheduled backups | Automatic snapshots every minute and on stop |
| Fork | Snapshot, then create a new server from it (disk, no memory) | Snapshot, then deploy new instances from it (disk, no memory) | Fork a running sandbox in one call (disk, no memory) |
| Reaching the machine | Public IPv4 and IPv6 on any port; HTTPS needs your own certificates or a paid load balancer | Public IPv4 on any port; HTTPS needs your own domain, proxy and certificates | HTTPS URLs for up to 50 ports, token-protected; raw TCP; own IP |
| Outbound rules | Free Cloud Firewalls with inbound and outbound rules by IP, port and protocol | Vultr Firewall filters incoming traffic only; outbound rules go in the guest | Open internet on every plan; no provider-side allowlist |
| Desktop and coding agents | None built in; you install a desktop and agents yourself | Headless Linux; you install a desktop, VNC and agents yourself | 60fps desktop with Chromium and computer use; Claude Code, Codex, OpenCode and more preinstalled |
| Keeping keys out of the machine | No credentials proxy; secrets go on the server | No credentials proxy; secrets go on the server | AI credentials proxy for model providers and any HTTPS API you register |
| GPUs and Windows | No GPUs; no Windows | Nvidia and AMD GPUs; Windows Server for a license fee | No GPUs; Linux guests only, Wine for Windows apps |
| Regions | Germany and Finland, plus Ashburn, Hillsboro and Singapore | 33 locations on six continents | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Hetzner Cloud | Vultr | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Not published | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | No | Not published | Yes |
| Root | Yes | Yes | Yes |
| Systemd | Yes | Yes | Yes |
| Desktop GUI | No | No | Yes |
| Browser | No | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | Yes | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | No | Yes |
| Automatic snapshots | No | No | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | Yes | Not published | Yes |
| Memory fork | No | No | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | No | No | No |
| Wake on request | No | No | No |
| HTTPS preview URLs | No | No | Yes |
| Raw TCP inbound | Yes | Yes | Yes |
| Public IPv4 | Yes | Yes | No |
| Egress allowlist | Yes | No | No |
| Secret proxy | No | No | Yes |
| Secret proxy for any API | No | No | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | No | No | Yes |
| MCP server | No | Not published | No |
| GPU | No | Yes | No |
| Windows | No | Yes | No |
| Arm64 | Yes | No | No |
| Self-hosting | No | No | No |
| BYOC | No | No | No |
| Open source | No | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | No | Not published | Yes |
| Usage per sandbox (API) | No | No | Yes |
| Audit logs | Not published | Yes | No |
| SSO | No | Yes | No |
| SOC 2 | No | Not published | No |
| HIPAA | No | Not published | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
The only Hetzner number is 8.88 Node.js build-and-test runs per second on a shared CX33, measured through bochka's temporary fallback capacity, against 26.69 for bochka on its own hosts, about a third of bochka's speed. Vultr has no comparable measurement, so there is no fair speed ratio between Hetzner and Vultr. Hetzner's CPX and CCX servers were not measured either.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Hetzner Cloud measured on: Shared vCPU, Cost-Optimized (CX, Intel/AMD), EU. Vultr has no published run in this suite yet, so there is no like-for-like number to compare.
Pricing in five scenarios
Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.
| Scenario | Hetzner Cloud, a month | Vultr, a month | bochka, a month |
|---|---|---|---|
| One coding agent, workdays 4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days | $3 · Pay-as-you-go (postpaid) · with limits | $10 · Usage account | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $10 · Pay-as-you-go (postpaid) · with limits | $40 · Usage account | $26 · $20/mo |
| 50 agents in parallel 50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside | $141 · Pay-as-you-go (postpaid) · with limits | $524 · Usage account | $317 · $20/mo × 3 seats |
| Sandboxes for your users 2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once | $312 · Pay-as-you-go (postpaid) · with limits | $894 · Usage account | $200 · $100/mo × 2 seats |
| 1,000 short jobs at once 2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month | $2,080 · Pay-as-you-go (postpaid) · with limits | $5,960 · Usage account | $2,000 · $2000/mo · with limits |
Hetzner Cloud: Hetzner bills each server by the started hour with a monthly cap, and keeps billing until you delete it, even when it is off. The prices here use the shared CX line plus the public IPv4, and CX is currently out of stock, so the CPX and CCX servers you can order cost more.
Vultr: Vultr bills each plan by the started hour, capped at 672 hours a month on most plans (VX1 has no cap), from deploy to destroy, including while stopped. The prices here use the shared Regular plans; snapshots, backups and extra IPs cost extra.
Vultr: You pick a monthly plan from $20, and all of it becomes usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Every Hetzner scenario is priced on the CX line, which Hetzner's site marks as currently unavailable, so none fit as priced today. Vultr's Regular plans fit every scenario on price. Neither publishes how many servers a new account can run at once, so 50 agents, 300 user sandboxes or 1,000 jobs at once need a support request on both. On bochka the limit is a sandbox count (100 to 2,000 by plan) plus starts per minute, so the 1,000-job burst gets queued and needs more starts per day than the $2,000 plan allows.
| Scenario | Hetzner Cloud | Vultr | bochka |
|---|---|---|---|
| One coding agent, workdays |
| None that bite | None that bite |
| One agent that never stops |
| None that bite | None that bite |
| 50 agents in parallel |
| None that bite | None that bite |
| Sandboxes for your users |
| None that bite | None that bite |
| 1,000 short jobs at once |
| None that bite |
|
Which one should you use?
Use Hetzner Cloud when
you want the lowest list price for plain long-lived Linux servers, outbound firewall rules, or big dedicated machines, and the line you need is in stock.
- Lower list prices. Useful if cost per server matters most: Hetzner's CX prices come out well below Vultr's Regular plans in every scenario here, while in stock.
- Outbound firewall rules. Useful if an agent's machine must only reach a few addresses: free Cloud Firewalls can drop all other outbound traffic.
- Big dedicated machines. Useful for heavy single machines: dedicated CCX servers go up to 48 vCPU and 192 GB of memory.
Use Vultr when
you need GPUs, Windows, many regions around the world, or shared servers you can order right now.
- Regions around the world. Useful if your users are spread out: Vultr runs in 33 locations, from Sao Paulo and Johannesburg to Tokyo and Sydney.
- GPUs and Windows. Useful if agents serve models or need Windows: Vultr rents Nvidia and AMD GPUs and Windows Server instances.
- Servers you can order today. Useful if you need machines now: Vultr's shared Regular plans fit every scenario here, while Hetzner's CX line is out of stock.
Where bochka fits
Hetzner Cloud and Vultr are general clouds, so they win for GPUs, Windows, regions outside Europe or big long-lived servers. If what you are really running is agents, each on its own Linux machine, bochka gives every agent a full VM that is ready to work, with free stops, minute snapshots and agents built in.
Nested virtualization on every machine
Hetzner says VMs inside a cloud server are not possible, and Vultr documents it only on VX1 and bare metal. An agent that runs emulators or its own VMs needs /dev/kvm, which every bochka machine has.
Idle agents without paying for idle servers
Both Hetzner and Vultr bill a stopped server in full until you delete it, so you script snapshot, delete and recreate yourself. bochka stops for free, saves the disk every minute and forks a running sandbox in one call.
Agents, desktop and keys already handled
Both start as an empty OS image: you install each agent, a desktop and HTTPS, and put API keys where the agent can read them. bochka ships coding agents, a 60fps desktop, HTTPS on 50 ports and a credentials proxy.
Use bochka when what you are really running is agents: each on its own full VM with /dev/kvm, coding agents, a desktop, HTTPS ports and minute snapshots built in, fork while running, and stops that cost nothing. Compare it one to one: bochka vs Hetzner Cloud and bochka vs Vultr.
Questions people ask
Is Hetzner Cloud cheaper than Vultr?
On list price, yes. One agent that never stops comes to $10 a month on Hetzner's CX line against $40 on Vultr, and 50 agents in parallel come to $141 against $524. But the CX line is currently out of stock, so the Hetzner servers you can order today cost more. bochka comes to $26 and $317 for the same two scenarios.
Which is faster, Hetzner Cloud or Vultr?
There is no fair comparison. A shared Hetzner CX33 did 8.88 Node.js build-and-test runs per second, and Vultr was not measured in the same benchmark. bochka did 26.69 runs per second at 4 vCPU / 8 GB.
Can Hetzner Cloud or Vultr run Docker and nested VMs?
Docker works on both, since each server is a full VM with root. Hetzner says nested virtualization is not possible on cloud servers, and Vultr documents it only for VX1 and bare metal. On bochka, Docker, systemd and /dev/kvm are documented on every machine.
Do I pay for a stopped server on Hetzner or Vultr?
Yes, on both. Each keeps billing a stopped server until you delete or destroy it, so to stop paying you snapshot, delete and recreate it later. On bochka, a stopped sandbox costs nothing and keeps its disk.
Which has more regions?
Vultr, with 33 locations on six continents. Hetzner Cloud runs in Germany, Finland, Ashburn, Hillsboro and Singapore. bochka runs only in the EU, in Germany, Finland and France.
Can I block outbound traffic from an agent's machine?
On Hetzner, free Cloud Firewalls take outbound rules by IP, port and protocol. Vultr Firewall filters incoming traffic only, so outbound rules go inside the guest. bochka has open internet on every plan and no provider-side allowlist.
Try bochka
Install the CLI, then run bochka new.
Product preview
More comparisons
- bochka vs Hetzner Cloud
- bochka vs Vultr
- AWS EC2 vs Hetzner Cloud
- Google Compute Engine vs Hetzner Cloud
- Azure Virtual Machines vs Hetzner Cloud
- Oracle Cloud vs Hetzner Cloud
- DigitalOcean vs Hetzner Cloud
- Hetzner Cloud vs Linode
- Hetzner Cloud vs Scaleway
- Hetzner Cloud vs OVHcloud
- Hetzner Cloud vs IONOS Cloud
- Hetzner Cloud vs Contabo