Sprites, E2B, Modal and Daytona all give an AI agent an isolated machine to run code in, and they differ on four things that decide the bill and the blast radius: the isolation boundary under the code, what a sandbox costs while it sits idle, what survives between runs, and whether Docker or a GPU works inside.
Your agent writes a Python script, a migration or a shell pipeline, and something has to execute it somewhere other than your production host. Most agents do not run continuously. They work in bursts, wait on a model call or a human, then work again, and the session that matters can stretch across a day.
That pattern is where the four split. Three meter the sandbox for as long as it is alive, so the cheapest rate card can produce the biggest bill on bursty work.
Modal vs E2B vs Daytona vs Sprites: Which Should I Pick?
Pick Sprites when the agent runs untrusted code in sessions that start, stop and resume, because every Sprite is a Firecracker microVM with its own kernel, its disk persists across sleeps, and compute billing stops on its own when the agent goes quiet. Pick E2B if you need a paused sandbox’s memory kept indefinitely, running processes included. Pick Modal or Daytona when the sandboxed code needs a GPU, which neither Sprites nor E2B offer.
| Sprites | E2B | Modal | Daytona | |
|---|---|---|---|---|
| Isolation by default | Firecracker microVM, own kernel | Firecracker microVM, own kernel | gVisor; VM runtime optional | Linux container; VM sandboxes optional |
| Published start or wake time | Warm wake 100 to 500 ms; cold wake 1 to 2 s | Resume about 1 s | Not published | Under 90 ms |
| p50 / p99 start latency | Not published | Not published | Not published | Not published |
| CPU rate | $0.0385 per CPU-hour of actual use | $0.0504 per vCPU-hour | $0.1419 per core-hour (2 vCPU) | $0.0504 per vCPU-hour |
| Memory rate | $0.021875 per GB-hour of actual use | $0.0162 per GiB-hour | $0.0240 per GiB-hour | $0.0162 per GiB-hour |
| Compute billed while idle | No: billing stops when the Sprite goes warm | Yes, while running; no once paused | CPU metered by use, 0.125-core minimum | Yes, while started |
| Session length | No cap; disk persists | 24 h continuous on Pro, resets on resume | 5 min default, 24 h maximum | Auto-stop interval you set |
| Memory snapshot | Kept while warm; checkpoints are filesystem | Yes, kept through a pause | Yes, expires after 7 days | VM sandboxes only |
| GPU | No | Not on any plan | Yes, gVisor runtime only | Yes |
| Docker inside | Yes | Yes, via a template | Yes, VM runtime | Not documented |
Sources: [1] [2] [3] [4] [5] [6] [7] [8] [9]. Sprites figures from Fly.io’s pricing and Sprites docs. All checked 2026-10-12.
Fly.io vs Modal, Fly.io vs E2B and Fly.io vs Daytona compare the platforms beyond their sandboxes.
What Isolation Does Each Sandbox Use?
E2B and Sprites run every sandbox as a Firecracker microVM with its own guest kernel; Modal defaults to gVisor and Daytona defaults to Linux containers, and both offer a VM tier you choose per sandbox.
The code comes from a model, and the model read whatever the agent fetched: a README, an issue comment, a scraped page. Anyone who plants text there can steer what the agent writes. If that code finds a kernel bug, the question is which kernel it reaches.
A guest kernel per sandbox
E2B’s open-source runtime repository describes its sandboxes as Firecracker microVMs, with an orchestrator on each node driving Firecracker.[4] Every Sprite is the same shape, a hardware-isolated microVM with its own kernel. A kernel exploit inside lands in a guest kernel that serves one sandbox, and the hypervisor boundary is still between it and the host.
A user-space kernel, or a shared one
Modal runs sandboxes on gVisor by default, which its docs describe as a container runtime developed by Google, and offers a VM runtime with its own Linux kernel as an alternative.[7] Daytona’s sandboxes run as Linux containers by default, with VM sandboxes as a separate class.[9] A container shares the host kernel with its neighbours, so the default tier is the one to check before running code nobody reviewed. The trade-offs between the two boundaries are covered in Firecracker vs gVisor.
Which Sandbox Has the Fastest Cold Start?
Daytona publishes the lowest figure, under 90 ms from code to execution, but none of the four vendors publishes p50 or p99 start latency, so every number here is the vendor’s own claim.[9]
E2B’s persistence docs say resuming a paused sandbox takes about one second, and pausing takes about four seconds per GiB of RAM.[3] Modal’s sandbox guide gives no start-time figure. For Sprites, Fly.io’s docs separate two cases: a warm Sprite, suspended with its memory intact, resumes in 100 to 500 ms with processes picking up where they were, and a cold Sprite, fully stopped, wakes in 1 to 2 seconds with processes starting fresh.
An agent session created once and resumed for each burst pays the resume cost, not the create cost, so compare wake times, not creation times.
Do You Pay for an Idle Sandbox?
On E2B and Daytona you do, at the full allocation, for as long as the sandbox is running; on Sprites you do not, because compute billing stops when a Sprite goes idle and you never have to pause it yourself.
E2B charges per second for compute while a sandbox is running, and a paused sandbox stops that meter.[2] Daytona bills vCPU and memory per second.[5] Modal states that it bills CPU by actual use, with a minimum of 0.125 cores per container.[6] A Sprite is billed only while running: about 30 seconds after activity stops it goes warm, and warm is not billed for compute. Sprites and Daytona bill storage on top; E2B includes 10 GiB of disk on Hobby and 20 GiB on Pro.[1]
Monthly compute at 1, 10 and 200 sandboxes
The table assumes a 2 vCPU, 4 GiB sandbox, a 730-hour month, and that every platform is billed only for active hours: E2B paused, Daytona stopped and Modal terminated between bursts, with Sprites sleeping on their own. Sprites figures assume the full 2 CPUs and 4 GB are in use whenever the Sprite runs, which is the ceiling, since Sprites bill measured use.
| Duty cycle | Sandboxes | Sprites | E2B | Modal | Daytona |
|---|---|---|---|---|---|
| 5% | 1 | $6.00 | $6.04 | $8.69 | $6.04 |
| 5% | 10 | $60.04 | $60.44 | $86.86 | $60.44 |
| 5% | 200 | $1,200.85 | $1,208.88 | $1,737.11 | $1,208.88 |
| 30% | 1 | $36.03 | $36.27 | $52.11 | $36.27 |
| 30% | 10 | $360.26 | $362.66 | $521.13 | $362.66 |
| 30% | 200 | $7,205.10 | $7,253.28 | $10,422.63 | $7,253.28 |
| 100% | 1 | $120.09 | $120.89 | $173.71 | $120.89 |
| 100% | 10 | $1,200.85 | $1,208.88 | $1,737.11 | $1,208.88 |
| 100% | 200 | $24,017.00 | $24,177.60 | $34,742.07 | $24,177.60 |
Computed from the published rates in [1] [5] [6] and Fly.io’s Sprites pricing. Compute only; plan fees and storage excluded. Checked 2026-10-12.
At full use, Sprites, E2B and Daytona land within about 1% of each other, and Modal’s sandbox rate runs roughly 44% higher. The gap is the assumption: a sandbox left running through its idle time at 5% duty bills 730 hours on E2B or Daytona, $120.89 a month each, against $6.00 on a Sprite that slept on its own. Plan floors sit on top: E2B Pro is $150 a month, and more than 100 concurrent sandboxes needs its $500 add-on; Modal’s Team plan is $250 a month.[6] For other sandbox workloads, AI sandbox pricing runs the same arithmetic.
How Does State Persist Between Runs?
Sprites keep their disk indefinitely and keep memory while warm; E2B keeps disk and memory through a pause with no expiry; Modal keeps nothing past the sandbox’s lifetime unless you snapshot it, and its snapshots expire; Daytona keeps memory only on VM sandboxes.
The pattern people describe is “install once, clean every run”, and each platform supports it differently.
Disk and memory across a pause
An E2B pause saves the filesystem and the memory, running processes included, and a paused sandbox is kept until you kill it. Continuous runtime is capped at 24 hours on Pro, and the cap resets after a pause and resume.[3] A Sprite’s 100 GB ext4 disk survives every sleep and restart with no duration cap, and a warm Sprite keeps its memory too.
Snapshots and forks
Modal sandboxes live five minutes by default and 24 hours at most. Filesystem and directory snapshots carry a 30-day default lifetime, and memory snapshots expire after seven days with no extension.[8] Daytona’s container sandboxes snapshot the filesystem only; fork, pause and memory snapshots are VM-sandbox features.[9] Sprite checkpoints are copy-on-write snapshots of the filesystem, not memory, and one checkpoint can be restored as many times as you like.
Can You Run Docker or a GPU Inside the Sandbox?
Docker runs inside E2B, Modal’s VM runtime and Sprites; a GPU runs inside Modal and Daytona, and not inside E2B or Sprites.
E2B documents a template that installs Docker and Docker Compose into the sandbox image.[10] Modal runs Docker only on its VM runtime, and runs GPU sandboxes only on gVisor, so one Modal sandbox cannot have both.[7] Daytona sells GPU sandboxes on NVIDIA and AMD hardware at hourly rates on its pricing page.[5] E2B’s plans list vCPU, memory and disk, and no GPU.[2] A Sprite is a full Linux VM with its own kernel, so a coding agent can bring up containers inside it for a test suite. Fly.io offers no GPUs: training or inference inside the sandbox is the case where Modal or Daytona is the right pick.
Sprites vs E2B vs Modal vs Daytona on Fly.io
A Sprite is a persistent Linux computer for an agent: a Firecracker microVM with its own kernel, a 100 GB ext4 disk that survives sleeps, and coding agents such as Claude Code preinstalled. Drive it from the sprite CLI, the REST API, the MCP server or an SDK.
When the agent stops, the Sprite goes warm within about 30 seconds and compute billing stops; the next command or HTTP request wakes it, as the lifecycle docs describe. Each Sprite gets its own HTTPS URL, so a dev server inside it can take webhooks without a tunnel. Egress is open by default; apply an allowlist from outside and code inside can read it but cannot change it, which the networking docs cover.
Sprites and Fly Machines run on the same Firecracker substrate. When the thing an agent built needs to run around the clock, checkpoint the environment and run it as a long-lived service on Machines, with no rewrite and no foreign runtime.
Frequently Asked Questions
Which AI code sandbox has the fastest cold start?
Daytona publishes the lowest figure, under 90 ms from code to execution. Fly.io documents a warm Sprite waking in 100 to 500 ms with its processes intact, and a cold Sprite in 1 to 2 seconds. E2B gives about one second to resume a paused sandbox, and Modal publishes no figure. None of the four publishes p50 or p99 start latency.
How much does E2B cost?
E2B charges $0.0504 per vCPU-hour and $0.0162 per GiB-hour of memory, per second while a sandbox runs. The Hobby plan has no base fee and caps sessions at one hour; Pro is $150 a month for 24-hour sessions and 100 concurrent sandboxes. Sprites on Fly.io bill $0.0385 per CPU-hour and $0.021875 per GB-hour of measured use, and stop billing compute when a Sprite goes idle.
What are the alternatives to E2B?
Sprites on Fly.io are the closest alternative: like E2B, each one is a Firecracker microVM with its own kernel, and a Sprite adds a disk that persists across sleeps and compute billing that stops on its own when the agent goes idle. Modal and Daytona are the other common choices; both default to a lighter boundary than a microVM, and both offer GPUs.
Which sandbox providers use Firecracker microVMs?
E2B and Sprites on Fly.io run every sandbox in a Firecracker microVM with its own guest kernel, with no setting to change. Modal defaults to gVisor and offers a VM runtime per sandbox. Daytona defaults to Linux containers and offers VM sandboxes as a separate class.
Do agent sandboxes have internet access by default?
Yes, on the platforms that document it. E2B sandboxes have outbound internet access by default. A Sprite on Fly.io also starts with open egress; you can apply an allowlist from outside the Sprite, and code inside can read that policy but cannot change it.
Can I run a GPU inside an AI code sandbox?
Yes, on Modal and Daytona. Modal runs GPU sandboxes on its gVisor runtime, and Daytona sells GPU sandboxes by the hour. E2B’s plans include no GPU, and Fly.io does not offer GPUs, so Sprites are a CPU sandbox.
Do I pay for an idle sandbox?
Yes on E2B and Daytona, no on Sprites. E2B and Daytona bill the full vCPU and memory allocation for as long as a sandbox is running, so an idle sandbox costs the same as a busy one until you pause or stop it. A Sprite on Fly.io goes warm about 30 seconds after activity stops, and warm Sprites are not billed for compute.
What is the difference between Sprites and Fly Machines?
Sprites are persistent Linux computers for agents that sleep when idle and wake on the next command or request; Fly Machines are the long-running VMs Fly.io uses to run apps and services. Both run on the same Firecracker substrate, so code an agent builds in a Sprite runs on Machines in production with no rewrite.
Sources
- ^ E2B, “Pricing”. e2b.dev/pricing. Checked 2026-10-12.
- ^ E2B, “Billing and limits”. docs.e2b.dev/billing. Checked 2026-10-12.
- ^ E2B, “Sandbox persistence”. docs.e2b.dev/sandbox/persistence. Checked 2026-10-12.
- ^ E2B, “E2B Runtime” repository README. github.com/e2b-dev/runtime. Checked 2026-10-12.
- ^ Daytona, “Pricing”. daytona.io/pricing. Checked 2026-10-12.
- ^ Modal, “Pricing”. modal.com/pricing. Checked 2026-10-12.
- ^ Modal, “Sandboxes”. modal.com/docs/guide/sandboxes. Checked 2026-10-12.
- ^ Modal, “Snapshots”. modal.com/docs/guide/sandbox-snapshots. Checked 2026-10-12.
- ^ Daytona, “Sandboxes”. daytona.io/docs/en/sandboxes. Checked 2026-10-12.
- ^ E2B, “Docker”. docs.e2b.dev/template/examples/docker. Checked 2026-10-12.