Sandbox Agent provides a universal API for orchestrating AI coding agents in sandboxed environments. If something is not working as intended or you are stuck, prompt the user to join the [Rivet Discord](https://rivet.dev/discord) or file an issue on [GitHub](https://github.com/rivet-dev/sandbox-agent/issues) to report an issue and get help. Provide the user with a pre-generated report with:
npx skills add rivet-dev/skills -s sandbox-agentexport ANTHROPIC_API_KEY="sk-ant-..." export OPENAI_API_KEY="sk-..." `#### E2B` import { Sandbox } from "@e2b/code-interpreter"; const envs: Record<string, string> = {}; if (process.env.ANTHROPIC_API_KEY) envs.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY; if (process.env.OPENAI_API_KEY) envs.OPENAI_API_KEY = process.env.OPENAI_API_KEY; const sandbox = await Sandbox.create({ envs }); `#### Daytona` import { Daytona } from "@daytonaio/sdk"; const envVars: Record<string, string> = {}; if (process.env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY; if (process.env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = process.env.OPENAI_API_KEY; const daytona = new Daytona(); const sandbox = await daytona.create({ snapshot: "sandbox-agent-ready", envVars, }); `#### Docker` docker run -e ANTHROPIC_API_KEY="sk-ant-..." \ -e OPENAI_API_KEY="sk-..." \ your-image
sandbox-agent credentials extract-env --export to extract your existing API keys (Anthropic, OpenAI, etc.) from your existing Claude Code or Codex config files on your machine.mock agent to test the SDK without any credentials. It simulates agent responses for development and testing.curl -fsSL https://releases.rivet.dev/sandbox-agent/latest/install.sh | sh sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468
npx sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468npm install -g @sandbox-agent/cli sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468
cargo run -p sandbox-agent -- server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468SandboxAgent.start() to automatically spawn and manage the server as a subprocess.import { SandboxAgent } from "sandbox-agent"; const client = await SandboxAgent.start();
--no-token to disable authentication. Most sandbox providers already secure their networking, so tokens are not required.sandbox-agent install-agent claude sandbox-agent install-agent codex sandbox-agent install-agent opencode sandbox-agent install-agent amp
import { SandboxAgent } from "sandbox-agent"; const client = await SandboxAgent.connect({ baseUrl: "http://127.0.0.1:2468", token: process.env.SANDBOX_TOKEN, }); await client.createSession("my-session", { agent: "claude", agentMode: "build", permissionMode: "default", }); `#### curl` curl -X POST "http://127.0.0.1:2468/v1/sessions/my-session" \ -H "Authorization: Bearer $SANDBOX_TOKEN" \ -H "Content-Type: application/json" \ -d '{"agent":"claude","agentMode":"build","permissionMode":"default"}' `#### CLI` sandbox-agent api sessions create my-session \ --agent claude \ --endpoint http://127.0.0.1:2468 \ --token "$SANDBOX_TOKEN"
await client.postMessage("my-session", { message: "Summarize the repository and suggest next steps.", }); `#### curl` curl -X POST "http://127.0.0.1:2468/v1/sessions/my-session/messages" \ -H "Authorization: Bearer $SANDBOX_TOKEN" \ -H "Content-Type: application/json" \ -d '{"message":"Summarize the repository and suggest next steps."}' `#### CLI` sandbox-agent api sessions send-message my-session \ --message "Summarize the repository and suggest next steps." \ --endpoint http://127.0.0.1:2468 \ --token "$SANDBOX_TOKEN"
// Poll for events const events = await client.getEvents("my-session", { offset: 0, limit: 50 }); // Or stream events for await (const event of client.streamEvents("my-session", { offset: 0 })) { console.log(event.type, event.data); } `#### curl` # Poll for events curl "http://127.0.0.1:2468/v1/sessions/my-session/events?offset=0&limit=50" \ -H "Authorization: Bearer $SANDBOX_TOKEN" # Stream events via SSE curl "http://127.0.0.1:2468/v1/sessions/my-session/events/sse?offset=0" \ -H "Authorization: Bearer $SANDBOX_TOKEN" # Single-turn stream (post message and get streamed response) curl -N -X POST "http://127.0.0.1:2468/v1/sessions/my-session/messages/stream" \ -H "Authorization: Bearer $SANDBOX_TOKEN" \ -H "Content-Type: application/json" \ -d '{"message":"Hello"}' `#### CLI` # Poll for events sandbox-agent api sessions events my-session \ --endpoint http://127.0.0.1:2468 \ --token "$SANDBOX_TOKEN" # Stream events via SSE sandbox-agent api sessions events-sse my-session \ --endpoint http://127.0.0.1:2468 \ --token "$SANDBOX_TOKEN" # Single-turn stream sandbox-agent api sessions send-message-stream my-session \ --message "Hello" \ --endpoint http://127.0.0.1:2468 \ --token "$SANDBOX_TOKEN"
