Modal vs Azure Container Apps Sandboxes

Modal gives you short-lived gVisor sandboxes on a big AI compute platform, with GPUs next to them and a 24-hour session limit. Azure gives each sandbox its own microVM inside your Azure account, with no session cap, that can suspend with its memory and wake on traffic.

The companies and products

Modal

Modal is a serverless cloud for AI work: inference, training, batch jobs and sandboxed code, all driven from Python, TypeScript or Go code.

Modal Sandboxes are containers you create from code, run commands in, and then terminate. By default they run under gVisor, a user-space kernel from Google; since October 2026 you can also pick a VM runtime with its own Linux kernel for Docker and FUSE (Battleships tracks that as a separate card, Modal VM Sandboxes). It suits teams that already run models on Modal and want short-lived, scalable code execution next to their GPUs.

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. “19th cheapest of 345” means 18 of the other 344 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 workloadModal: price rankAzure Container Apps Sandboxes: price rankboat: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
Can't run it288th 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
An agent that runs all month hits Modal's 24-hour limit and pays Azure for every running second, while boat has no session cap on paid plans.
196th of 366, with limits
$1,924 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
Both fit short code runs well: Modal for its fast starts and big bursts, Azure because a sandbox can suspend with its memory and resume in under a second.
19th cheapest of 345
$181 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
Both fit sandboxes for your users; Azure suspends idle ones with their memory, Modal starts new ones fast, and boat gives each user a machine that stops for free and keeps its disk.
11th cheapest of 361
$811 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
RL rollouts launch many short sandboxes at once, which is what Modal is built for, while Azure's default quota of 500 active cores caps a fleet until support raises it.
5th cheapest of 360
$19,038 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
59th cheapest of 364
$1,244 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 that builds Docker images needs Modal's VM runtime or an Azure image that ships Docker, like azure-dev; every boat sandbox runs Docker as is.
126th cheapest of 377
$1,793 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 a disk that stays and a way in over SSH; Modal resets its root disk when a sandbox ends and Azure has no SSH, while boat has both.
138th of 368, with limits
$23 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
Computer-use agents need a screen; neither Modal nor Azure ships a desktop, and boat streams a Linux desktop at 60fps in every sandbox.
98th of 369, with limits
$183 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
177th of 367, with limits
$136 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
267th of 346, with limits
$394 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
223rd of 338, with limits
$8,795 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
Can't run it278th 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
Modal has GPUs from T4 to B300; Azure's sandboxes and boat have none, so Modal is the pick for GPU jobs.
19th cheapest of 98
$1,187 a month
Can't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Can't run itCan't run itCan't run it

Key features

