# Sandbox Sdk

> Use when implementing isolated code execution with @opencoredev/sandbox-sdk, choosing a provider, or working with sandbox files, commands, processes, ports, and snapshots.

- Skill: `opencoredev/sandbox-sdk` (Agent Skill)
- Install (CLI): `npx skillmds@latest add opencoredev/sandbox-sdk`
- Raw SKILL.md: https://api.skillmd.com/api/skills/opencoredev/sandbox-sdk/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: opencoredev (https://skillmd.com/u/opencoredev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/opencoredev/sandbox-sdk

---


# Sandbox SDK

Use one normalized TypeScript interface across Local, E2B, Daytona, Vercel Sandbox, Upstash Box, Ascii Box, and Railway Sandboxes.

## Start here

1. Fetch `https://sandbox-sdk.app/llms.txt` to find the current documentation.
2. Read the Quickstart and exactly one provider page.
3. Read a focused API or integration page only when the task needs it.

## Default implementation

```ts
import { createSandbox } from "@opencoredev/sandbox-sdk";
import { local } from "@opencoredev/sandbox-sdk/local";

await using sandbox = await createSandbox({ provider: local() });
const result = await sandbox.run("node --version");
console.log(result.stdout);
```

## Rules

- Prefer `await using sandbox = await createSandbox(...)` so the sandbox stops automatically when its scope exits.
- Use `withSandbox()` when callback-style lifecycle management is required or uncompiled JavaScript runs on Node.js 22.
- Use Local when no hosted runtime is required. Select a cloud provider from the compatibility table when persistence, previews, native Linux, GPUs, or provider-specific features matter.
- Use `sandbox.files`, `sandbox.run`, `sandbox.processes`, `sandbox.ports`, and `sandbox.snapshots` before native SDK methods.
- Check `sandbox.capabilities` or use `requireCapability()` before optional operations.
- Access provider-specific APIs through the typed `sandbox.raw` escape hatch.
- Put `sandbox.stop()` in `finally` only when the sandbox must outlive an `await using` scope.
- Treat preview URLs, environment variables, credentials, and untrusted commands as security boundaries owned by the application.
- Do not assume optional behavior is portable. Verify it in `https://sandbox-sdk.app/docs/reference/compatibility`.

## Focused Markdown

Fetch one page with:

`https://sandbox-sdk.app/llms.mdx/docs/{path}/content.md`

Use `https://sandbox-sdk.app/llms-full.txt` only when the task genuinely needs the entire documentation set.

