AWS EC2 vs Vultr
AWS EC2 and Vultr both rent you a plain VM with its own kernel that you set up yourself. EC2 gives you the widest choice of chips, systems, regions and network controls with per-second billing, while Vultr keeps it simple: fixed hourly plans with a monthly cap and lots of free outbound traffic.
The companies and products
AWS EC2
AWS EC2 is Amazon's general-purpose cloud VM service, not a sandbox product: you rent virtual servers by the second and set them up yourself.
You pick an instance type (Intel, AMD, Graviton Arm, GPU or Mac), a machine image and a network, and EC2 boots a Nitro VM with its own kernel and root access. Disks are EBS volumes, inbound traffic goes through security groups, and anything agent-specific (agents, desktops, HTTPS URLs, key handling) is yours to build. It is built for every kind of server workload, from websites to GPU training, across AWS's worldwide regions.
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. “5th cheapest of 364” means 4 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 | AWS EC2: 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 can run a software factory, but on either one you build the agent setup, preview URLs and cloning yourself; bochka ranks 3rd because it ships them on every machine. | 87th of 367, with limits $775 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 | 114th of 366, with limits $646 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 Short bursts suit EC2's per-second billing better than Vultr's started hour, and bochka's start limits queue the biggest bursts. | 102nd of 345, with limits $165 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 A new EC2 account can run only 5 vCPUs per region and Vultr's limit is unpublished, so both need a quota raise for hundreds of user sandboxes; bochka ranks 1st here. | 70th of 361, with limits $607 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 AWS EC2 ranks 13th and Vultr ranks 179th for RL rollouts, since EC2 bills per second while Vultr bills every started hour; bochka's starts per day cap large bursts. | 13th of 360, with limits $830 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 All three fit agent evals: AWS EC2 ranks 5th, bochka ranks 10th and Vultr ranks 47th. | 5th cheapest of 364 $177 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 run Docker builds on a full VM where you run the runner software and clean up between jobs; EC2 ranks above Vultr, and bochka ranks 4th. | 21st cheapest of 377 $255 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 A 24/7 dev box is Vultr's home turf, with flat monthly plans, and it ranks above EC2; bochka ranks 18th and keeps its disk with snapshots every minute. | 59th cheapest of 368 $76 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 EC2 Linux images nor Vultr instances come with a desktop or computer-use API, so you install and stream one yourself; bochka streams a 60fps desktop out of the box. | 103rd of 369, with limits $195 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 | 165th of 367, with limits $101 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 | 195th of 346, with limits $116 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 | 82nd of 338, with limits $2,046 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 | 108th of 360, with limits $45 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 | 25th cheapest of 98 $1,723 a month | 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 | AWS EC2 | Vultr | bochka |
|---|---|---|---|
| What you get | A general cloud VM inside a hyperscaler; you install and wire everything else | A general KVM server in a smaller cloud; you install and wire everything else | An agent sandbox: a full VM with agents, desktop, HTTPS URLs and snapshots set up |
| Isolation | Every instance is a Nitro 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 | Intel, AMD and Graviton Arm instance families; no comparable measurement | Shared vCPU plans, or dedicated AMD EPYC vCPU on Optimized and VX1 plans; no Arm; no comparable measurement | Dedicated AMD Ryzen 9 9950X (Zen 5) hosts; 26.69 runs/s at 4 vCPU / 8 GB |
| Docker and nested virtualization | Docker, root and systemd on any instance; /dev/kvm only on C8i, M8i, R8i and metal instances | Docker and root on any instance; virtualization documented only for VX1 and bare metal | Docker, root, systemd and /dev/kvm on every machine |
| Billing and stopping | Per second, 60 second minimum; a stopped instance still bills its EBS disk and public IPv4 | By the started hour, capped at 672 hours a month on most plans; a stopped instance is billed in full until destroyed | Per second from your plan's credit; a stopped sandbox costs nothing and keeps its disk |
| Snapshots | EBS snapshots by hand or on a schedule with Data Lifecycle Manager | Manual disk snapshots that can take up to 30 minutes; paid scheduled backups | Automatic snapshots every minute and on stop |
| Copy and resume | Make an image and boot a new instance from it; hibernation resumes the same instance with its memory | Take a snapshot, then deploy new instances from it; no memory is kept | Fork a running sandbox in one call; resume reboots from disk (no memory snapshots) |
| Reaching the machine | Public IPv4 ($0.005 an hour) and any port through security groups; HTTPS needs your own domain, certificate and load balancer or web server | One public IPv4 included, any port open; HTTPS needs your own domain, proxy and certificates | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv6 or IPv4 |
| Outbound traffic | First 100 GB a month free, then $0.09 per GB | 2 TB free per account plus each instance's allowance, then $0.01 per GB | Open internet on every plan |
| Outbound network rules | Security group rules per instance; domain allowlists with AWS Network Firewall or DNS Firewall (paid) | Vultr Firewall filters incoming traffic only; outbound rules go in the guest | No provider-side allowlist |
| Coding agents and keys | None preinstalled; IAM role credentials and secrets are read from inside the instance | None preinstalled; you put secrets on the server yourself | Claude Code, Codex, OpenCode and more with a prompt, steer and events API; AI credentials proxy for any HTTPS API |
| Desktop and computer use | Linux images have no desktop; Windows instances have Remote Desktop; no computer-use API | Headless Linux; you install a desktop and VNC yourself | 60fps desktop and Chromium, computer use and browser control, embeddable stream |
| GPUs and operating systems | Nvidia GPUs from L4 up to H100 and H200; Linux, Windows, and macOS on Mac Dedicated Hosts | Nvidia L40S up to B200 and AMD MI300X to MI355X; Linux, and Windows for a license fee | No GPUs; Linux only, Wine for Windows apps |
| Regions | 39 regions and 124 availability zones worldwide | 33 locations on six continents | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | AWS EC2 | Vultr | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Not published | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | Yes | 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 | Yes | No | Yes |
| Fork/clone | No | Yes | Yes |
| Live fork (no pause) | No | 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 | Yes | Yes | No |
| Windows | Yes | 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 | Not published | Not published | Yes |
| Usage per sandbox (API) | Yes | No | Yes |
| Audit logs | Not published | Yes | No |
| SSO | Yes | Yes | No |
| SOC 2 | Yes | Not published | No |
| HIPAA | Yes | Not published | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
Neither AWS EC2 nor Vultr has a comparable measurement: neither was part of the public StarSling benchmark run we use. In that run, on 2026-09-29, bochka did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB. Speed on EC2 and Vultr depends on the instance family or plan you pick, and Vultr's cheapest plans use shared vCPUs.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. AWS EC2 and Vultr have 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 | AWS EC2, 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 | $21 · Pay-as-you-go (no platform fee) | $10 · Usage account | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $51 · Pay-as-you-go (no platform fee) · 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 | $944 · Pay-as-you-go (no platform fee) | $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 | $269 · Pay-as-you-go (no platform fee) | $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 | $502 · Pay-as-you-go (no platform fee) | $5,960 · Usage account | $2,000 · $2000/mo · with limits |
AWS EC2: EC2 bills each instance per second with a 60 second minimum, here the Graviton c7g sizes on demand with no platform fee. EBS disks and public IPv4 addresses bill on top, also while stopped, and lower rates need a 1-year or 3-year commitment.
Vultr: Each Vultr plan has a fixed hourly price billed by the started hour, capped at 672 hours a month on most plans, and the prices here use the shared vCPU Regular plans. A stopped instance is billed until destroyed, and 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
A new AWS account can run only 5 vCPUs of standard On-Demand instances per region, one 4 vCPU machine, and Vultr does not publish its default limit; both raise it on request, so 50 agents in parallel, 300 user sandboxes and 1,000 short jobs at once all need a quota raise first. On EC2, one agent that never stops reaches $51 a month only with a 3-year commitment. On Vultr, every started hour bills in full, which is why 1,000 three-minute jobs come to $5,960 a month. On bochka, that burst does not fit: the $2,000 plan allows 90 starts a minute, 600 an hour and 2,400 a day.
| Scenario | AWS EC2 | Vultr | bochka |
|---|---|---|---|
| One coding agent, workdays | None that bite | 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 | None that bite |
| Sandboxes for your users | None that bite | None that bite | None that bite |
| 1,000 short jobs at once | None that bite | None that bite |
|
Which one should you use?
Use AWS EC2 when
you need Arm, macOS, Nvidia GPUs, regions outside Europe, outbound domain rules or large bursts of short jobs billed per second.
- Short jobs and big fleets. Useful for many short runs: EC2 bills per second, so 1,000 three-minute jobs at once come to $502 a month against $5,960 on Vultr.
- The widest choice of machines. Useful if you need Arm, macOS or many regions: EC2 has Graviton, Mac hosts, Nvidia GPUs and 39 regions.
- Network rules and hibernation. Useful if you must limit where code connects or resume with memory intact: EC2 has domain allowlists and hibernation, Vultr has neither.
Use Vultr when
you want simple hourly plans with a monthly cap for servers that run all month, lots of free outbound traffic, or AMD GPUs.
- Lower prices for steady servers. Useful for a machine that runs all month: one always-on agent comes to $40 on Vultr, while EC2's $51 needs a 3-year commitment.
- Lots of free outbound traffic. Useful for agents that download or serve a lot: Vultr includes 2 TB a month plus each server's allowance, then $0.01 per GB.
- Simple plans and AMD GPUs. Useful if you want a fixed hourly price capped each month, or AMD MI300X to MI355X GPUs next to Nvidia ones.
Where bochka fits
EC2 and Vultr are general clouds, and bochka is not one: it has no GPUs, no Windows or macOS and runs only in the EU. If what you are really running is AI agents, bochka gives each one a full VM that is ready to work, so you skip building the agent platform on top of either cloud.
Agents, desktop and keys ready on every machine
On EC2 and Vultr you install, start and watch every agent yourself, add a desktop and VNC for computer use, and the API keys sit on the disk. bochka ships coding agents with an API, a 60fps desktop and a credentials proxy.
Free stops and a disk saved every minute
A stopped EC2 instance still bills its disk and IPv4, and a stopped Vultr instance bills in full until destroyed. Snapshots on both are manual or scheduled, and Vultr's can take up to 30 minutes. bochka saves every minute and stops for free.
Fork, HTTPS and /dev/kvm everywhere
Copying a machine on either cloud means an image and a fresh boot, /dev/kvm exists only on a few EC2 families and Vultr's VX1, and HTTPS needs your own domain and certificates. bochka forks a running sandbox and serves 50 HTTPS ports.
Use bochka when what you are running is AI agents and you want each one on a ready full VM: coding agents with an API, keys kept outside, a desktop, HTTPS ports, snapshots every minute, forks and free stops. Compare it one to one: bochka vs AWS EC2 and bochka vs Vultr.
Questions people ask
Is AWS EC2 cheaper than Vultr?
It depends on the workload. Vultr is cheaper for steady machines: one coding agent on workdays comes to $10 a month against $21 on EC2, and 50 agents in parallel to $524 against $944. EC2 is cheaper for short jobs, with sandboxes for your users at $269 against $894 and a 1,000-job burst at $502 against $5,960.
Which is faster, AWS EC2 or Vultr?
We have no comparable measurement for either one, so we cannot say. Both sell many CPU generations, and Vultr's cheapest plans use shared vCPUs. bochka did 26.69 runs per second at 4 vCPU / 8 GB in the public StarSling benchmark.
Can AWS EC2 and Vultr run Docker and nested VMs?
Both run Docker on any instance, since each one is a full VM with root. EC2 supports /dev/kvm only on C8i, M8i, R8i and metal instances, and Vultr documents virtualization only for VX1 and bare metal. On bochka, Docker, systemd and /dev/kvm are on every machine.
Do I pay for a stopped instance?
On EC2 the compute stops billing, but the EBS disk and public IPv4 keep billing. On Vultr a stopped instance is billed in full until you destroy it. On bochka a stopped sandbox costs nothing and keeps its disk.
Which has more regions, AWS EC2 or Vultr?
EC2 runs in 39 regions with 124 availability zones, and Vultr in 33 locations on six continents. Both have several in Europe. bochka runs only in the EU, in Germany, Finland and France, with EU data residency.
Do AWS EC2 or Vultr have GPUs and Windows?
Both do. EC2 rents Nvidia GPUs up to H100 and H200 and also offers macOS on Mac Dedicated Hosts, while Vultr rents Nvidia and AMD GPUs and Windows Server for a license fee. bochka has no GPUs and runs only Linux.
Try bochka
Install the CLI, then run bochka new.
Product preview