
目录前言一、什么是 Tupper二、环境准备三、快速上手四、架构解析五、实际应用场景六、项目生态与路线图七、总结前言用 AI 写代码越来越爽了——Claude Code、Codex、Cursor 这些工具动不动就给你生成几百行代码甚至直接帮你跑测试、改 bug。但有个老大难问题这些 AI 生成的代码你敢直接跑吗尤其是当你用 AI Agent 做自动化任务时Agent 可能会生成包含 rm -rf、网络请求、文件写入等危险操作的代码。E2B、Modal 这些商业沙箱服务虽然能解决安全问题但要么收费要么代码跑在别人的服务器上数据隐私让人心里打鼓。今天 GitHub 上冒出一个新项目——Tupper一个开源的 AI Agent 沙箱让你在自己的机器上安全运行 AI 生成的代码。项目刚发布两天就拿了 123 个 StarMIT 协议TypeScript 编写支持 macOSApple Containers、LinuxFirecracker、WindowsWSL三大平台。这篇文章就来手把手带你了解 Tupper看看它怎么解决 AI Agent 的代码安全问题以及怎么在你的项目里用上它。一、什么是 TupperTupper 是一个开源的 AI Agent 沙箱解决方案由 lightbearco 开发。它的核心定位很明确给 AI Agent 一个隔离的执行环境让 Agent 能安全地执行代码、运行 shell 命令、读写文件——而不会危及宿主机。简单来说Tupper 就是一个自托管的 E2B 替代品。E2B 是目前最流行的 AI Agent 代码执行沙箱但它是商业服务代码跑在 E2B 的服务器上。Tupper 把同样的能力搬到了你自己的机器上。核心特性特性 说明E2B 风格 SDK Sandbox.create()、commands.run()、files.*API 和 E2B 几乎一样迁移零成本跨平台 macOS 用 Apple ContainersLinux 用 FirecrackerWindows 用 WSL自托管 代码跑在自己机器上数据不出本地隐私无忧Agent 框架集成 内置 deepagents、Mastra 的沙箱后端还有 MCP Server、CLI、HTTP API轻量核心 核心依赖只有 Zod源码只用 Node 内置模块Node/Bun 都能跑和 E2B 的对比对比项 E2B Tupper部署方式 云端 SaaS 自托管本地机器费用 按使用量收费 免费MIT 协议数据隐私 代码经过 E2B 服务器 数据完全不出本地网络延迟 有网络开销 本地执行零网络延迟定制能力 受限 完全可控可二次开发适用场景 快速上手、不想运维 隐私敏感、需要深度定制二、环境准备Tupper 目前主要支持 macOS 26Apple Containers 后端Linux 和 Windows 支持还在开发中。系统要求macOS 26需要 Apple 的 container CLINode.js 18 或 Bun 1.1安装步骤第一步安装 Apple ContainersmacOS 26# 启动 container 服务只需执行一次container system start⚠️ 注意Apple Containers 是 macOS 26Sequoia引入的新特性如果你的系统版本低于 macOS 26暂时无法使用默认后端。第二步安装 Tupper SDK# 使用 Bunbun add tupper/sdk tupper/container# 使用 npmnpm install tupper/sdk tupper/container 提示tupper/container 是可选的 peer dependency只在 macOS 上使用。如果你用 Node.jstupper/sdk 就够了。三、快速上手3.1 最简示例Tupper 的 API 设计非常简洁和 E2B 几乎一样。下面是一个完整的示例import { Sandbox } from tupper/sdk;// 创建一个沙箱基于 Alpine Linux 镜像const box await Sandbox.create({image: docker.io/library/alpine:latest});try {// 在沙箱里写文件await box.files.write(/tmp/hi.txt, hello from Tupper!);// 在沙箱里执行命令const res await box.commands.run(cat /tmp/hi.txt);console.log(res.stdout); // 输出: hello from Tupper!// 执行更复杂的命令const nodeRes await box.commands.run(node -e \console.log(2 2)\);console.log(nodeRes.stdout); // 输出: 4} finally {// 清理沙箱await box.kill();}就这么几行代码你就有了一个完全隔离的代码执行环境。AI Agent 生成的任何代码都可以在这个沙箱里安全运行。3.2 在 AI Agent 中使用Tupper 内置了对 deepagents 和 Mastra 两个主流 Agent 框架的支持。以 Mastra 为例import { TupperSandbox } from tupper/sdk;import { mastra } from mastra/core;// 创建 Tupper 沙箱后端const sandbox new TupperSandbox();// 在 Agent 工具中使用const agent mastra.ai.agent({name: code-executor,instructions: 执行用户提供的代码并返回结果,tools: {executeCode: sandbox.tool(), // 直接作为工具注入},});// 使用 Agentconst result await agent.generate(帮我计算 1 到 100 的和);console.log(result.text);3.3 使用 MCP ServerTupper 还提供了 Model Context Protocol (MCP) Server可以直接在支持 MCP 的客户端如 Claude Desktop、Cursor中使用# 安装 CLInpm install -g tupper/cli# 启动 MCP Servertupper mcp然后在 Claude Desktop 的 claude_desktop_config.json 中配置{mcpServers: {tupper: {command: tupper,args: [mcp]}}}这样 Claude 就能直接调用 Tupper 沙箱执行代码了。四、架构解析Tupper 的架构设计非常精巧采用了后端自动选择的机制┌─────────────────────────────────────────────────┐│ tupper/sdk ││ E2B 风格 API 层 ││ Sandbox.create() → commands.run() → files.* │├─────────────────────────────────────────────────┤│ tupper/core ││ 后端无关的沙箱抽象 Zod 类型 ││ 自动选择适合当前平台的后端 │├──────────────┬──────────────┬───────────────────┤│ tupper/ │ tupper/ │ tupper/wsl ││ container │ firecracker │ Windows ││ (macOS) │ (Linux) │ 计划中 │└──────────────┴──────────────┴───────────────────┘关键设计亮点1. 后端自注册导入后端包时自动注册tupper/core 根据当前平台自动选择。换平台不需要改代码。2. Zod 类型安全所有 API 都有严格的 Zod schema 校验TypeScript 开发体验极佳。3. 零运行时依赖核心包只依赖 Zod源码只用 Node.js 内置模块没有 Bun.* API所以 Node 和 Bun 都能跑。五、实际应用场景场景 1AI 代码审查 Agent让 AI Agent 生成的代码在沙箱里跑测试只有通过测试的代码才合并const box await Sandbox.create({ image: node:20-alpine });// 把 AI 生成的代码写入沙箱await box.files.write(/app/index.js, aiGeneratedCode);await box.files.write(/app/test.js, testCode);// 在沙箱里跑测试const result await box.commands.run(cd /app npm test);if (result.exitCode 0) {console.log(✅ 测试通过代码安全);} else {console.log(❌ 测试失败需要修复);console.log(result.stderr);}await box.kill();场景 2AI 数据分析助手用户上传数据文件AI Agent 在沙箱里用 Python 分析const box await Sandbox.create({ image: python:3.12-slim });// 上传用户数据await box.files.write(/data.csv, userFileContent);// AI 生成分析代码并执行const analysisCode await ai.generate(分析这个 CSV 文件计算各列的统计信息);await box.files.write(/analyze.py, analysisCode);const result await box.commands.run(python /analyze.py);console.log(result.stdout);await box.kill();场景 3AI 自动化运维AI Agent 在沙箱里测试运维脚本确认安全后再应用到生产环境const box await Sandbox.create({ image: alpine:latest });// 安装必要的工具await box.commands.run(apk add bash curl jq);// 在沙箱里测试脚本const testResult await box.commands.run(bash /scripts/deploy-test.sh);if (testResult.exitCode 0) {console.log(✅ 脚本测试通过可以部署到生产);}await box.kill();六、项目生态与路线图Tupper 目前分为以下几个包包名 说明 状态tupper/core 后端无关的沙箱抽象、共享类型、Zod schema ✅ 可用tupper/container Apple Containers 后端macOS 26 ✅ 可用tupper/firecracker Firecracker microVM 后端Linux 实验性tupper/wsl WSL 后端Windows 计划中tupper/sdk E2B 风格的 Sandbox 门面 API ✅ 可用tupper/cli 命令行工具 ✅ 可用tupper/mcp MCP Server ✅ 可用路线图• ✅ E2B 风格 SDK Apple Containers 后端• FirecrackerLinux后端• WSLWindows后端• 更多 Agent 框架集成七、总结Tupper 是一个非常有潜力的开源项目它解决了 AI Agent 时代的一个核心痛点如何安全地执行 AI 生成的代码。它的优势• ✅ 免费开源MIT 协议完全免费代码可审计• ✅ 自托管数据不出本地隐私无忧• ✅ E2B 兼容API 和 E2B 几乎一样迁移零成本• ✅ 跨平台macOS、Linux、Windows 全覆盖Windows 还在开发中• ✅ 轻量核心依赖只有 ZodNode/Bun 都能跑适合谁用• 对数据隐私敏感不想把代码发到云端的企业• 需要深度定制沙箱行为的开发者• 想节省 E2B 等商业服务费用的个人开发者• 正在构建 AI Agent 应用需要代码执行能力的团队暂时不适合• 需要 Windows 支持WSL 后端还在开发中• macOS 版本低于 26Apple Containers 是 macOS 26 新特性• 想要开箱即用、不想运维的用户E2B 更适合最后说一句AI Agent 时代代码安全不再是有没有沙箱的问题而是沙箱在哪跑的问题。Tupper 给了你一个把沙箱留在本地的选项——这很重要。