Give your agent a sandbox.
Add an isolated sandbox to your app with one import. Commands, files, and git on 13 providers.
Install
bun add @opencoredev/sandbox-sdkOne package, every adapter included
Create
await using box = await createSandbox(e2b())Deleted when the scope exits
Run
await box.$`bun test`Commands, files, and git inside the VM
Local, cloud, or in-memory.
Develop on your machine with Docker, test in memory, ship to E2B, Daytona, Vercel, Upstash, Railway, Tenki and more. The API stays the same.
Swap the adapter, keep the code.
Every adapter passes the same conformance suite. Moving providers is an import change, not a rewrite.
Run commands
Shell commands with safe interpolation, streamed output and timeouts. A non-zero exit comes back as ok: false, not a throw.
Move files and repos
Read, write, edit, search, upload and watch files. Clone and push with the token kept out of logs.
Control the lifecycle
Create, reconnect by id, list what is running, pause, snapshot or destroy. Each adapter declares what it supports.
Tests run in-process.
memory() keeps the sandbox API inside your test process. Nothing to boot, nothing to pay for.
- The same API as the cloud adapters
- No API key and no network in CI
- Files, commands and processes, all in memory