Azure Virtual Machines vs Vultr
Azure Virtual Machines is a hyperscaler: hundreds of sizes, per-minute billing, hibernation, Spot and outbound domain rules, with many pieces to set up. Vultr rents simpler KVM servers at a flat hourly price with a large bandwidth allowance, but a stopped server keeps billing until you destroy it.
The companies and products
Azure Virtual Machines
Azure Virtual Machines is Microsoft's general-purpose cloud VM service: you rent Linux or Windows machines by the minute in Azure regions worldwide.
It is a hyperscaler IaaS product, not a sandbox API. Each VM runs on Microsoft's Hyper-V hypervisor with its own kernel, root and SSH, and you pick from hundreds of sizes, including Arm, burstable and GPU families. Networking, disks, images, firewalls and any agent tooling are separate pieces you set up yourself, so it suits teams that already run on Azure and want full control.
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. “3rd cheapest of 364” means 2 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 | Azure Virtual Machines: 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 you a full VM with root and Docker but nothing for agents on top; bochka ships agents, forks, HTTPS URLs and snapshots on every machine. | 83rd of 367, with limits $730 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 | 113th of 366, with limits $644 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 | 114th of 345, with limits $222 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 Azure's short per-minute billing suits 10-minute user sessions far better than Vultr's started-hour billing; bochka adds the sandbox layer you would build on either. | 63rd of 361, with limits $500 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 Azure fits RL fleets much better than Vultr, mainly through Spot VMs, as long as rollouts can survive eviction with 30 seconds of notice. | 19th of 360, with limits $1,039 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 Azure ranks 3rd here, because per-minute billing and its size range suit scripted eval batches; bochka is close behind and Vultr trails. | 3rd cheapest of 364 $173 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 | 35th cheapest of 377 $335 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 Vultr beats Azure for a 24/7 dev box, since its monthly price is capped and needs no commitment; bochka keeps the disk with snapshots every minute. | 72nd cheapest of 368 $94 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 has a desktop stream or computer-use API, so you install a desktop and VNC yourself; bochka streams a 60fps desktop with Chromium. | 100th of 369, with limits $192 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 On both you install and expose the browser yourself; bochka ships Chromium with browser control on each machine. | 168th of 367, with limits $107 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 | 194th 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 | 81st of 338, with limits $2,044 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 | 110th of 360, with limits $46 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 Both rent GPUs and bochka has none, so GPU work belongs on Azure or Vultr. | 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 | Azure Virtual Machines | Vultr | bochka |
|---|---|---|---|
| What you get | A general cloud VM; images, networking and tooling are yours to set up | A general KVM server you set up and run yourself | An agent sandbox: a full VM per sandbox, created and driven by API |
| Isolation | Full Hyper-V VM with its own kernel | KVM VM with its own kernel | Full VM with its own kernel |
| Billing unit | Per full minute while running | Per started hour, capped at 672 hours a month on most plans | Per second from a monthly plan's credit |
| Stopping | A deallocated VM stops compute billing; disks and static IPs keep billing | A stopped instance is billed in full until you destroy it | A stopped sandbox costs nothing and keeps its disk |
| Docker and nested virtualization | Root and Docker; nested virtualization on Intel and AMD D and F sizes, not on Arm or B-series | Root and Docker; virtualization documented for VX1 and bare metal only | Docker, root, systemd and /dev/kvm on every machine |
| Snapshots and pause | Manual disk snapshots; hibernation saves memory on supported sizes up to 64 GB of RAM | Manual disk snapshots that can take up to 30 minutes; paid scheduled backups | Automatic snapshots every minute and on stop; no memory snapshots |
| Fork and clone | Capture an image or snapshot, then boot new VMs cold; image capture needs the VM stopped | Take a snapshot, then deploy new instances from it | Fork a running sandbox in one call |
| Reaching the machine | Public IPv4 and any port via security groups; HTTPS is yours to run or add a gateway | 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 | Security group rules, and domain allowlists with the paid Azure Firewall | Vultr Firewall filters incoming traffic only; outbound rules go in the guest | Open internet on every plan; no provider-side allowlist |
| Bandwidth | First 100 GB a month free, then $0.087 per GB | 2 TB free per account plus each instance's allowance, then $0.01 per GB | Open internet on every plan |
| Desktop and computer use | None built in; you install VNC or RDP yourself | Headless Linux; you install a desktop and VNC yourself | 60fps desktop and Chromium, computer use and browser control, embeddable stream |
| Coding agents and keys | None built in; Key Vault fetches secrets into the VM | None; you install agents and put secrets on the server yourself | Claude Code, Codex, OpenCode preinstalled with a prompt, steer and events API; AI credentials proxy for any HTTPS API |
| GPUs, Windows and Arm | GPU families such as NC with H100 and A100; Windows; Arm Cobalt 100 and Ampere Altra | Nvidia and AMD GPUs; Windows Server for a license fee | No GPUs; Linux on dedicated AMD Ryzen 9 9950X hosts, Wine for Windows apps |
| Regions | 77 regions worldwide, available or coming soon | 33 locations on six continents | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Azure Virtual Machines | 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 | No | No | Yes |
| Fork/clone | Yes | 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 | Yes | 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 | No | Not published | Yes |
| Usage per sandbox (API) | Yes | No | Yes |
| Audit logs | Yes | 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
There is no comparable measurement for Azure Virtual Machines or Vultr: neither was part of the public StarSling benchmark run. bochka did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB on dedicated AMD Ryzen 9 9950X hosts in that run of 2026-09-29. Both Azure and Vultr sell many CPU families, so their speed depends on the plan you pick.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Azure Virtual Machines 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 | Azure Virtual Machines, 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 | $26 · Pay-as-you-go subscription (no plan fee) | $10 · Usage account | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $48 · Pay-as-you-go subscription (no plan 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 | $1,168 · Pay-as-you-go subscription (no plan 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 | $225 · Pay-as-you-go subscription (no plan 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 | $483 · Pay-as-you-go subscription (no plan fee) · with limits | $5,960 · Usage account | $2,000 · $2000/mo · with limits |
Azure Virtual Machines: Azure bills each VM per full minute while it runs, with no plan fee; disks, public IPv4 and egress are extra, and disks keep billing while a VM is deallocated. The cheapest always-on price needs a 3-year reservation billed whether the VM runs or not.
Vultr: Each Vultr plan has a fixed hourly price billed by the started hour, capped at 672 hours a month on most plans, and billing runs from deploy to destroy, even while stopped. The prices here use the shared vCPU Regular plans.
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
Azure limits vCPUs per region and per VM family, stopped VMs still count, and new subscriptions start low until you request more. Vultr does not publish its default instance limit, so 50 agents or 300 user sandboxes likely need a support ticket first. Azure's always-on price only works with a 3-year commitment, and its low figure for 1,000 short jobs uses burstable VMs that guarantee 30% of each vCPU. On bochka the same burst is held back by starts per minute and per day, even on the $2,000 plan.
| Scenario | Azure Virtual Machines | 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 |
|
Which one should you use?
Use Azure Virtual Machines when
you need per-minute billing, Spot or hibernation, Arm sizes, outbound domain rules, or your company already runs inside Azure.
- Short, bursty work. Useful if machines run for minutes at a time: Azure bills per minute, while Vultr bills every started hour.
- Spot, hibernation and reservations. Useful for big batches that survive eviction, machines that must resume with memory, or a server you commit to for years.
- Arm, more regions and outbound rules. Useful if you need Arm sizes, one of 77 regions, or outbound HTTPS limited to a list of domains.
Use Vultr when
you want a simple server at a fixed monthly price, lots of included bandwidth, or GPUs and Windows without a hyperscaler's setup.
- A simple, capped monthly price. Useful for a server that runs all month: each plan has a fixed price, capped at 672 hours, with no commitment.
- Cheap bandwidth. Useful if agents move lots of data: Vultr includes 2 TB a month per account plus each server's allowance, then $0.01 per GB.
- Fewer pieces to set up. Useful if you just want a server with a public IPv4 and a local disk, without wiring networks and disks together first.
Where bochka fits
Azure and Vultr are both clouds that rent plain servers, and neither is built for agents. If what you are really running is agents that write code, test it and share results, bochka gives each one a full VM with the agent tooling already in place. Keep Azure or Vultr for GPUs, Windows or regions outside the EU.
Stop and keep every file
Agents sit idle between tasks. A stopped Vultr server bills in full until destroyed, and a deallocated Azure VM still bills its disks and counts against quota. A stopped bochka sandbox costs nothing and keeps a disk saved every minute.
Fork a live machine
To try five fixes at once you need five copies of one machine. On Azure you stop it, capture an image and boot cold; on Vultr a snapshot can take 30 minutes. bochka forks a running sandbox in one call.
Agents, desktop and HTTPS built in
Both start empty, so you install agents, a desktop with VNC, TLS for preview links and a place for keys. bochka ships coding agents you drive from outside, a 60fps desktop, HTTPS on 50 ports and a credentials proxy.
Use bochka when your servers are really for agents: full VMs with Docker and /dev/kvm, forks of running sandboxes, free stops, a desktop, HTTPS URLs and coding agents you drive from outside. Compare it one to one: bochka vs Azure Virtual Machines and bochka vs Vultr.
Questions people ask
Is Azure Virtual Machines cheaper than Vultr?
It depends on the job. One coding agent on workdays is $10 a month on Vultr against $26 on Azure, and 50 agents in parallel are $524 on Vultr against $1,168 on Azure. For sandboxes for your users, Azure's per-minute billing wins: $225 on Azure against $894 on Vultr, and $200 on bochka.
Which is faster, Azure or Vultr?
We have no comparable measurement for either: neither was in the public StarSling benchmark. Both sell many CPU families, so speed depends on the plan. bochka did 26.69 runs per second at 4 vCPU / 8 GB in that benchmark.
Can Azure VMs and Vultr servers run Docker?
Yes, both are full VMs with root, so Docker works. Nested virtualization is documented on Azure's Intel and AMD D and F sizes, and on Vultr only for VX1 and bare metal. On bochka, Docker, systemd and /dev/kvm are on every machine.
Do I pay for a stopped server on Azure or Vultr?
On Vultr, yes: a stopped instance bills in full until you destroy it. On Azure, a VM you deallocate stops compute billing, but disks and static IPs still bill, and a VM shut down from inside the OS keeps billing. A stopped bochka sandbox costs nothing.
Which has more regions?
Azure lists 77 regions, available or coming soon, and Vultr has 33 locations on six continents. Both have regions in Europe. bochka runs only in the EU, in Germany, Finland and France.
Can I copy a running server on Azure or Vultr?
Not live. On Azure you capture an image or disk snapshot and boot new VMs cold, and image capture needs the VM stopped. On Vultr you take a snapshot, which can take up to 30 minutes, then deploy from it. bochka forks a running sandbox in one call.
Try bochka
Install the CLI, then run bochka new.
Product preview
More comparisons
- bochka vs Azure Virtual Machines
- bochka vs Vultr
- AWS EC2 vs Azure Virtual Machines
- Google Compute Engine vs Azure Virtual Machines
- Azure Virtual Machines vs Oracle Cloud
- Azure Virtual Machines vs DigitalOcean
- Azure Virtual Machines vs Hetzner Cloud
- Azure Virtual Machines vs Linode
- Azure Virtual Machines vs Scaleway
- Azure Virtual Machines vs OVHcloud
- Azure Virtual Machines vs IONOS Cloud
- Azure Virtual Machines vs Contabo