The Ultimate AI Agent Sandboxes Comparison 2026
We compare every agent sandbox so you don't have to. Nirvana, E2B, Modal, Vercel, Daytona & 8 more compared on persistence, speed, and isolation.
TL;DR
- Every sandbox provider now says "persistent". Underneath there are four different mechanisms: snapshot pipelines, object-storage mounts, tiered filesystems, and live volumes. Nirvana and Northflank are the live-volume camp, and Nirvana is the only provider that documents the disk underneath: /workspace sits on a dedicated Accelerated Block Storage volume, 20,000 sustained IOPS, no snapshot step, no restore step, no expiry window.
- Snapshots can charge a toll on the way in (E2B documents ~4s/GiB, Blaxel ~15s to standby) and often expire (7-30 day TTLs). Eight of thirteen providers don't publish pause times at all. Nirvana's pause has nothing to copy, so there is no toll.
- On isolation, the microVM camp has the strongest per-sandbox walls. Nirvana layers container walls, VM-isolated nodes, and the thing nobody else does by default: a dedicated cluster for every customer, SOC 2 Type II audited.
- New recipe: if resume is cheap, run persistent sandboxes even for disposable jobs. Boot once on Nirvana, pause, and every job after starts with a resume instead of a boot. The exception is fan-out; forking copies is snapshot territory.
- Every cell below comes from vendor docs, checked August 2026. If your docs changed, tell us and we'll fix it.
Comparing Nirvana, E2B, Daytona, Modal, Vercel, Blaxel, Cloudflare, Northflank, Fly.io, Beam, Railway, AWS, and Google on persistence, pause/resume speed, isolation, and what actually survives. Every claim sourced from vendor docs, August 2026.

