Fly.io Machines vs Unikraft Cloud
Both run your Docker image as a Firecracker microVM. Fly.io Machines are the building block of an app platform in 17 regions, billed per second, while Unikraft Cloud turns a Dockerfile into a tiny microVM that wakes in milliseconds and sleeps when traffic stops, sold as flat pools of running capacity.
The companies and products
Fly.io Machines
Fly.io is an app hosting platform, and Machines are the microVMs underneath it that you can also start and stop through a REST API.
A Fly Machine boots your Docker image as a Firecracker microVM on Fly's own servers, in one of 17 regions. You pick a shared or performance CPU preset, attach at most one Volume for data that must last, and Fly Proxy can stop, suspend and wake Machines as traffic comes and goes. It is built for teams that host web apps and services worldwide; it is not a sandbox product, so this page compares the parts that overlap with agent work.
Unikraft Cloud
Unikraft Cloud is a microVM cloud from Unikraft Inc. that runs any Dockerfile-based workload as a minimal Linux microVM with millisecond cold starts and scale-to-zero.
Your Dockerfile becomes the VM image at build time, and each instance runs on a heavily customized Firecracker VMM, so it boots in milliseconds and can go into standby when no traffic arrives. It is a general compute platform built for dense, bursty work such as HTTP services, headless browsers and agent fleets, sold as flat self-serve plans plus Enterprise dedicated hosts, on-prem and bring your own cloud. It is not a dev machine you log into: instances are reached through services, the CLI and a sandbox plugin for commands and files.
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. “92nd cheapest of 367” means 91 of the other 366 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 | Fly.io Machines: price rank | Unikraft Cloud: price rank | boat: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month A software factory runs Docker and test suites inside the sandbox; Fly lets you install Docker yourself, while Unikraft documents no container runtime inside an instance. | 92nd of 367, with limits $836 a month | Can't run it | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB | 125th of 366, with limits $816 a month | Can't run it | 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 code runs suit both: Fly bills per second with no plan fee, and Unikraft sleeps instances between calls, though its self-serve plans stop at 24 running instances. | 75th of 345, with limits $94 a month | Can't run it | 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 Fly can host one VM per user but creates about one Machine per second per app; Unikraft Pro runs only 24 instances at once, so hundreds of users need Enterprise. | 69th of 361, with limits $600 a month | Can't run it | 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 | 48th of 360, with limits $2,838 a month | Can't run it | 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 | 117th of 364, with limits $457 a month | Can't run it | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month CI keeps the CPU busy, which drains a shared Fly vCPU's burst balance, and Unikraft's 8 vCPU Team pool is shared by every running job. | 152nd of 377, with limits $288 a month | Can't run it | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB All three can keep one box around all month: about $53 a month on Fly with a 1-year reservation, $39 for Unikraft's Team pool, and $26 on boat, which keeps the whole disk. | 118th of 368, with limits $53 a month | 219th of 368, with limits $39 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 Fly nor Unikraft ships a desktop, so you build and stream one yourself; boat gives each machine a 60fps desktop with Chromium and computer use. | 95th of 369, with limits $173 a month | Can't run it | 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 | 160th of 367, with limits $90 a month | Can't run it | 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 | 161st of 346, with limits $67 a month | Can't run it | 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 Fly ranks well here because it can spread scrapers over 17 regions and bill only the seconds they run; Unikraft's self-serve pools are too small for this scale. | 44th of 338, with limits $1,232 a month | Can't run it | 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 | 118th of 360, with limits $63 a month | Can't run it | 2nd cheapest of 360 $200 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month | 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 | Fly.io Machines | Unikraft Cloud | boat |
|---|---|---|---|
| Running capacity | Billed per Machine, no plan pool; the API creates about one Machine per second per app | Plan pool shared by all running instances: 2 vCPU / 4 GiB, 8 vCPU / 8 GiB or 24 vCPU / 32 GiB | 100 to 2,000 sandboxes at once on paid plans, up to 16 vCPU / 32 GB each |
| CPU | Shared vCPUs guarantee 6.25% of a core plus bursts; performance vCPUs get the full core at a higher rate | vCPUs come from the plan pool; no CPU class published | One CPU class on every plan, with no baseline quota or burst balance |
| Docker, systemd and root | Root and Docker you install yourself; Fly's own init, no systemd | Runs as root; the Dockerfile becomes the VM image, with no container runtime inside documented | Docker, systemd and root ready, like any Ubuntu machine |
| Nested virtualization | /dev/kvm not offered | Yes, with a per-instance flag and permission, Enterprise only | /dev/kvm for Android emulators and VMs on every plan |
| SSH | Yes | Not yet; commands and files go through the sandbox plugin and CLI | Yes, into every sandbox |
| Files after a stop | Root file system is ephemeral; one Volume per Machine, billed for its full size around the clock | Standby keeps the instance, with standby storage capped by plan (8 GiB, 15 GiB or 1 TiB) | The whole disk is kept, with snapshots every minute and on stop; a stopped sandbox costs nothing |
| Idle and wake on request | Fly Proxy stops or suspends idle Machines and wakes them on a request; memory kept only up to 2GB | Standby after a 1 second idle cooldown by default, wakes in milliseconds, stateful mode keeps memory | No wake on request; you start a stopped sandbox through the API and it boots from disk |
| Fork and checkpoints | Clone copies a Machine's config; a cloned Volume starts empty | Checkpoint memory and volumes of a running microVM, then start new instances from it | Fork a running sandbox with its disk; snapshots every minute |
| Desktop and computer use | None built in; you add a desktop and browser to your own image | None built in; you can run your own headless browser from a Dockerfile | 60fps desktop with Chromium, computer use and browser control |
| Coding agents | None built in; you install and run agents yourself | None preinstalled; you bring the agent in your own image | Claude Code, Codex and more preinstalled, with a prompt, steer and events API |
| Keeping API keys out of the sandbox | Secrets arrive as environment variables; Fly's open-source tokenizer proxy can be deployed yourself | Network shield can inject secrets into traffic, Enterprise only, limited access | AI credentials proxy for model providers and any HTTPS API on every plan |
| Inbound access | HTTPS and TCP through Fly Proxy, Anycast IPs, custom domains, private network | Load balancer services: HTTP on 80, HTTPS on 443, TLS-wrapped TCP on other ports; no public IP per instance | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv4 or IPv6 |
| Outbound rules | Network policies allow chosen ports and protocols and deny the rest | Network shield filters traffic, Enterprise only, limited access | Open internet, no provider-side allowlist |
| Regions | 17 regions on six continents | Dallas, Frankfurt, San Francisco, Singapore and Washington DC, more on request | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Fly.io Machines | Unikraft Cloud | boat |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | No | Yes |
| Nested virtualization | No | Yes | Yes |
| Root | Yes | Yes | Yes |
| Systemd | No | Not published | Yes |
| Desktop GUI | No | No | Yes |
| Browser | No | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | No | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | Yes | Yes |
| Automatic snapshots | Yes | Yes | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | Yes | Yes | Yes |
| Memory fork | No | Yes | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | Yes | Yes | No |
| Wake on request | Yes | Yes | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | Yes | Not published | Yes |
| Public IPv4 | Yes | No | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | No | Yes | Yes |
| Secret proxy for any API | No | Yes | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | No | No | Yes |
| MCP server | Yes | No | No |
| GPU | No | Yes | No |
| Windows | No | No | No |
| Arm64 | No | Yes | No |
| Self-hosting | No | Yes | No |
| BYOC | No | Yes | No |
| Open source | Yes | 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 | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Yes | Yes | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
There is no comparable CPU measurement for either: Fly.io Machines and Unikraft Cloud were not in the public StarSling run where boat did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB. Unikraft states cold starts under 10 ms, which measures start time, not CPU speed, and Fly results would depend on whether you pick shared or performance vCPUs.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Fly.io Machines and Unikraft Cloud 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 | Fly.io Machines, a month | Unikraft Cloud, a month | boat, 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 | $15 · Pay As You Go · with limits | $39 · Hobby | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $36 · Pay As You Go · with limits | $39 · Hobby | $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 | $487 · Pay As You Go · with limits | Can't run it | $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 | $110 · Pay As You Go · with limits | Can't run it | $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 | $232 · Pay As You Go · with limits | Can't run it | $2,000 · $2000/mo · with limits |
Fly.io Machines: Fly bills each Machine per second while it runs, by CPU preset and memory, with no plan fee; stopped Machines pay for their root file system and Volumes bill for their full size all month. The table uses shared vCPUs on a 1-year reservation for 40% off.
Unikraft Cloud: Unikraft charges a flat monthly fee for a pool of running capacity: free for 2 vCPU / 4 GiB, $39 for 8 vCPU / 8 GiB, $199 for 24 vCPU / 32 GiB, with sleeping instances not counted. It publishes no per-hour or egress rate, so anything bigger is an Enterprise quote.
Unikraft Cloud: Plans start at $20 a month, and the whole fee is usage credit spent per second while sandboxes run. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Fly is marked a compromise in every scenario because its lowest figures need a 1-year commitment and use shared vCPUs that guarantee only 6.25% of each core, so long builds get throttled. Unikraft fits only the one-agent scenarios, where a single 4 vCPU / 8 GB agent fills the $39 Team pool; 50 agents, user sandboxes and 1,000 short jobs exceed every self-serve pool. boat fits all but the burst, where starts per minute and per day queue jobs even on the $2,000 plan.
| Scenario | Fly.io Machines | Unikraft Cloud | boat |
|---|---|---|---|
| One coding agent, workdays |
|
| None that bite |
| One agent that never stops |
|
| None that bite |
| 50 agents in parallel |
|
| None that bite |
| Sandboxes for your users |
|
| None that bite |
| 1,000 short jobs at once |
|
|
|
Which one should you use?
Use Fly.io Machines when
you host web apps or services that must run near users in many regions, scale past a few machines on per-second billing, and need network policies and private networking.
- 17 regions worldwide. For apps near users everywhere: Fly runs Machines in 17 regions, from the US to Sydney and Johannesburg.
- Per-second billing with no pool. For teams that grow past a few machines: Fly bills each Machine per second with no plan fee or shared capacity cap.
- A full app platform. For hosting whole products: network policies, private networking, Anycast IPs and custom domains come on self-serve.
Use Unikraft Cloud when
you run many small services or headless browsers that sleep most of the time and must wake in milliseconds, or want GPUs, on-prem or your own cloud under Enterprise.
- Millisecond starts and scale-to-zero. For many small services that sleep most of the time: instances go to standby after a second and wake in milliseconds.
- Memory checkpoints. For fast copies of warm state: checkpoint a running microVM's memory and volumes, then start new instances from it.
- GPUs, arm64 and your own hardware. For Enterprise buyers: NVIDIA GPUs, arm64 hosts, dedicated hosts, on-prem or your own cloud.
Where boat fits
Fly.io Machines and Unikraft Cloud are both built to host services that sleep and wake, and both leave you to build an agent's machine inside your own image. If what you are really running is coding or computer-use agents that work for hours, boat gives each one a full VM with its disk kept, a desktop, agents and a keys proxy ready on every plan.
A whole machine to work in
Agents run docker compose, systemd services and emulators. Fly has no systemd or /dev/kvm, and Unikraft documents no container runtime inside and keeps nested virtualization for Enterprise, so you bake tools into the image instead.
Desktop, agents and keys built in
Neither ships a desktop or coding agents. Keeping keys out means running your own tokenizer app on Fly, or Unikraft's network shield, which is Enterprise only. On boat the credentials proxy and preinstalled agents come on every plan.
Full-size fleets with steady CPU
Fifty 4 vCPU / 8 GB agents need 200 vCPU at once. Unikraft's biggest self-serve pool is 24 vCPU, and Fly's lowest rates use shared vCPUs that throttle long builds above a 6.25% baseline.
Use boat when your agents need a real machine for hours: Docker, systemd, /dev/kvm, a desktop and browser, coding agents you drive from outside, a keys proxy, and a disk that survives every stop. Compare it one to one: boat vs Fly.io Machines and boat vs Unikraft Cloud.
Questions people ask
Is Fly.io Machines cheaper than Unikraft Cloud?
For one agent, Fly is lower using its 1-year shared vCPU rate: $15 a month on workdays and $36 running all month, against $39 for Unikraft's Team pool either way. boat is $20 and $26. For 50 agents Fly is $487 and boat $317, while no self-serve Unikraft plan is big enough.
Which is faster, Fly.io Machines or Unikraft Cloud?
Unikraft starts faster: its microVMs cold boot in milliseconds by its own figure and wake on the next request. Neither has a public CPU benchmark to compare. boat measured 26.69 runs per second on a Node.js build-and-test benchmark at 4 vCPU / 8 GB.
Can I run Docker inside Fly.io Machines or Unikraft Cloud?
On Fly you can install and run Docker yourself, since a Machine is a microVM with root, but there is no /dev/kvm. Unikraft builds your Dockerfile into the VM image and does not document a container runtime inside a running instance. boat has Docker, systemd and /dev/kvm ready on every machine.
Do they keep my files when they stop?
A Fly Machine's root file system is ephemeral, so lasting data goes on its one Volume. Unikraft instances go into standby with storage capped by plan, such as 15 GiB on Team. boat keeps the whole disk, with snapshots every minute and on stop.
Can I SSH into them?
You can SSH into a Fly Machine. Unikraft has no SSH yet, so commands and files go through its sandbox plugin and CLI. Every boat sandbox takes SSH or its API.
Where do they run?
Fly runs in 17 regions on six continents. Unikraft runs in Dallas, Frankfurt, San Francisco, Singapore and Washington DC, with more on request. boat runs only in the EU, in Germany, Finland and France.
Try boat
Install the CLI, then run boat new.
7-day free trial
More comparisons
- boat vs Fly.io Machines
- boat vs Unikraft Cloud
- E2B vs Fly.io Machines
- Daytona vs Fly.io Machines
- Modal vs Fly.io Machines
- Vercel Sandbox vs Fly.io Machines
- Cloudflare Sandbox vs Fly.io Machines
- Blaxel vs Fly.io Machines
- Runloop vs Fly.io Machines
- Tensorlake vs Fly.io Machines
- Morph Cloud vs Fly.io Machines
- CodeSandbox SDK vs Fly.io Machines