Fly.io Machines vs Azure Container Apps Sandboxes
Fly.io Machines are the microVMs under an app hosting platform: you boot your own image and keep data on one Volume. Azure Container Apps Sandboxes are built for agent code inside an Azure account, with sandboxes that suspend with their memory and wake on traffic.
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.
Azure Container Apps Sandboxes
Azure Container Apps Sandboxes is a service inside Microsoft Azure that gives each agent or user an isolated microVM you create, suspend and resume through an SDK.
It is part of Azure Container Apps, the hyperscaler's serverless container platform, and lives in your Azure subscription as a sandbox group resource. Each sandbox boots from an OCI image or a snapshot, has its own kernel, and can be suspended with its memory and resumed in under a second. It is built for teams already on Azure that want stateful code execution with Azure networking, identity and billing.
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 | Azure Container Apps Sandboxes: price rank | boat: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Neither fits fully: Fly has no systemd or /dev/kvm and resets its root disk, Azure has no SSH or nested virtualization, while boat ships all of it on every machine. | 92nd of 367, with limits $836 a month | 288th of 367, with limits $5,276 a month | 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 | 302nd of 366, with limits $6,544 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 Azure fits short code runs well, with sandboxes that suspend with their memory and resume in under a second; Fly can do it on cheap shared CPU, but you build the sandbox yourself. | 75th of 345, with limits $94 a month | 34th cheapest of 345 $354 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 fits one sandbox per user out of the box, while Fly's API creates about one Machine per second per app, so sign-up waves need pre-created Machines. | 69th of 361, with limits $600 a month | 22nd cheapest of 361 $2,260 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 | 48th of 360, with limits $2,838 a month | 153rd of 360, with limits $10,740 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 | 117th of 364, with limits $457 a month | 75th cheapest of 364 $1,728 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 CI keeps the CPU busy, which drains a shared Fly vCPU's burst balance; Azure fits, and boat adds /dev/kvm for Android and VM builds. | 152nd of 377, with limits $288 a month | 103rd cheapest of 377 $1,046 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB A dev box wants SSH and a disk that lasts; Azure gives a shell through its own CLI, Fly keeps only the Volume, and boat keeps the whole disk with SSH. | 118th of 368, with limits $53 a month | 322nd of 368, with limits $262 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 Both Fly and Azure are headless, so a computer-use agent needs a desktop you build yourself; boat streams one at 60fps. | 95th of 369, with limits $173 a month | 279th of 369, with limits $1,573 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 Fly and Azure you package a browser into your own image; boat has Chromium and browser control ready in every machine. | 160th of 367, with limits $90 a month | 288th of 367, with limits $795 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 | 161st of 346, with limits $67 a month | 284th of 346, with limits $561 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 Fly ranks well above Azure here, since scrapers can run on cheap shared CPU across 17 regions and pay only for the seconds they run. | 44th of 338, with limits $1,232 a month | 239th of 338, with limits $10,956 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 | 118th of 360, with limits $63 a month | 278th of 360, with limits $517 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 | 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 | Azure Container Apps Sandboxes | boat |
|---|---|---|---|
| Kind of product | App hosting platform; you boot your own image as a microVM through a REST API | A sandbox compute type inside Azure Container Apps, driven through an SDK | Agent sandbox: a full VM per agent, ready to use |
| Isolation | Firecracker microVM with its own kernel | MicroVM per sandbox with its own kernel | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Docker and systemd | Root and Docker you install yourself; Fly's own init, no systemd | Depends on the image: azure-dev ships Docker on systemd; the default ubuntu image has only Buildah | Docker, systemd and root on every machine |
| Nested virtualization | /dev/kvm not offered | Not documented | Yes, /dev/kvm for Android emulators and VMs |
| Files after a stop | Root file system is ephemeral; lasting data goes on one Volume, billed for its full size around the clock | Disk kept when it suspends; stopped sandboxes pay no CPU or memory | Whole disk kept, with snapshots every minute and on stop; a stopped sandbox costs nothing |
| Sleep and wake | Fly Proxy stops or suspends idle Machines and wakes them on a request; memory kept only up to 2GB | Auto-suspend with memory after an idle timeout; traffic or a start command resumes it in under a second | Auto-stop timer you set; start by API, which boots from disk (no memory snapshots) |
| Fork | Clone copies a Machine's config; a cloned Volume starts empty | Snapshot a running sandbox with its memory and create new sandboxes from it | Fork a running sandbox with its disk |
| Reaching the sandbox | Public HTTPS and TCP through Fly Proxy, Anycast IPs, custom domains, private network | Public HTTPS routes per published port; no SSH and no public IP | SSH, HTTPS URLs for up to 50 ports, raw TCP, dedicated IPv4 or IPv6 |
| Desktop and computer use | None built in; you add a desktop and browser to your own image | Headless; no desktop or managed browser | 60fps Linux desktop, Chromium, computer use and browser control preinstalled |
| Coding agents | None built in; you install and run agents yourself | Copilot CLI and Claude Code images, run through the exec API | Seven agents preinstalled, with a prompt, steer and events API |
| Keeping keys out of the sandbox | Secrets arrive as environment variables; the open-source tokenizer proxy is yours to deploy | Group secrets usable in egress header rules; Copilot and Anthropic tokens are injected into the sandbox at start | AI credentials proxy for model providers and any HTTPS API; switch a credential to another account when credits run out |
| Outbound rules | Network policies allow chosen ports and protocols and deny the rest | Egress policy with allow, deny, rewrite and header rules by host, path and method; VNet integration | Open internet; no provider-side allowlist |
| CPU and sizes | Shared vCPUs guarantee 6.25% of a core plus bursts; performance vCPUs get the full core at a higher rate | Tiers from 0.25 cores / 0.5 GB to 4 cores / 8 GB; up to 16 vCPU / 32 GB by API | One CPU class on every plan, with no baseline quota or burst balance |
| Regions | 17 regions on six continents | 40 Azure regions, 9 of them in the EU | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Fly.io Machines | Azure Container Apps Sandboxes | boat |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | No | No | Yes |
| Root | Yes | Yes | Yes |
| Systemd | No | Yes | 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 | No | 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 | Yes | Yes |
| Agent harness API | No | No | Yes |
| MCP server | Yes | No | No |
| GPU | No | No | No |
| Windows | No | No | No |
| Arm64 | No | No | No |
| Self-hosting | No | No | No |
| BYOC | No | No | No |
| Open source | Yes | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | No | Yes | Yes |
| Usage per sandbox (API) | No | Yes | Yes |
| Audit logs | Not published | Yes | No |
| SSO | No | Yes | 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 measurement for either one: neither Fly.io Machines nor Azure Container Apps Sandboxes were part of the public StarSling run where boat did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB. On Fly the result would depend on the CPU class, since shared vCPUs guarantee only 6.25% of a core. Until both are measured on the same test, this page makes no speed claim.
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 Azure Container Apps Sandboxes 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 | Azure Container Apps Sandboxes, 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 | $68 · Pay-as-you-go | $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 | $262 · Pay-as-you-go · with limits | $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 | $3,421 · Pay-as-you-go | $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 | $989 · Pay-as-you-go | $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 | $2,148 · Pay-as-you-go | $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; Volumes are billed for their full size all month. The figures here use Fly's lowest rate: shared vCPUs bought in 1-year reservation blocks.
Azure Container Apps Sandboxes: Azure bills per second on the Container Apps Consumption meters for the sandbox tier's vCPU and memory while it runs, idle time before auto-suspend included. There is no plan fee, and some regions such as West Europe charge more.
Azure Container Apps Sandboxes: Plans start at $20 a month, and the whole fee is usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Fly is marked a compromise in all five scenarios: its lowest figures need a 1-year reservation and use shared vCPUs that guarantee only 6.25% of each core, so long builds get throttled. Azure fits four of the five, but the always-on agent at $262 a month needs a 3-year commitment, and a default quota of 500 active cores caps a fleet until Azure support raises it. Azure starts 1,000 short jobs at once, while boat queues that burst even on its $2,000 plan.
| Scenario | Fly.io Machines | Azure Container Apps Sandboxes | boat |
|---|---|---|---|
| One coding agent, workdays |
| None that bite | None that bite |
| One agent that never stops |
|
| 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 Fly.io Machines when
you host web apps or light services worldwide that sleep between requests, and you are happy to build the sandbox image yourself.
- A full app platform around each Machine. Useful if you host a whole product: Fly adds public TCP, Anycast IPs, custom domains and private networking next to your sandboxes.
- Cheap shared CPU for light work. Useful for agents that mostly wait on the network: shared vCPUs bill per second with no plan fee.
- No cloud account to set up. Useful for small teams outside Azure: a card or prepaid credits is enough, after a free trial of 2 Machine hours or 7 days.
Use Azure Container Apps Sandboxes when
your team runs on Azure and wants short stateful sandboxes that suspend with their memory, wake on traffic and sit behind strict egress rules.
- Memory suspend and wake on traffic. Good for stateful jobs that sleep between requests: any sandbox suspends with its memory and resumes in under a second.
- Fine-grained outbound rules. Useful when agents must reach only chosen hosts: rules can allow, deny or rewrite each request by host, path and method.
- Inside Azure, in 40 regions. Teams already on Azure get Entra ID, Azure billing and VNets, in 40 regions on six continents.
Where boat fits
Fly hosts apps and Azure runs agent code, but both leave you to build the computer an agent works on. If your agents install tools, run Docker and emulators, use a browser or work for hours, look at boat: every machine is a full VM with a desktop, coding agents and a disk that survives every stop.
A whole computer with /dev/kvm
Fly Machines have Fly's own init, no systemd and no /dev/kvm, and keep files only on one Volume. Azure documents no nested virtualization and no SSH. boat gives every machine root, systemd, Docker, /dev/kvm and SSH.
A desktop and coding agents built in
Both Fly and Azure are headless, so you build the desktop, browser and streaming stack into your own image. boat ships a 60fps desktop with Chromium and seven coding agents you drive from outside through one API.
Real keys never enter the sandbox
Fly passes secrets as environment variables unless you run its tokenizer proxy yourself, and Azure injects Copilot and Anthropic tokens into the sandbox at start. boat keeps keys in a credentials proxy outside, for any HTTPS API.
Use boat when your agents do real work for hours on a full VM: SSH, Docker, emulators, a desktop and a browser, with coding agents and a credentials proxy built in. Compare it one to one: boat vs Fly.io Machines and boat vs Azure Container Apps Sandboxes.
Questions people ask
Is Fly.io Machines cheaper than Azure Container Apps Sandboxes?
On Fly's lowest rate, yes in every scenario here: one workday agent is $15 a month on Fly against $68 on Azure, and 50 agents in parallel are $487 against $3,421. Fly's figures need a 1-year reservation and shared vCPUs that throttle under sustained load. boat is $20 and $317 for the same two.
Which is faster, Fly.io Machines or Azure Container Apps Sandboxes?
Neither has been measured on the same test. boat did 26.69 runs per second on the StarSling Node.js build-and-test loop at 4 vCPU / 8 GB. On Fly, speed under long loads depends on picking performance vCPUs over shared ones.
Can Fly.io Machines or Azure sandboxes run Docker?
On Fly you install Docker yourself in your image, with no systemd and no /dev/kvm. On Azure the azure-dev image ships Docker on systemd, while the default ubuntu image has only Buildah. boat has Docker, systemd and /dev/kvm on every machine.
Which one keeps memory when a sandbox sleeps?
Azure suspends any sandbox with its memory and resumes it in under a second. Fly keeps memory only for Machines up to 2GB, and drops it on a deploy or host move. boat keeps the whole disk but resumes by booting again.
Do I need an Azure account for Azure Container Apps Sandboxes?
Yes. It needs an Azure subscription, a Microsoft Entra ID account and the Container Apps SandboxGroup Data Owner role. Fly needs a card or prepaid credits after its free trial, and boat signs you in with GitHub, Google or an emailed code.
Where do they run?
Fly runs Machines in 17 regions and Azure runs sandboxes in 40 regions, both across six continents. boat runs only in the EU (Germany, Finland and France), with EU data residency.
Try boat
Install the CLI, then run boat new.
7-day free trial
More comparisons
- boat vs Fly.io Machines
- boat vs Azure Container Apps Sandboxes
- 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