Executing model-written expressions with the tightest possible default
Multi-language interpreter tooling without maintaining images
You want deny-by-default network and filesystem out of the box
The strictest isolation here: perfect for evaluating a model's data transform, useless if it needs a dependency.
Which one should you pick?
The short path to an answer. Follow the branch that matches your situation; the table above is there when you want to check the reasoning against the numbers.
What are you actually running in the sandbox?
Agent-generated code, and I want a default that just works
Do you need to self-host, or keep an exit hatch if the vendor changes?
Yes — portability matters
→ E2BApache-licensed Firecracker with Dockerfile templates; the only ecosystem you can self-host without rewriting your integration.
No — fully managed is fine, and boot time is the whole game
→ DaytonaSub-90 ms shared-kernel container start wins on ergonomics and speed — but a shared kernel is not a hypervisor, so weigh the isolation you are giving up.
Evals and benchmark-harness work
→ RunloopDevbox snapshots plus a built-in benchmark harness — a different product shape that fits evals rather than general execution.
A feature inside an app I've already deployed
Where does that app already live?
Vercel
→ Vercel SandboxMakes the sandbox a line in the app you already ship; not fastest or cheapest, and not trying to be.
Cloudflare
→ Cloudflare SandboxThe same bet on Workers: the sandbox is part of the deployment you already run.
My own infra
→ Fly.io MachinesA real Firecracker VM at roughly a tenth the cost, with a durable volume, a Sydney region, and nothing charged while stopped.
Which sandbox provider should I run untrusted or agent-generated code on?
Nobody buys a sandbox; they buy the seconds between an agent deciding to run code and it running
They also buy confidence that a hostile rm -rf or crypto miner stays inside the box
Everything else on this page is a proxy for those two things
Fastest: V8 isolates and WASM (Val Town, Riza) start in milliseconds
Every value carries a source and a date; when one moves, it is logged here. Spot a number that is wrong or stale? Every cell in the table has a "dispute" link that opens a prefilled correction.
2026-07-23Changed
Held every measured cold-start as inferred, not measured: the harness has not run on this roster yet, and an honest estimate beats laundering a vendor's homepage figure into a benchmark. The latency probe backfills this column as it runs.
Cold start
2026-06-30Corrected
Recorded Daytona closing its source in June 2026, which removes the self-host exit hatch that made its shared-kernel isolation trade-off tolerable.
2026-06-15Added
Added box, ascii, exe.dev and Islo, transcribed from box's own comparison table; every unverified cell is left unknown until re-sourced from each vendor's own docs.
Cite this comparisonCC-BY-4.0 · verified 2026-07-23
E2B is the fastest general-purpose microVM sandbox for agents, but Fly.io Machines wins on price and control if you can skip an agent SDK. — toolweight, https://toolweight.com/compare/sandbox-providers, verified 2026-07-23. Data from toolweight (https://toolweight.com), licensed CC-BY-4.0.
Frequently asked questions
Is a container enough to run LLM-generated code, or do I need a microVM?
Your own model's code behind your own prompt: a hardened container is usually fine
User-supplied code: assume a container escape is a matter of time and budget, shared-kernel isolation drips CVEs
A microVM (Firecracker, Cloud Hypervisor) or gVisor gives a syscall boundary a guest kernel bug cannot cross
Check what you buy: Daytona runs shared-kernel containers, and vendors call a namespace a "dedicated kernel"
The price gap is now small enough that the container answer is rarely worth defending
Why is the cold start I measure so much slower than the number on the vendor's homepage?
They measure different things
Vendor numbers time a snapshot restore on hardware already allocated to you
Yours adds TLS, API scheduling, image pull, the round trip, and pool scale-up queueing
A 90 ms claim routinely lands between 400 ms and 2 s, and widens the further you sit from their region
What does snapshot and fork actually buy an agent?
Branching: build once, snapshot, then fork five times to try five patches in parallel
Cheap idle: pause mid-session, pay storage only, resume in a fraction of a cold boot
Resume keeps the process tree and page cache intact
For long agent sessions this beats raw boot speed, because you cold-start once
Can I run a browser inside the sandbox instead of paying for a browser API?
Yes, and for a handful of pages a day it is cheaper
Chromium with a CDP endpoint costs compute you already pay for
You lose residential egress, CAPTCHA handling and fingerprint work, so real bot defences will beat you
Use the sandbox for your own apps and tooling; use a browser API when the site fights back
How locked in am I if I pick the wrong provider?
Less than it feels: every provider exposes the same four verbs, create, exec, read/write files, kill
A thin interface of your own keeps swapping to about a day of work
Real lock-in is proprietary image formats, snapshots that only restore on the vendor's cluster, and baked-in preview-URL domains
Keep images as plain Dockerfiles and you keep your exit
Which providers can run in Sydney or another Australian region?