FeatureModalAzure Container Apps Sandboxesboat
IsolationgVisor by default; VM runtime with its own kernel availableMicroVM per sandbox with its own kernelFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts
Docker insideOnly with the VM runtimeDepends on the image: azure-dev ships Docker on systemd; the default ubuntu image has only BuildahDocker, systemd and root in every sandbox
Nested virtualizationVM runtime only, Team and Enterprise plans, on requestNot documentedYes, /dev/kvm for Android emulators and VMs
Longest session24 hours (default 5 minutes)No cap; runs until stopped or auto-suspended when idleNo cap on paid plans (default TTL 1 h, changeable)
Stop and resumeNo paused state; a finished sandbox is gone, only Volumes keep filesSuspend with memory and disk; resume in under a second with processes runningStop for free; disk saved every minute and on stop, resume boots the machine again
Snapshots and forkFilesystem snapshots into images; memory snapshots in alpha end the sandbox and expire after 7 daysSnapshot a running sandbox with its memory and create new sandboxes from itFork a running sandbox with its disk, without stopping it
GPUsT4 to B300; 10 at once on Starter, 50 on TeamNoneNone
Desktop, browser and computer useNot offered; an example shows how to set up VNC yourselfHeadless; no desktop or managed browserLinux desktop streamed at 60fps, Chromium and computer-use tools preinstalled
Inbound accessEncrypted and raw TCP tunnels, connect tokens, inbound IP allowlistPublic HTTPS routes per published port; private endpoint from your VNet; no public IPHTTPS URLs for up to 50 ports, token-protected by default, plus raw TCP and SSH
Outbound rulesBlock all, IP-range allowlist, domain allowlist (beta)Allow, deny, rewrite and header rules by host, path and method; VNet integrationOpen internet, no provider-side allowlist
Coding agents and API keysExamples only; secrets are environment variables, or you run your own proxy in a sidecarCopilot CLI and Claude Code images run through the exec API; their tokens are injected into the sandboxSeven agents preinstalled with a prompt, steer and events API; a credentials proxy keeps real keys outside
Fleet size100 containers on Starter, 5,000 on Team500 concurrent active cores by default; more by Azure support requestConcurrency set by plan, up to 2,000 sandboxes, self-serve
RegionsUS, EU and Asia-Pacific; pinning a region costs 1.15x to 1.75x40 Azure regions on six continentsEU only: Germany, Finland, France
Account and accessModal account, driven from Python, TypeScript or GoAzure subscription and Microsoft Entra ID with the SandboxGroup Data Owner roleSign in with GitHub, Google or an emailed code
Every feature Battleships tracks (43)
FeatureModalAzure Container Apps Sandboxesboat
Full VM (own kernel)NoYesYes
Docker insideNoYesYes
Nested virtualizationNoNoYes
RootYesYesYes
SystemdYesYesYes
Desktop GUINoNoYes
BrowserNoNoYes
Computer-use APINoNoYes
SSHYesNoYes
Persistent diskYesYesYes
Pause/resumeNoYesYes
Automatic snapshotsNoYesYes
Fork/cloneYesYesYes
Live fork (no pause)NoYesYes
Memory forkYesYesNo
Custom image (Docker or snapshot)YesYesYes
≥24 h sessionsYesYesYes
Idle auto-stopYesYesNo
Wake on requestNoYesNo
HTTPS preview URLsYesYesYes
Raw TCP inboundYesNoYes
Public IPv4NoNoNo
Egress allowlistYesYesNo
Secret proxyNoYesYes
Secret proxy for any APINoYesYes
Preinstalled agentsNoYesYes
Agent harness APINoNoYes
MCP serverNoNoNo
GPUYesNoNo
WindowsNoNoNo
Arm64NoNoNo
Self-hostingNoNoNo
BYOCNoNoNo
Open sourceNoNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsNot publishedYesYes
Usage per sandbox (API)Not publishedYesYes
Audit logsYesYesNo
SSOYesYesNo
SOC 2YesYesNo
HIPAAYesYesNo
EU data residencyYesYesYes
Zero data retentionNot publishedNot publishedYes

Performance

Modal12.79 runs/s
Azure Container Apps SandboxesNot measured
boat26.69 runs/s

In the same StarSling hpc-sandbox-benchmarks run at 4 vCPU / 8 GB, Modal's default gVisor sandbox finished 12.79 Node.js build-and-test runs per second and boat finished 26.69, about twice the work. There is no comparable measurement for Azure Container Apps Sandboxes yet, so this page makes no speed claim about Azure.

Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Modal measured on: Sandbox (gVisor), request = size, any region. Azure Container Apps Sandboxes 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.

ScenarioModal, a monthAzure Container Apps Sandboxes, a monthboat, 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 · Starter · 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
$178 · Starter · 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
$2,229 · Starter · 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
$792 · Team$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
$3,193 · Team · with limits$2,148 · Pay-as-you-go$2,000 · $2000/mo · with limits

Modal: Modal bills by the second for whichever is higher, the CPU and memory you request or what you use, until the sandbox is terminated. Starter is free with $30 of monthly credit, Team is $250 a month with $100 of credit, and pinning a region multiplies the price by 1.15x to 1.75x.

Azure Container Apps Sandboxes: Azure bills per second on the Container Apps Consumption meters for the vCPU and memory of the sandbox's tier while it runs, including idle time before auto-suspend. There is no plan fee, a stopped sandbox pays no CPU or memory, and some regions charge more.

Azure Container Apps Sandboxes: boat charges one hourly rate per machine size, by the second, only while the sandbox runs. Plans start at $20 a month, the whole fee becomes usage credit, and a stopped sandbox costs nothing.

Limits in those scenarios

On Modal, a sandbox lives at most 24 hours and its root disk is wiped when it ends, so the workday, always-on and fleet scenarios keep only files in a Volume, and the 50-agent fleet does not fit because Docker needs the VM runtime. Azure fits the workday and fleet scenarios, but it bills every running second, so the always-on agent only gets close with a 3-year commitment, and 500 active cores cap a fleet by default. For 1,000 short jobs at once, Azure fits, while boat's plans queue the starts.

ScenarioModalAzure Container Apps Sandboxesboat
One coding agent, workdays
  • files survive a stop only in Volumes: packages installed elsewhere reset
None that biteNone that bite
One agent that never stops
  • Starter: sessions capped at 24 h
  • files survive a stop only in Volumes: packages installed elsewhere reset
  • 3-year commitment
