sandbox-agent
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSandbox Agent
Sandbox Agent
Sandbox Agent provides a universal API for orchestrating AI coding agents in sandboxed environments.
Sandbox Agent 提供了一个通用API,用于在沙箱环境中编排AI编码代理。
What To Do If You Get Stuck
遇到问题该怎么办
If something is not working as intended or you are stuck, prompt the user to join the Rivet Discord or file an issue on GitHub to report an issue and get help.
Provide the user with a pre-generated report with:
- Symptoms
- If this is happening in local dev, deployed, or both
- The error you're seeing
- Relevant source code related to this
- What you've tried to solve it
- Environment
- Sandbox Agent version
- SDK in use (TypeScript, Python, or HTTP)
- Agent in use (Claude Code, Codex, OpenCode, Amp, Mock)
- Sandbox provider (E2B, Daytona, Docker, local)
如果功能未按预期运行或您遇到瓶颈,请引导用户加入Rivet Discord或在GitHub提交问题以获取帮助。
请为用户提供一份预生成的报告,包含以下内容:
- 症状
- 问题是出现在本地开发环境、部署环境,还是两者皆有
- 您遇到的错误信息
- 相关的源代码
- 您已尝试的解决方法
- 环境信息
- Sandbox Agent版本
- 使用的SDK(TypeScript、Python或HTTP)
- 使用的代理(Claude Code、Codex、OpenCode、Amp、Mock)
- 沙箱提供商(E2B、Daytona、Docker、本地)
Quickstart
快速开始
Install skill (optional)
安装Skill(可选)
bash
npx skills add rivet-dev/skills -s sandbox-agentbash
npx skills add rivet-dev/skills -s sandbox-agentSet environment variables
设置环境变量
Each coding agent requires API keys to connect to their respective LLM providers.
每个编码代理都需要API密钥来连接对应的大语言模型提供商。
Local shell
本地Shell
bash
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."bash
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."E2B
E2B
typescript
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 });typescript
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
Daytona
typescript
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,
});typescript
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
bash
docker run -e ANTHROPIC_API_KEY="sk-ant-..." \
-e OPENAI_API_KEY="sk-..." \
your-imagebash
docker run -e ANTHROPIC_API_KEY="sk-ant-..." \
-e OPENAI_API_KEY="sk-..." \
your-imageExtracting API keys from current machine
从当前机器提取API密钥
Use to extract your existing API keys (Anthropic, OpenAI, etc.) from your existing Claude Code or Codex config files on your machine.
sandbox-agent credentials extract-env --export使用从您机器上现有的Claude Code或Codex配置文件中提取已有的API密钥(Anthropic、OpenAI等)。
sandbox-agent credentials extract-env --exportTesting without API keys
无需API密钥进行测试
If you want to test Sandbox Agent without API keys, use the agent to test the SDK without any credentials. It simulates agent responses for development and testing.
mock如果您想在没有API密钥的情况下测试Sandbox Agent,可以使用代理来测试SDK,无需任何凭据。它会模拟代理响应,用于开发和测试。
mockRun the server
运行服务器
curl
curl
Install and run the binary directly.
bash
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直接安装并运行二进制文件。
bash
curl -fsSL https://releases.rivet.dev/sandbox-agent/latest/install.sh | sh
sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468npx
npx
Run without installing globally.
bash
npx sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468无需全局安装即可运行。
bash
npx sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468npm i -g
npm i -g
Install globally, then run.
bash
npm install -g @sandbox-agent/cli
sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468全局安装后运行。
bash
npm install -g @sandbox-agent/cli
sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468Build from source
从源码构建
If you're running from source instead of the installed CLI.
bash
cargo run -p sandbox-agent -- server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468如果您使用源码而非已安装的CLI运行。
bash
cargo run -p sandbox-agent -- server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468TypeScript (local)
TypeScript(本地)
For local development, use to automatically spawn and manage the server as a subprocess.
SandboxAgent.start()typescript
import { SandboxAgent } from "sandbox-agent";
const client = await SandboxAgent.start();This installs the binary and starts the server for you. No manual setup required.
对于本地开发,使用自动生成并将服务器作为子进程管理。
SandboxAgent.start()typescript
import { SandboxAgent } from "sandbox-agent";
const client = await SandboxAgent.start();这会为您安装二进制文件并启动服务器,无需手动设置。
Running without tokens
无令牌运行
If endpoint is not public, use to disable authentication. Most sandbox providers already secure their networking, so tokens are not required.
--no-token如果端点不公开,使用禁用身份验证。大多数沙箱提供商已确保网络安全,因此不需要令牌。
--no-tokenCORS
CORS
If you're calling the server from a browser, see the CORS configuration guide.
如果您从浏览器调用服务器,请查看CORS配置指南。
Install agents (optional)
安装代理(可选)
To preinstall agents:
bash
sandbox-agent install-agent claude
sandbox-agent install-agent codex
sandbox-agent install-agent opencode
sandbox-agent install-agent ampIf agents are not installed up front, they will be lazily installed when creating a session. It's recommended to pre-install agents then take a snapshot of the sandbox for faster coldstarts.
要预安装代理:
bash
sandbox-agent install-agent claude
sandbox-agent install-agent codex
sandbox-agent install-agent opencode
sandbox-agent install-agent amp如果未预先安装代理,它们会在创建会话时自动安装。建议预先安装代理,然后对沙箱进行快照,以加快冷启动速度。
Create a session
创建会话
TypeScript
TypeScript
typescript
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",
});typescript
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
bash
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"}'bash
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
CLI
bash
sandbox-agent api sessions create my-session \
--agent claude \
--endpoint http://127.0.0.1:2468 \
--token "$SANDBOX_TOKEN"bash
sandbox-agent api sessions create my-session \
--agent claude \
--endpoint http://127.0.0.1:2468 \
--token "$SANDBOX_TOKEN"Send a message
发送消息
TypeScript
TypeScript
typescript
await client.postMessage("my-session", {
message: "Summarize the repository and suggest next steps.",
});typescript
await client.postMessage("my-session", {
message: "Summarize the repository and suggest next steps.",
});curl
curl
bash
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."}'bash
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
CLI
bash
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"bash
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"Read events
读取事件
TypeScript
TypeScript
typescript
// 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);
}typescript
// 轮询事件
const events = await client.getEvents("my-session", { offset: 0, limit: 50 });
// 或流式传输事件
for await (const event of client.streamEvents("my-session", { offset: 0 })) {
console.log(event.type, event.data);
}curl
curl
bash
undefinedbash
undefinedPoll for events
轮询事件
curl "http://127.0.0.1:2468/v1/sessions/my-session/events?offset=0&limit=50"
-H "Authorization: Bearer $SANDBOX_TOKEN"
-H "Authorization: Bearer $SANDBOX_TOKEN"
curl "http://127.0.0.1:2468/v1/sessions/my-session/events?offset=0&limit=50"
-H "Authorization: Bearer $SANDBOX_TOKEN"
-H "Authorization: Bearer $SANDBOX_TOKEN"
Stream events via SSE
通过SSE流式传输事件
curl "http://127.0.0.1:2468/v1/sessions/my-session/events/sse?offset=0"
-H "Authorization: Bearer $SANDBOX_TOKEN"
-H "Authorization: Bearer $SANDBOX_TOKEN"
curl "http://127.0.0.1:2468/v1/sessions/my-session/events/sse?offset=0"
-H "Authorization: Bearer $SANDBOX_TOKEN"
-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"}'
-H "Authorization: Bearer $SANDBOX_TOKEN"
-H "Content-Type: application/json"
-d '{"message":"Hello"}'
undefinedcurl -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"}'
-H "Authorization: Bearer $SANDBOX_TOKEN"
-H "Content-Type: application/json"
-d '{"message":"Hello"}'
undefinedCLI
CLI
bash
undefinedbash
undefinedPoll for events
轮询事件
sandbox-agent api sessions events my-session
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
sandbox-agent api sessions events my-session
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
Stream events via SSE
通过SSE流式传输事件
sandbox-agent api sessions events-sse my-session
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
sandbox-agent api sessions events-sse my-session
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
--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"
--message "Hello"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
undefinedsandbox-agent api sessions send-message-stream my-session
--message "Hello"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
--message "Hello"
--endpoint http://127.0.0.1:2468
--token "$SANDBOX_TOKEN"
undefinedTest with Inspector
使用Inspector测试
Open the Inspector UI to inspect session state using a GUI.

打开Inspector UI,通过GUI查看会话状态。

Next steps
后续步骤
-
Build a Chat UI — Learn how to build a chat interface for your agent.
-
Manage Sessions — Persist and replay agent transcripts.
-
Deploy to a Sandbox — Deploy your agent to E2B, Daytona, or Vercel Sandboxes.
Reference Map
参考地图
AI
AI
- llms.txt
- skill.md
- llms.txt
- skill.md
Deploy
部署
- Daytona
- Deploy
- Docker
- E2B
- Local
- Daytona
- Deploy
- Docker
- E2B
- Local
General
通用
- Agent Compatibility
- Building a Chat UI
- CLI Reference
- Conversion
- CORS Configuration
- Inspector
- Manage Sessions
- Quickstart
- Telemetry
- Troubleshooting
- Universal Schema
- Agent Compatibility
- Building a Chat UI
- CLI Reference
- Conversion
- CORS Configuration
- Inspector
- Manage Sessions
- Quickstart
- Telemetry
- Troubleshooting
- Universal Schema
SDKs
SDKs
- Python
- TypeScript
- Python
- TypeScript