arrakis
自托管 AI Agent 安全沙箱,基于 MicroVM 隔离 + 快照回溯,让不可信代码执行与状态
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
自托管 AI Agent 安全沙箱,基于 MicroVM 隔离 + 快照回溯,让不可信代码执行与状态
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Arrakis 高层架构 — REST Server 管理多个 MicroVM 沙箱实例,支持快照恢复与自动端口转发
想象一下:你给 AI Agent 一个任务——「帮我写一个在线文档编辑器,并部署到测试服务器」。Agent 愉快地开始写代码,运行测试,修改系统配置。突然,它执行了一条 rm -rf 命令,误删了整个项目目录。
这并不是虚构的灾难。AI Agent 生成恶意或 Bug 代码导致系统被攻击、文件系统被破坏的案例,在 AI Agent 编程工具(如 Claude Code、Cursor、Windsurf)大规模落地的今天,已经成为真实的运维挑战。传统沙箱方案要么隔离性不够,要么不支持有价值的「回溯」能力——当 Agent 需要从中间状态重新探索时,无法回到之前的快照点。
Arrakis 正是为解决这一困境而生的:它提供安全的自托管沙箱,每个沙箱运行在轻量级 MicroVM 中,内置 snapshot-and-restore(快照回溯) 功能,让 AI Agent 既能安全执行任意代码,又能在需要时恢复到之前的精确状态。
Arrakis 由独立开发者 abshkbh 开发并维护(GitHub uid: 38491450),采用 AGPL-3.0 开源协议,同时支持商业授权。该项目在 GitHub 积累了 816 颗星,专注于为 AI Agent 编程工具提供企业级安全执行环境。
项目命名「Arrakis」取自科幻小说《沙丘》中的沙漠星球——一个充满危险但蕴含巨大能量的世界,隐喻沙箱内运行不可信代码的定位。
Arrakis 底层使用 cloud-hypervisor(Rust 编写的高性能 VMM)启动轻量级虚拟机来运行沙箱。与 Docker 容器共享宿主机内核不同,每个 Arrakis 沙箱都运行独立的 Linux 系统,有独立的内核和根文件系统。这意味着即使用户在沙箱内执行了提权漏洞利用,攻击面也仅限于当前 VM,无法穿透到宿主机。
项目同时使用了 overlayfs 保护每个沙箱的根文件系统,防止恶意修改影响 VM 镜像本身的安全基线。
这是 Arrakis 最具差异化的功能。通过 cloud-hypervisor 的快照能力,Arrakis 支持在任意时刻创建沙箱快照,并在之后恢复到该精确状态。快照包含:VM 内存状态、磁盘状态、所有进程和文件。
应用场景极其广泛:
Python SDK 示例:
sandbox_manager = SandboxManager('http://127.0.0.1:7000')
sandbox = sandbox_manager.start_sandbox('agent-sandbox')
sandbox.run_cmd("echo 'data' > /tmp/testfile")
snapshot_id = sandbox.snapshot("checkpoint-1")
sandbox.run_cmd("echo 'new data' > /tmp/testfile")
sandbox.destroy()
sandbox = sandbox_manager.restore('agent-sandbox', snapshot_id)
# 此时沙箱恢复到 snapshot 时刻,/tmp/testfile 内容为 'data'
每个沙箱启动时,Arrakis 自动配置:
用户无需手动配置 SSH 隧道或网络,Arrakis 自动处理所有端口映射细节。
REST API(arrakis-restserver):
后台常驻进程(daemon),暴露完整的沙箱生命周期管理接口(start/stop/destroy/list/restore/snapshot),API 规范见 api/server-api.yaml。
Python SDK(py-arrakis): 封装 REST API,提供更友好的 Pythonic 接口,支持 context manager 自动管理沙箱生命周期(退出时自动 destroy)。
MCP Server(arrakis-mcp-server): 适配 Model Context Protocol,集成到 Claude Desktop App、Windsurf、Cursor 等支持 MCP 的 Agent 编程工具中,让这些工具可以直接在配置文件中声明 Arrakis 作为代码执行后端,无需额外编程。
CLI 客户端(arrakis-client): Go 编写的命令行工具,适合 DevOps 场景和脚本集成。
Arrakis 支持通过 Dockerfile 方式定制沙箱的根文件系统(rootfs),可以预装特定工具、依赖库或配置,供特定工作流使用。详细定制方案见 docs/detailed-README.md。
| 组件 | 技术选型 | 职责 |
|---|---|---|
| VMM | cloud-hypervisor | MicroVM 生命周期管理 |
| 编程语言 | Go | REST Server、CLI 客户端 |
| 沙箱 OS | Ubuntu(自定义 rootfs) | 独立 Linux 执行环境 |
| 网络 | TAP 设备 + Linux Bridge | 沙箱间/宿主机网络隔离 |
| 文件系统 | overlayfs | 保护根文件系统 |
| API 规范 | OpenAPI 3.0 | REST 接口文档化 |
| 客户端 SDK | Python | py-arrakis |
| Agent 集成 | MCP | Claude Desktop / Windsurf / Cursor |
代码结构:
cmd/restserver:REST API 服务端cmd/client:CLI 客户端pkg/:共享核心库resources/scripts/rootfs/Dockerfile:沙箱根文件系统定义api/server-api.yaml:OpenAPI 规范Linux only:这是硬性要求。cloud-hypervisor 依赖 /dev/kvm,只能在 Linux 宿主机运行,不支持 macOS 或 Windows(WSL 未测试)。
KVM 虚拟化:宿主机必须启用 CPU 虚拟化扩展(Intel VT-x / AMD-V),且当前用户有 /dev/kvm 访问权限。
不支持 Docker 部署:Arrakis 本质上就是 Docker 的替代方案(更安全的隔离),因此没有提供 Docker 镜像。用户需要从源码或官方 release 下载预编译二进制,配合 setup.sh 脚本完成环境初始化。
内存需求较高:默认配置下,每个沙箱分配 30% 宿主机内存(可配置)。若要同时运行多个沙箱,宿主机内存需要相应增加。
磁盘空间:需要预置 Linux kernel 镜像、rootfs 镜像、initramfs 等资源,单个沙箱镜像约 2GB。
随着 Claude Code、Cursor、Windsurf 等 Agent 编程工具从爱好者玩具走向企业生产环境,「AI Agent 失控执行」的风险已经从理论变成现实威胁。Arrakis 代表了一个重要的技术方向:用虚拟机级别的隔离换取可控的 AI 代码执行,同时通过 snapshot-and-restore 保留 Agent 工作流的灵活性。
它填补了当前 Agent 工具链中「安全执行层」的开源空白——此前类似能力主要存在于闭源商业产品(如 Modal、Codium AI)或大型云平台(Google Vertex AI Agent Builder)中。
# 一键安装(Ubuntu/Debian)
curl -sSL https://raw.githubusercontent.com/abshkbh/arrakis/main/setup/setup.sh | bash
# 启动 REST 服务
cd arrakis-prebuilt
sudo ./arrakis-restserver
# 启动一个沙箱
./out/arrakis-client start -n agent-sandbox
# Python SDK 方式
pip install py-arrakis
AI Agent 编程时代需要一个可靠的安全执行环境。Arrakis 用 MicroVM + snapshot 的组合,提供了一条介于「Docker 容器隔离」和「完整物理机」之间的中间路线,值得关注。