None that bite
50 agents in parallel
  • missing Docker inside
  • files survive a stop only in Volumes: packages installed elsewhere reset
None that biteNone that bite
Sandboxes for your usersNone that biteNone that biteNone that bite
1,000 short jobs at once
  • shared vCPUs on this tier (Modal sells dedicated cores separately as “Sandbox (gVisor), request = size, any region”): heavy, sustained CPU use can be slowed by other tenants
None that bite
  • max 2,400 starts/day (needs ~6,667)
  • max 600 starts/hour (needs ~1,000)
  • bursts above 90 starts/min are queued (a burst of 333 takes ~4 min to start)

Which one should you use?

Use Modal when

your sandboxes need GPUs, or are huge bursts of short jobs that finish in minutes on a platform you already use for models.

  • GPUs on the same platform. If your agent runs or trains models, Modal rents GPUs from T4 to B300 next to its sandboxes; Azure's sandboxes have none.
  • Built for huge bursts. For many short jobs at once, Modal runs up to 5,000 containers on Team without a support request.
  • Images from code. Teams that like code over config can build images in Python or pull any linux/amd64 registry image.

Use Azure Container Apps Sandboxes when

your team runs on Azure and wants stateful sandboxes that suspend with their memory, wake on traffic and sit behind strict egress rules.

  • Suspend with memory. For stateful jobs that sleep between requests, a sandbox suspends with its memory and resumes in under a second.
  • No session cap. A sandbox keeps running until you stop it or it goes idle, so long jobs are not cut off at 24 hours.
  • Inside your Azure account. Teams already on Azure get Entra ID, Azure billing, VNets and fine-grained egress rules, in 40 regions.

Where boat fits

Modal and Azure both shine at short sandboxes: Modal for bursts next to GPUs, Azure for jobs that sleep with their memory. If your agents instead work for hours or days, installing, building, testing and checking their work on a screen, look at boat. Each sandbox is a whole computer that keeps its disk, stops for free and has no session cap on paid plans.

A whole computer with Docker and /dev/kvm

On Modal, Docker needs the VM runtime and nested virtualization is on request for Team plans; on Azure, Docker depends on the image and /dev/kvm is not documented. boat gives every sandbox root, systemd, Docker and /dev/kvm.

A screen and agents built in

Neither Modal nor Azure ships a desktop, so a computer-use agent needs you to build a display and streaming stack. boat has a 60fps desktop, Chromium and seven coding agents you drive from outside through one API.

Keys stay out, work stays in

Modal puts secrets in environment variables and Azure injects agent tokens at start, where a prompt-injected agent can read them. boat's credentials proxy keeps real keys outside, and the disk is saved every minute, unlike Modal's sandboxes that end within 24 hours.

Use boat when your agents work for hours or days and need a whole computer: SSH, Docker, emulators, a desktop and a browser, on a fast machine that keeps its disk. Compare it one to one: boat vs Modal and boat vs Azure Container Apps Sandboxes.

Questions people ask

Is Modal cheaper than Azure Container Apps Sandboxes?

Often, yes. One agent on workdays is $15 a month on Modal against $68 on Azure, and sandboxes for your users are $792 against $989. For 1,000 short jobs at once Azure costs less, $2,148 against $3,193. boat comes in at $20 and $200 for the first two.

Which is faster, Modal or Azure Container Apps Sandboxes?

Azure has no comparable CPU measurement yet, so we cannot say. Modal's default sandbox finished 12.79 runs per second in a public Node.js benchmark at 4 vCPU / 8 GB, and boat finished 26.69 in the same run.

Can Modal or Azure sandboxes run Docker?

Modal runs Docker only with its VM runtime, not in the default gVisor sandbox. On Azure it depends on the image: azure-dev ships Docker on systemd, while the default ubuntu image has only Buildah. Every boat sandbox runs Docker with no extra setting.

How long can a sandbox run on Modal and on Azure?

Modal sandboxes default to 5 minutes and stop at 24 hours at most. Azure documents no session cap: a sandbox runs until you stop it or it auto-suspends after being idle. boat has no session cap on paid plans.

Which one has GPUs?

Modal, with GPUs from T4 to B300 on its gVisor runtime. Azure Container Apps Sandboxes and boat are CPU machines.

Can I SSH into Modal or Azure sandboxes?

Azure gives you a shell through the aca CLI, the SDK or the portal, with no SSH. Modal offers raw TCP tunnels you can wire up yourself. Every boat sandbox has an SSH endpoint, so editors that connect over SSH just work.

Try boat

Install the CLI, then run boat new.

7-day free trial

More comparisons