快速、基于能力(capability)的 WASM 执行,具有明确的 CPU、内存、时间、I/O 和文件系统限制 — 亚毫秒级热执行,附带签名执行记录。
专为 AI 代理、MCP 工具、插件、代码解释器以及其他不受信任的工作负载 而构建。
AI 代理越来越需要编写和执行代码、调用工具以及运行插件。决定其是否安全的关键问题是:
如何让代理执行不受信任的代码,同时又不让该代码访问你的主机、你的凭据、你的网络或无限的计算资源?
AI Agent ──▶ Tool / MCP ──▶ Ephemora Cell ──▶ WASM ──▶ bounded result
Ephemora Cell 是一个小巧的、基于能力(capability)的 WASM 执行运行时,正是为此而设计:它是一个执行原语 — 而非代理框架 — 位于你现有的代理栈、MCP 服务器、插件系统或应用程序之下。
pip install ephemora-cell
# 运行你的第一个隔离模块(获取仓库中的示例,或自带任何 .wasm):
git clone https://github.com/MichaelS1011/ephemora-cell.git
ephemora-cell run ephemora-cell/examples/hello.wasm
Hello from Ephemora Cell!
from ephemora_cell import run_wasm
result = run_wasm("my_module.wasm")
print(result.stdout) # captured output (10 KB cap)
print(result.status.name) # SUCCESS
print(result.elapsed_ms) # wall time
print(result.fuel_consumed) # compute actually used

真实 CLI 会话:安装、首次运行、包含安全基线的机器可读 --json 报告,以及一个在 WASI 导入层被阻止的攻击模块(exploit.wasm)。可逐帧验证:所有命令均按所示从克隆仓库中运行。

