# Overview (/docs/providers)



Every provider supports files, foreground commands, background processes, streaming, and cleanup. Choose based on the optional behavior your workload needs.

| Provider                                 | Best for                      | Runtime         | Persistence    | Preview                 | Snapshot             |
| ---------------------------------------- | ----------------------------- | --------------- | -------------- | ----------------------- | -------------------- |
| [Local](/docs/providers/local)           | Development, CI, self-hosting | AgentOS VM      | Process-scoped | Private bridge          | Filesystem + restore |
| [E2B](/docs/providers/e2b)               | Hosted coding agents          | Linux sandbox   | Ephemeral      | Authenticated           | Template             |
| [Daytona](/docs/providers/daytona)       | Persistent workspaces, GPUs   | Linux workspace | Persistent     | Public or authenticated | Native API           |
| [Vercel Sandbox](/docs/providers/vercel) | Vercel workloads and previews | Linux sandbox   | Optional       | Public                  | Filesystem           |
| [Upstash Box](/docs/providers/upstash)   | Durable serverless boxes      | Linux container | Persistent     | Public or bearer token  | Filesystem           |

Optional semantics differ. Check the generated [compatibility matrix](/docs/reference/compatibility) before depending on stdin, restore, resume, networking, GPUs, or a custom image.

## Switch with one import [#switch-with-one-import]

```ts title="provider.ts"
import { withSandbox } from "@opencoredev/sandbox-sdk";
import { e2b } from "@opencoredev/sandbox-sdk/e2b";

await withSandbox({ provider: e2b() }, async (sandbox) => {
  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](/docs/integrations/ai-sdk), [Eve](/docs/integrations/eve), or [Mastra](/docs/integrations/mastra).
