
Dormice
自托管持久沙箱,闲置零成本,兼容 E2B 即插即用
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1853
使用教程
环境要求
- Ubuntu/Debian x86_64 主机,需要 root 权限(loop mount、cgroup 写入)
- 已安装 Docker 与 gVisor(runsc)运行时
- 配置好 Swap 且 vm.swappiness=100
- daemon 自身可运行在任意 Node 22+ 环境(开发时可用内存假执行器)
- 主机需能访问 GitHub raw 内容以下载安装脚本
安装与启动步骤
-
1确认主机条件
在一台自己的 Ubuntu/Debian x86_64 机器上操作,准备 root 权限,并确认已装 Docker 与 gVisor(runsc)、已配置 swap。
-
2一键安装
以 root 在裸机上执行安装脚本;脚本幂等,重复运行会升级代码并修复偏差,且不会轮换 API token。
curl -fsSL https://raw.githubusercontent.com/BitMiracle-AI/Dormice/main/deploy/install.sh | bash -
3国内镜像安装
若访问常用源较慢,在管道后追加 -s -- --mirror cn 参数,改用国内镜像加速下载。
curl -fsSL https://raw.githubusercontent.com/BitMiracle-AI/Dormice/main/deploy/install.sh | bash -s -- --mirror cn -
4运行自检
安装结束时脚本会自动执行 dor doctor,这是一组只读检查,其中三项会启动真实 gVisor 容器来判断安装是否成功。
dor doctor -
5用 CLI 管理沙箱
dor CLI 负责运维侧操作,包含枚举、执行、推送、拉取、重建、销毁沙箱等子命令。
dor sandbox ls -
6用 SDK 调用沙箱
@dormice/sdk 是原生 TypeScript 客户端;用同一个 key 反复 acquire 即可复用同一沙箱。
import { Dormice } from '@dormice/sdk'; const client = new Dormice({ endpoint: 'http://127.0.0.1:3676', token: process.env.DORMICE_API_TOKEN!, }); await client.acquireSandbox('my-agent', { policy: { stopAfterSeconds: null } }); const result = await client.execCommand('my-agent', 'python3 -c "print(6 * 7)"'); console.log(result.exitCode, result.stdout);
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
DORMICE_API_TOKEN | 是 | SDK 调用所需的 API 令牌,由安装脚本生成,升级时不会轮换 | sk-xxxxxxxx |
endpoint | 是 | daemon 的访问地址,默认监听本机 3676 端口 | http://127.0.0.1:3676 |
vm.swappiness | 是 | 必须为 100,否则冻结时内核拒绝换出 gVisor 共享内存 | 100 |
icc | 否 | 写入 daemon.json,设为 false 以禁止容器之间通信 | false |
policy.stopAfterSeconds | 否 | 设为 null 让沙箱成为常驻型:可冻结但不会冷启动 | null |
如何确认成功
dor doctor 全部通过(其中三项检查会真实启动 gVisor 容器)即表示安装成功,可随时单独重跑 dor doctor。
常见问题
Q:安装脚本可以重复运行吗?
A:可以。安装器是幂等的,重跑会升级代码、修复环境偏差,并且永远不会轮换你的 API token。
Q:国内下载太慢怎么办?
A:在管道命令后加 -s -- --mirror cn 参数,改用国内镜像源下载。
Q:冻结后内存为什么没释放?
A:多半是 vm.swappiness 不是 100。用 sysctl vm.swappiness 查看生效值(部分云镜像默认 0),默认值下实测回收 0 字节。
Q:可以直接 npm 安装 SDK 吗?
A:暂时不能,@dormice/sdk 尚未发布到 npm,在本仓库内执行 pnpm build 可生成该包。
Q:现在可以用于生产吗?
A:不建议。项目处于早期开发阶段,全流程虽已跑通,但官方明确表示尚未达到生产可用标准。
注意事项
- sandbox 执行的是不受信任的代码,必须阻断容器访问云元数据服务(iptables -I DOCKER-USER -d 169.254.0.0/16 -j DROP)并禁用容器间通信。
- daemon 出于设计只绑定 127.0.0.1 且没有开关,如需对外暴露请自行用反向代理。
- 一台机器只能运行一个 daemon,daemon 会用账本旁的锁强制这一限制。
- 状态会沿 active → frozen → stopped → archived 逐级下降,任意 acquire 都能把沙箱唤醒,destroy 是唯一会丢数据的操作。
核心亮点
- 闲置沙箱零资源占用,唤醒快,显著降低长期运行成本
- 兼容 E2B API,迁移成本低,可无缝替换云端服务
- 基于 gVisor 和 Docker 双层隔离,安全性强且支持多租户
不足之处
- 早期项目,文档和社区生态尚待完善
- 单机架构可能限制大规模横向扩展能力
适用场景
- AI 智能体需要持久化代码执行环境,如数据分析、自动化脚本
- 个人开发者或小团队自建沙箱服务,替代按量付费的云 API
- 需要安全隔离的多租户代码运行平台,如教育或内部工具
替代项目
E2B、Firecracker、gVisor
同类项目推荐
leanctx
开源
不换代码,一键压缩提示词,立省 40-60% token 费用
Drop-in prompt compression for production LLM apps. Cut your token bill 40-60% witho···
mlops-project-template
开源
在Azure上快速搭建企业级MLOps流水线,省时又规范。
Azure MLOps (v2) solution accelerators. Enterprise ready templates to deploy your ma···
muninndb
开源
会遗忘、会强化、带置信度的 AI 原生记忆库
The cognitive database. A new class of data storage. Not a vector store, not a graph···
eloquentjs
开源
在 Node.js 里用 Laravel 式语法操作数据库,开发效率翻倍
EloquentJS monorepo — Laravel Eloquent for Node.js
TemporalStore
开源
给 LLM 装上时间轴,上下文可回溯、可管控
Open-source Rust TemporalStore for LLM context management, temporal features, and ri···
BharatMLStack
开源
一套打通训练到推理的 ML 基础设施,让大规模模型上线更稳更快。
BharatMLStack is an open-source, end-to-end machine learning infrastructure stack bu···
AI-Worker-Proxy
开源
一键部署,统一接入多模型,自动故障转移
OpenAI-compatible AI proxy: Anthropic Claude, Google Gemini, GPT-6, Cloudflare AI. F···
comfy-pack
开源
一键锁定打包 ComfyUI 环境,告别部署翻车
A comprehensive toolkit for reliably locking, packing and deploying environments for···
motorhead
开源
给 LLM 装上持久记忆,几行代码接入对话历史与语义检索。
Motorhead is a memory and information retrieval server for LLMs.