同样的八个攻击原语,在一次运行中实时测量(2026-09-02):一个标准的 python:3.12-slim 容器让每一个都通过(0/8 被阻止),而 Ephemora Cell 边界阻止了全部八个(8/8)。复现两列结果:
python3 assets/demo_attack_probe.py # left column -> 0/8 blocked (stock Docker)
python benchmarks/verify_8_vectors.py # right column -> 8/8 blocked (Ephemora Cell)
代理生成的代码与应用程序代码不同:它可能包含错误、计算无界、意外昂贵 — 甚至带有敌意。运行时必须 强制执行 边界,而非仅仅记录它们。每次 Cell 运行都会:
每次执行都在明确的限制下运行 — 无需选择加入的安全性:
其他控制:I/O 预算(io_cpu_seconds=2.0 / io_budget_bytes=64 MiB — 针对主机工作的墙,而非仅客户机计算)、双 ABI(WASI Preview1 + WASI 0.2 组件,可选加入)、memory64 可选加入、GC 堆声明上限(记录在安全基线中;燃料仍是有效边界)、命名状态(64 条目 · 256 KiB · 每会话 1 MiB),以及一个 出口(egress)sidecar 参考中介(基于允许列表验证的主机侧 API 调用 — docs/egress_patterns.md)。
客户机仅能获得显式提供给它的能力。对八类攻击的实时验证(benchmarks/verify_8_vectors.py):
结果:8/8 攻击向量被阻止(实时验证);Docker 基线每次运行均实时测量 — 绝不硬编码。
这是一个执行边界,而非声称客户机软件值得信赖。Cell 不评估模块是否恶意或正确 — 客户机仍可能在其被授予的预算 之内 行为不当。执行路径存在实质性差异:默认情况下客户机在你的进程内运行;run_isolated() 则增加操作系统级墙(rlimits、磁盘配额、I/O CPU 看门狗、强制终止)。
完整详情:SECURITY.md(策略、执行路径控制矩阵、已知限制)· docs/threat-model.md(对手模型、信任边界、残余风险)· docs/security_posture.md(arXiv 2509.11242 评估、燃料边界、相关研究)。
无需承担容器级启动成本即可对每次执行进行沙箱化。
实时冷启动对比(2026-08-30,同一台 Mac):docker run python:3.12-slim 为 171 ms,而 Cell 为 0.40 ms = 427× — 这是针对此基准工作负载的容器冷启动与调用式 WASM 的对比,并非声称 WASM 总是比 Docker 快的普遍结论。
复现:python benchmarks/pool_vs_budget.py · python benchmarks/competitive_benchmark.py(原始结果含 measured:true,提交于 benchmarks/results/)。代理型工作负载及更多:docs/performance.md。
Cell 执行 .wasm — 它不关心源语言。基于实测摩擦矩阵提供可操作错误提示的一键构建:
ephemora-cell build tool.rs # → tool.wasm → run it
所有五种编译语言门禁均在每次推送时验证(.github/workflows/ci.yml)。平台: macOS(Apple M5)✅ · Ubuntu 24.04 ✅ · DGX Spark GB10 ✅
AI 生成的代码 — 在显式限制下运行代理生成的工具:
result = run_wasm(
"llm_generated.wasm",
max_fuel=200_000,
timeout_seconds=5,
allow_dirs=("/input", "/output")
)
插件系统 — 接受用户上传的插件,而无需授予其不受限制的主机访问权限:
config = WASIConfig(allow_dirs=("/data",), max_fuel=500_000)
result = WASISandbox(config=config).run("user_plugin.wasm")
另有文档:serverless/边缘工作负载、气隙验证、WASI 0.2 组件、FastAPI 集成 — docs/recipes.md。代理框架集成测试(LangGraph、CrewAI、AutoGen、OpenAI Agents SDK、Semantic Kernel、Hermes、NemoClaw)位于 integration/。
Ephemora Cell 附带一个无依赖的 MCP stdio 服务器,其工具是在 Cell 内执行的 WASM 模块 — 确定性、燃料计量、输出上限、无网络、支持 SEP-2787 的签名执行记录:
pip install ephemora-cell
ephemora-cell-mcp # bundled echo tool included; register your own: --tools-dir ./tools
参见 docs/mcp.md 和 docs/comparison-mcp-servers.md。
flowchart TB
guest["Guest WASM Module<br/>(isolated)"]
subgraph sandbox["WASI Sandbox — capability-based isolation"]
fuel["Fuel Meter<br/>~13 fuel/iteration"]
mem["Memory Limit<br/>128 MB max"]
timeout["Timeout Guard<br/>epoch interruption"]
syscalls["WASI Preview1 — capability-based,<br/>preopened dirs only<br/>fd_read · fd_write · path_open · clock_time_get<br/>proc_exit · environ_get · random_get"]
end
blocked["Blocked by design:<br/>exec · fork · socket · /dev · /proc · /sys · threads"]
guest --> syscalls
fuel -.-> sandbox
mem -.-> sandbox
timeout -.-> sandbox
sandbox -.-> blocked主要 API 刻意保持简单:execute(wasm) → result。每次执行都返回结构化、可审计的信息:
result.status # SUCCESS | ERROR | TIMEOUT | FUEL_EXHAUSTED | MEMORY_EXCEEDED
result.exit_code
result.stdout # 10 KB cap
result.stderr
result.elapsed_ms
result.fuel_consumed
这使得执行不仅适合运行代码,还适合审计、策略执行和资源核算。完整 CLI(run、带 security_baseline 的 --json、inspect、benchmark、build、包括 --profile analytical 在内的配置文件)参见 CLI 文档 和 ephemora-cell --help。
Cell 是: 一个 WASM 执行原语 · 一个基于能力(capability)的隔离层 · 一个资源受限的运行时 · 一个可嵌入的 Python 库 · 一个 CLI · 一个 MCP 执行层。
Cell 不是: 一个代理框架 · 一个 LLM · 一个代码生成系统 · 一个恶意软件检测器 · 一个完整虚拟机 · 所有容器工作负载的替代品。
目标很明确:让不受信任的执行足够廉价且足够可控,使应用程序可以默认安全地执行它。
379 个测试 · 85% 语句覆盖率(Cell + MCP,门禁 80%)· 8/8 攻击向量被阻止 · 每次推送均由 CI 强制执行(测试、覆盖率、pip-audit、SBOM、bandit)— 参见 .github/workflows/ci.yml。
SECURITY.md — 安全策略与控制 · docs/threat-model.md — 信任边界 · docs/security_posture.md — 攻击面验证 · docs/performance.md — 基准测试 · docs/mcp.md — MCP 服务器 · docs/recipes.md — 使用模式 · docs/languages.md — 语言支持 · CHANGELOG.md — 变更记录
Ephemora Cell 是开源隔离层(Apache 2.0,独立 — 无 Ephemora 依赖)。Ephemora 企业版基于 Cell 的隔离能力,面向生产环境和受监管部署。Cell 对隔离而言是完整的;企业版对运营而言是完整的 — 当值得讨论时,参见 docs/enterprise.md。
Apache 2.0 — 参见 LICENSE。
一次代理动作。一次受限执行。一个受控结果。
由 Michael Soppa 创建。
| 资源 | 默认值 |
|---|
| WASM 内存 | 128 MB(Store.set_limits) |
| 燃料 / CPU 预算 | 1,000,000(约 13 燃料/迭代,R² = 1.000) |
| 墙钟超时 | 30 秒(epoch 中断) |
| 捕获的 stdout/stderr | 10 KB |
| 网络 | 禁用 — WASI 中无 socket API |
| 主机文件系统 | 默认拒绝;阻止 14 个危险目录(/dev、/proc、/sys 等) |
| 进程 exec / fork | WASI 中不可用 |
| 线程 | 禁用(wasm_threads=False) |
| 攻击类别 | Docker | Ephemora Cell |
|---|
Shell(os.system)/ fork / 网络 socket | 允许 | 阻止 — API 在 WASI 中不存在 |
fsync(os.fsync) | 允许 | 阻止 — 导入级拒绝 |
主机文件系统(/etc/passwd) | 允许 | 阻止 — preopen 默认拒绝 |
| 符号链接逃逸 | 允许 | 阻止 — 危险目录过滤器 |
| 多线程 | 允许 | 阻止 — wasm_threads=False |
| 环境访问 | 允许 | 阻止 — 通过 allow_env 控制 |
场景(n=1000,hello.wasm,Mac M5,wasmtime 47.0.1) | 墙钟中位数 | 墙钟 p95 | 客户机中位数 |
|---|
池化引擎(io_budget_bytes=None,可信运行) | 0.46 ms | 0.60 ms | 0.16 ms |
默认路径(io_budget_bytes=64 MiB,每次运行引擎) | 0.92 ms | 1.26 ms | 0.60 ms |
| 语言 | 编译器 | 已验证 |
|---|
| Rust | cargo build --target wasm32-wasip1 | ✅ 编译 + 执行(CI) |
| Go | GOOS=wasip1 GOARCH=wasm go build | ✅ 编译 + 执行(CI) |
| C | wasi-sdk clang --target=wasm32-wasip1 | ✅ 编译 + 执行(CI) |
| AssemblyScript | asc --runtime stub | ✅ 编译 + 执行(CI) |
| Zig | zig build-exe -target wasm32-wasi | ✅ 编译 + 执行(CI) |
| Python | — | 指南:在 wasi-python 解释器上运行(不存在 AOT) |