sandboxd
在自有服务器上让编码代理构建并预览真实应用。
这个 Agent 能做什么,适合哪些场景?
sandboxd 是一个自托管的开源 AI 应用构建引擎:它在服务器上为每个应用创建隔离容器,并提供独立的预览 URL。核心由一个 Go 程序驱动 Docker,使用 Traefik 路由 URL,并以 SQLite 保存状态;无需 Kubernetes、独立数据库或队列。它提供可脚本化的 /v1 HTTP API,以及作为纯 API 客户端的可选 Web 控制台。控制台可创建应用、与编码代理对话、查看实时预览、编辑文件、审阅 Git diff,并提交和推送代码。空闲沙箱会休眠,并在请求到达时唤醒;项目处于 Beta 0.x 阶段,定位为单服务器部署。
调用方通过 /v1 API 创建 sandbox,指定如 3000 的端口,然后向 /v1/sandboxes/$ID/tasks 提交 prompt 和 agent,例如 opencode。sandboxd 启动具有独立文件系统与资源限制的 Docker 容器,在其中运行编码代理,并为应用输出预览 URL。它还支持在控制台中从 React/Vite、Next.js、FastAPI 等运行时预设启动项目,导入公开 Git 仓库,或一键运行精选开源应用。内置 OpenCode 与 Claude Code;凭据由代理在网络链路中注入,而非进入沙箱。任务可检查点化和回退,并提供快照、fork、恢复、进程日志、活动时间线、文件编辑及 Git 提交/推送功能。
- 正在构建 AI 应用生成产品的团队,需要为每位用户或每个项目分配可访问预览地址的隔离环境。
- 开发者平台团队要把 /v1 API 接入自己的产品,让编码代理根据用户提示创建和迭代应用。
- 需要为分支或临时项目提供预览环境的工程团队,并希望空闲应用自动休眠。
- 自托管用户希望从浏览器启动 Ghost、n8n、Grafana 或其他精选应用,而不逐一编写容器启动流程。
- 维护公开 Git 仓库的开发者希望导入仓库,让编码代理修改代码、查看 diff,并从控制台提交推送。
这个 Agent 有哪些优点和局限?
- 每个应用运行在独立 Docker 容器中,并获得独立预览 URL,适合多应用和多用户场景。
- 空闲沙箱支持休眠与按需唤醒,可在单台普通服务器上承载多个应用。
- 同时提供 /v1 API 和纯 API 客户端式 Web 控制台,既可嵌入产品,也可无代码操作。
- 集成文件编辑、Git diff、提交推送、快照、fork、恢复、任务回退和进程日志,覆盖应用迭代后的常见操作。
- 凭据通过代理在网络链路中注入,文档明确说明不会进入沙箱。
- 项目明确标注为 Beta 0.x,1.0 前可能发生破坏性变更,采用时应固定版本并逐步升级。
- 隔离方式是容器而非虚拟机;面向不受信任的多租户部署前需要额外加固。
- API 认证默认关闭,文档明确建议在面向不受信任用户前进行安全收紧。
- 部署边界是单台服务器,需要自行准备 Linux、Docker、Docker Compose plugin 和 Git;macOS 仅为 best-effort。
- 内置代理文档只明确列出 OpenCode 与 Claude Code,其他代理或模型提供商的接入方式未在给定材料中说明。
如何安装或部署这个 Agent?
在具备 Docker、Docker Compose plugin 和 Git 的 Linux 主机上运行:
curl -fsSL https://raw.githubusercontent.com/tastyeffectco/sandboxd/main/install.sh | bash
安装会构建镜像、启动包含 Web 控制台的服务,并输出控制台 URL 与生成的登录信息。默认 API 为 http://127.0.0.1:9090;可用 curl http://127.0.0.1:9090/healthz 验证。控制台默认地址为 http://console.localhost;若遗失登录信息,运行 ./console-login.sh。macOS 通过 Docker Desktop 属于 best-effort 支持;项目说明原生支持 amd64 与 arm64。
如何使用这个 Agent?
先在控制台的 Settings 中连接代理,或通过 API 配置 Claude Code 凭据。以下命令创建一个暴露 3000 端口的沙箱,并让 OpenCode 构建待办应用;将 sk-ant-... 替换为有效密钥:
API=http://127.0.0.1:9090
curl -s -XPOST $API/v1/agents/claude-code/api-key -d '{"api_key":"sk-ant-..."}'
ID=$(curl -s -XPOST $API/sandbox -d '{"ports":[3000]}' | sed -E 's/.*"id":"([^"]+)".*/\1/')
curl -s -XPOST $API/v1/sandboxes/$ID/tasks -d '{"prompt":"build a todo app on port 3000","agent":"opencode"}'
完成后在 http://s-$ID-3000.preview.localhost 打开预览。若只需 API 服务,可用 SANDBOXD_CONSOLE=0 或 --no-console 关闭控制台。
这个 Agent 与同类方案有什么区别?
README 将 sandboxd 对比为 Lovable、Bolt、v0 和 Replit 这类“输入提示后生成可运行网站”的体验所依赖的自托管引擎。差异在于 sandboxd 将容器、基础设施、代码和数据部署在你的服务器上,并通过 API 或本地控制台管理,而非把这些执行边界描述为托管产品服务。