Providers
Overview
Compare Sandbox SDK providers by runtime, persistence, previews, and snapshots.
Every provider supports files, foreground commands, and cleanup. Background processes, streaming, previews, and snapshots vary; check capabilities before depending on them.
| Provider | Vendor documentation | Best for | Runtime | Persistence | Preview | Snapshot |
|---|---|---|---|---|---|---|
| Local | Official docs | Development, CI, self-hosting | AgentOS VM | Process-scoped | Private bridge | Filesystem + restore |
| E2B | Official docs | Hosted coding agents | Linux sandbox | Ephemeral | Authenticated | Template |
| Daytona | Official docs | Persistent workspaces, GPUs | Linux workspace | Persistent | Public or authenticated | Native API |
| Vercel Sandbox | Official docs | Coding agents, persistent workspaces | Linux sandbox | Default on | Public | Filesystem |
| Upstash Box | Official docs | Durable serverless boxes | Linux container | Persistent | Public or bearer token | Filesystem |
| Ascii Box | Official docs | Full cloud VMs and app previews | Linux VM | Persistent | Public by default | Native lifecycle |
| Railway | Official docs | Durable jobs and private networking | Linux VM | Until cleanup | CLI tunnel only | Checkpoint |
Optional semantics differ. Check the generated compatibility matrix before depending on stdin, restore, resume, networking, GPUs, or a custom image.
Switch with one import
import { createSandbox } from "@opencoredev/sandbox-sdk";
import { e2b } from "@opencoredev/sandbox-sdk/e2b";
await using sandbox = await createSandbox({ provider: e2b() });
console.log((await sandbox.run("node --version")).stdout);Only provider creation changes. The sandbox calls stay the same, and the provider object can also be passed to AI SDK, Eve, or Mastra.