If you're deploying AI agents, you've probably noticed that every sandbox provider is making the same promises with slightly different words: secure, instant, stateful, isolated. (Ours says fast and isolated.) And lately, one word keeps landing on every spec sheet regardless of dictionary: persistent.
We wanted to know what those words actually mean on each platform, so we read every sandbox provider's docs so you don't have to. Thirteen of them: E2B, Daytona, Modal, Vercel, Blaxel, Cloudflare, Northflank, Fly.io, Beam, Railway, AWS, Google, and our own. I went to each company's docs section and copied and pasted, page by page. Let's hope they all update their docs frequently.
A few things first before we dive in:
- There's ephemeral vs persistent. Ephemeral sandboxes are wiped when they stop: one clean environment per job, nothing left behind. Persistent ones keep their state, so an agent can pick up exactly where it left off.
- Speed is three numbers, not one. Boot (creating a fresh sandbox), resume (waking a persistent one), and pause (putting it to sleep). For persistent sandboxes, pause and resume matter more than boot, because you only boot once.
- Isolation comes in two flavors. By VM: imagine every sandbox getting its own brand-new computer with its own kernel. Most isolated. Or by container: sandboxes share the machine's kernel. Faster, thinner walls. And one more question on top of both: whose cluster are you on?
Ok, now you understand how to read these. Let's dive in. Where a number appears only on a marketing page and not in the docs, we've marked it. If we got something wrong about your platform, tell us and we'll fix it: every claim traces to the vendor's own documentation.
One trend is unmistakable before we even start: persistence went from a feature to the default in under twelve months. Vercel now snapshots every sandbox unless you opt out, E2B keeps paused sandboxes indefinitely, and the Kubernetes agent-sandbox project wrote "stateful" into the spec itself.
1. The whole market at a glance
Every provider, every axis, one table. The rest of the article is the zoom-in.
| Provider | Boot | Pause → resume | Persistence | Isolation |
|---|---|---|---|---|
| Nirvana | ~2.5s eph / 6-7s pers | Instant → instant ᵈ (API operations) | Live block volume, no expiry | Container + VM node + dedicated cluster per customer |
| E2B | ~80ms ˢ | 4s/GiB → ~1s | FS + RAM snapshot, kept forever | Firecracker microVM |
| Daytona | ~90ms ˢ | VM pause freezes FS+RAM ᵈ; timings — | FS on stop; VM hot snapshots; S3 volumes | Container (Kata opt.) or Linux VM |
| Modal | ~1s ᵈ | — → seconds | FS snapshots, 30d TTL + volumes | gVisor; VM beta |
| Vercel | ms-class ᵈ | — → <1s p75 | Auto-snapshot on stop, default on | Firecracker microVM |
| Blaxel | resume-first | auto-standby after ~15s idle → <25ms | Standby snapshot incl. processes | MicroVM |
| Cloudflare | hundreds of ms ᵇ | none; sleep wipes | R2/S3 mounts; R2 backups (3d restore TTL) | Container in own VM |
| Northflank | <1s ᵈ | scale-to-zero → scale-up + rollout ᵈ; timings — | Attached volumes | MicroVM or gVisor |
| Fly Sprites | persistent-first | auto-idle ~30s → 0.1-0.5s warm / 1-2s cold | Persistent ext4 FS (NVMe cache, object-backed); checkpoints | Fly Machines VM |
| Beam | 1-3s ᵈ | — | FS snapshots + volumes | gVisor + runc container |
| Railway | — | none; idle destroys | Named disk checkpoints | Isolated VM |
| AWS Lambda MicroVMs | near-instant | auto → near-instant | RAM + disk snapshot; 8h cap | Firecracker microVM |
| Google GKE Agent Sandbox | sub-second warm pool ᵈ | pause/resume primitive | Pod snapshots to your bucket; no default expiry | gVisor, your GKE cluster |
Legend: — not published · ᵈ their docs · ˢ their site · ᵇ their blog. All cells as of August 2026.
Now the zoom-ins, starting with the word doing the most work in this market.
2. Persistence, the deep dive: what it means and what survives
The word is the same everywhere. The mechanism is not. And here's the part that surprised us: most sandbox persistence isn't backed by continuously attached block storage. It's snapshots being copied around, and where standing storage does appear, it's usually generic S3-compatible object storage. Four designs in the market:
A live disk. The sandbox's workspace is a block-storage volume that stays provisioned while the compute is gone, ready to reattach on resume. Nothing is copied out on pause; nothing is restored on resume; the volume carries no expiry window. This is how Nirvana Agent Sandboxes work: /workspace lives on a dedicated Accelerated Block Storage volume with 20,000 sustained IOPS included. Northflank's attached volumes belong to this family too: the volume stays with the service across scale-to-zero and remounts on scale-up. Two differences, from their docs: resume is a redeploy rather than a resume call, and neither the backing store nor its performance is published. Ours is in the docs: ABS, 20,000 sustained IOPS.
A snapshot pipeline. State is copied out when the sandbox stops and copied back when it resumes. E2B (filesystem + memory via Firecracker snapshots), Vercel (automatic filesystem snapshot on stop, on by default), Modal (filesystem snapshots that become images), and Blaxel (full standby snapshots including running processes) all work this way. The trade: snapshots take time to write, and several expire: Modal's filesystem snapshots default to a 30-day TTL, Vercel's default to 30 days from last use (both configurable), and Modal's memory snapshots hard-expire in 7 days. Railway pushes the snapshot idea furthest: its checkpoints are named disk snapshots you boot fresh sandboxes from, and there is no pause at all; idle sandboxes get destroyed.
An object-storage mount. Durable data lives in S3-style storage mounted into the sandbox. Daytona's volumes are S3-backed FUSE mounts. Their own docs note that volumes "can not be used for applications that require block storage access" and are "generally slower for both read and write operations" than the local filesystem. Cloudflare's persistence path is R2/S3 bucket mounts plus R2-backed directory backups (copy-on-write restore; restores expire after a 3-day default TTL, extendable); their lifecycle docs are admirably blunt about the local disk: "All previous state is lost and the environment resets to its initial state... Design for ephemeral state."
A tiered filesystem. Fly.io's Sprites keep a persistent ext4 filesystem on local NVMe, backed by object storage. Filesystem persists; RAM doesn't; sprites auto-hibernate after ~30 seconds idle, and wakes take ~100-500ms warm and 1-2s cold, per their docs.
So which design is better for persistent agents? One distinction explains most of it: snapshot vs live volume. A snapshot is a copy of your disk, taken at pause and restored at resume; a live volume is the disk, still there while the compute is gone. The copy approach buys you cloning and (for some vendors) frozen memory. The live disk buys you three things: nothing to write out (no pause toll), nothing to restore (no restore step to go wrong), and nothing to expire (our volumes carry no TTL; snapshots often do). It also behaves like a real disk, so database-style and write-heavy workloads run the way they would on a local volume, which object-storage mounts explicitly can't promise.
| Provider | Filesystem | Memory/processes | Expiry / caps |
|---|---|---|---|
| Nirvana | Survives (live volume) | No; processes restart on resume | None |
| E2B | Survives | Yes (optional FS-only mode) | Paused sandboxes kept indefinitely; continuous runtime capped at 24h (Pro) / 1h (Hobby) |
| Vercel | Survives (snapshot) | No | Snapshots default to 30-day expiry from last use, configurable incl. indefinite; session caps 45min (Hobby) / 24h (Pro, Enterprise) |
| Modal | Survives (snapshot) | Alpha only; taking a memory snapshot terminates the sandbox | FS snapshots 30-day default TTL (configurable); memory snapshots 7 days, hard |
| Blaxel | Survives | Yes, including processes | Standby TTLs on starter tiers; external network connections don't survive |
| Daytona | Survives on stop | Containers: no. Linux VM sandboxes: hot snapshots can preserve memory ᵈ | Lifecycle policies (auto-stop/auto-archive intervals) |
| Fly Sprites | Survives | Warm wake: yes, processes resume where they were. Cold: memory dropped ᵈ | None published |
| Northflank | Survives (attached volume) | No | None published |
| Cloudflare | Does not survive sleep | No | 10-minute default idle; bucket mounts + R2 backups (3d default restore TTL) |
| AWS Lambda MicroVMs | Survives (RAM + disk snapshot on suspend) | Yes | 8h max session |
| Google GKE Agent Sandbox | Survives pause | Yes: Pod snapshots keep execution state ᵈ | Snapshots live in your bucket until deleted; optional last-access timeout |
| Beam | Survives via filesystem snapshots | Yes: memory snapshots restore into new sandboxes (their SDK docs) | Sessions run indefinitely or auto-shutdown on TTL |
| Railway | Survives only via checkpoint (named disk snapshot) | No: "files are preserved, running processes are not" | Idle timeout destroys sandboxes (5-120 min by plan); checkpoints capped by plan |
Honest note on the memory column: Blaxel and E2B genuinely preserve running processes across pause, and we don't: our agents restart and find their files exactly where they left them. For checkpoint-and-continue agent patterns, files are usually what matters; for frozen-mid-computation patterns, the snapshot vendors have a real capability we don't.
And one more honest note: on cold creation speed we're mid-pack (~2.5s ephemeral, 6-7s persistent first boot). Several providers create sandboxes faster. Our bet is that agents that carry state boot once and live in the pause/resume loop, where both of our directions are instant.
3. The table nobody publishes: pause times
Every provider advertises resume speed. Almost nobody documents what pausing costs, and pause is where checkpoint economics live, because a slow pause means paying for compute while the snapshot writes.
| Provider | Pause (going in) | Resume (coming out) | Source |
|---|---|---|---|
| Nirvana | Instant (pod released; no snapshot to write) | Instant operation; ready-to-run latency not separately published | Our docs |
| E2B | ~4s per GiB of RAM | ~1s | Their persistence docs |
| Blaxel | No explicit pause: auto-standby ~15s after inactivity, full-state snapshot included | <25ms | Their lifecycle docs |
| Fly Sprites | Automatic: warm suspend keeps processes, going cold drops memory; explicit checkpoints take 10-30s and stop processes | 100-500ms warm (state intact) / 1-2s cold (fresh boot) | Their docs |
| Vercel | Not published (snapshot-on-stop, size-dependent) | Sub-1s p75, 5s p95 | Their engineering blog |
| Modal | Not published (their snapshot API's default timeout is 55s, which bounds it but doesn't measure it) | Seconds (new sandbox from snapshot) | Their SDK reference |
| Daytona | VM pause freezes the machine, filesystem and memory kept; timings not published | Not published | Their sandbox docs |
| Northflank | Scale-to-zero; timings not published | Scale-up + deployment rollout; timings not published | Their sandbox docs |
| Cloudflare | No pause: sleep discards state | Fresh container (empty state) | Their lifecycle docs |
| AWS Lambda MicroVMs | Not published (auto-suspend) | Near-instant | Launch announcement |
| Google GKE Agent Sandbox | Not published (pause/resume primitive) | Warm-pool allocation sub-second; snapshot restore "a few seconds" | Their docs and launch blog |
| Beam | Not published | Cold boot 1-3s; snapshot restore | Their docs |
| Railway | No pause: idle timeout destroys the sandbox (30 min default); persistence = named checkpoints, capture time size-dependent | Boot fresh from checkpoint (time not published) | Their docs (beta) |
Two patterns worth noticing. First, snapshot persistence does its work on the way in: E2B's pause scales with RAM (a 16 GiB sandbox takes about a minute), and Blaxel's 25ms resume works because the full snapshot was already taken during a ~15-second standby transition after inactivity. Second, eight of thirteen providers don't publish the pause side at all. And a detail from Railway's docs worth knowing: idle sandboxes keep billing until the idle timeout destroys them.
Our pause has no toll in either direction for a boring reason: there is nothing to copy. The workspace is already on the disk.
4. Who's a VM, who's a container (and whose cluster are you on?)
Remember the primer: a VM per sandbox means every sandbox gets its own kernel; a container means sandboxes share the machine's kernel with thinner, faster walls. Here's who's who, from their own docs:
| Provider | Per-sandbox isolation | Tenancy |
|---|---|---|
| Nirvana | Hardened, unprivileged container, inside a VM at every node | Dedicated cluster per customer: you never share a kernel or a cluster with another company |
| E2B | Firecracker microVM | Multi-tenant, or BYOC in your AWS/GCP VPC (enterprise) |
| Vercel | Firecracker microVM, dedicated kernel | Multi-tenant |
| Blaxel | MicroVM | Multi-tenant |
| Fly Sprites | Hardware-isolated VM (Fly Machines) | Multi-tenant |
| AWS Lambda MicroVMs | Firecracker microVM | Multi-tenant (AWS account boundary) |
| Railway | Isolated virtual machine | Multi-tenant |
| Northflank | MicroVM (Kata/Firecracker) or gVisor | Multi-tenant, or your own VPC (BYOC) |
| Cloudflare | Container, each in its own VM | Multi-tenant |
| Modal | Container (gVisor); VM sandboxes in beta | Multi-tenant |
| Daytona | Container (Kata optional), or Linux VM sandboxes | Multi-tenant, or dedicated region (managed, via sales) |
| Beam | Container (gVisor + runc) | Multi-tenant, or your own cloud |
| Google GKE Agent Sandbox | gVisor | Your own GKE cluster |
Honest reading: the Firecracker camp has the strongest per-sandbox walls, a kernel per sandbox, and we won't pretend otherwise. Our answer works at a different layer: container walls around each sandbox, VM walls around each node, and then the column nobody else fills by default: a dedicated cluster for every customer. Elsewhere, dedicated infrastructure is the enterprise arrangement (E2B's BYOC, Daytona's dedicated regions); here it's just how every account works.
And the checklist questions the comparison posts always ask, answered from the same docs. Where a capability doesn't appear in a provider's sandbox documentation, we say "not in their docs" instead of guessing:
Table 5: The checklist questions
| Provider | GPUs in the sandbox | BYOC | Part of a bigger platform? |
|---|---|---|---|
| Nirvana | CPU environments today | No, by design: a dedicated cluster on our cloud instead | Yes: same cloud as our instances, block storage, and managed Kubernetes |
| E2B | Not in their sandbox docs | Yes: BYOC in your AWS or GCP VPC (enterprise) | Sandbox-first |
| Daytona | Yes (GPU pricing published: H100, H200, RTX classes) | Dedicated regions (managed) and customer-managed runners | Sandbox-first |
| Modal | Yes, though not with memory snapshots enabled | No, managed only | Yes: functions, inference, batch |
| Vercel | Not in their sandbox docs | No, managed only | Yes: frontend cloud |
| Blaxel | Not in their docs | No, managed only | Sandbox-first, plus agent networking and a model gateway |
| Cloudflare | Not in their sandbox docs | No, managed only | Yes: Workers platform |
| Northflank | Yes, self-serve GPU plans | Yes, self-serve across major clouds and on-prem | Yes: full workload runtime |
| Fly Sprites | Not on Sprites | No, managed only | Yes: Fly.io platform |
| Beam | Yes | Yes: open-source runtime, run it in your own cloud | Yes: serverless platform |
| Railway | Not in their sandbox docs | No, managed only | Yes: full PaaS |
| AWS Lambda MicroVMs | No (Lambda) | It is your AWS account | Yes, obviously |
| Google GKE Agent Sandbox | Via GKE node pools | It runs in your GKE cluster | Yes, obviously |
Two notes on that table. On BYOC: people usually want it for isolation and compliance. We deliberately went the other way: every customer gets a dedicated cluster on our cloud, which covers the isolation outcome BYOC buyers are after, without operating the infrastructure yourself. (To be fair to BYOC: it also buys your own cloud account, IAM, network governance, and data residency, which a managed dedicated cluster doesn't.) And on the platform column: notice almost everyone answers yes. "Full platform" isn't the differentiator the listicles claim; the real differences live in the three tables above.
5. Compliance, quickly
SOC 2 is table stakes at the top of this market: Nirvana (Type II), E2B (Type II + HIPAA, per their trust center), Vercel (Type II, stated in their sandbox docs), Modal, Blaxel, Northflank, Fly.io, Cloudflare, and AWS all hold audits. Daytona's trust center shows a confirmed Type 1 audit opinion. What nobody else offers as the default: a dedicated cluster for every customer, not an enterprise add-on. Your sandboxes never share a kernel or a cluster with another company. The audit speaks to the controls; the dedicated cluster means there is less shared surface for those controls to defend.
6. The recipe: persistent, even for disposable jobs
If resume is instant, there's a new way of using persistent sandboxes, and we recommend trying it if it fits your use case: run them even for disposable jobs. Boot once, pause, and every job after starts with a resume instead of a boot.
Because the speed is already there, the main consideration is cost, and it's small: you pay for storage while paused, not compute, plus a workspace wipe between runs. (The wipe is real work: reusing a sandbox means cleaning state and secrets between jobs, and one workspace serves one job at a time.) The one exception is fan-out. Resume is one-to-one, one sandbox wakes into one workspace, while snapshot systems can fork one image into many copies. So parallel bursts still want ephemeral creates.
The takeaway
"Persistent" now appears on every spec sheet in this market because companies are building persistent agents, and persistent agents need persistent sandboxes.
Under this AI boom, the bottom line is what the compute actually costs you. Apart from dollars, there's speed (the pause toll you pay on every checkpoint), expiry (snapshots that age out from under your agents), and trust (whose kernel your workloads share).
We built ours as a disk that's just still there, because that's the version with the fewest costs attached: no pause toll, no restore step, no expiry to babysit. If your agents checkpoint and continue, that difference compounds on every single cycle.
Get in touch if you want to build faster and cheaper AI agents, or read the documentation for API examples.
Vendor-reported figures from official documentation and engineering posts; definitions and percentiles differ between vendors, so treat cross-vendor comparisons as directional. First verified July 10, 2026; re-checked August 13, 2026. Platforms move fast; if your docs have changed or we've mischaracterized something, email us and we'll correct it with a changelog note.
About Nirvana Labs
Nirvana Labs is a high-performance storage cloud purpose built for blockchain, AI and databases i.e. the most demanding, real-time, stateful workloads. Accelerated Block Storage (ABS) offers 20K baseline IOPS included, no over provisioning. Nirvana Kubernetes Service (NKS) with Karpenter auto-scaling, high clock-speed compute and private networking. Backed by Jump Trading, Crucible, etc with 50+ customers live in production today.
Learn more at Nirvana Labs
Nirvana Cloud | Pricing | Blog | Docs | Changelog | LinkedIn |Twitter | Telegram| YouTube