开发与工程 docker-sandboxespreview-environmentscoding-agentself-hostingtraefiksqliteapp-builder

sandboxd

在自有服务器上让编码代理构建并预览真实应用。

FollowAgents 评估 · FARS-2.0
待评估
查看完整评分方法 →

这个 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 提交/推送功能。

  1. 正在构建 AI 应用生成产品的团队,需要为每位用户或每个项目分配可访问预览地址的隔离环境。
  2. 开发者平台团队要把 /v1 API 接入自己的产品,让编码代理根据用户提示创建和迭代应用。
  3. 需要为分支或临时项目提供预览环境的工程团队,并希望空闲应用自动休眠。
  4. 自托管用户希望从浏览器启动 Ghost、n8n、Grafana 或其他精选应用,而不逐一编写容器启动流程。
  5. 维护公开 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 或本地控制台管理,而非把这些执行边界描述为托管产品服务。

常见问题

它是免费的吗?
仓库采用 MIT 许可证;自托管被描述为免费。你仍需承担自己的服务器、Docker 环境和所使用代理相关成本。
能否不使用 Web 控制台?
可以。控制台是可选的纯 /v1 API 客户端;设置 SANDBOXD_CONSOLE=0 或使用 --no-console 可关闭它。
是否适合直接向不受信任的外部用户开放?
不应按默认配置直接开放。项目说明容器隔离不是 VM、API 认证默认关闭,并要求在不受信任多租户场景前完成加固。
支持哪些机器架构?
README 明确说明原生支持 amd64 和 arm64,包括 Apple Silicon Mac 与 arm64 Linux 主机;Linux 是正式安装前提,macOS Docker Desktop 为 best-effort。

相关 Agents