跳转到内容

CubePod — 专为长生命周期自主 Agent 打造的持久微虚拟机沙箱

v0.5.0 · Apache 2.0 · 100% E2B 协议兼容

专为长生命周期自主 Agent 打造的持久微虚拟机沙箱

Persistent Writable RootFS MicroVM Execution Platform · 持久化可写 RootFS 微虚拟机执行平台

基于 Kata Containers 硬件隔离与双 CSI Raw Block 持久化。支持 Zero-Export 0 CPU 休眠、~1s 跨节点唤醒与 1s CoW 克隆,让系统环境与工作区永不丢失。

$
MicroVM 生命周期演示
node-01 · 42ms 领用
Kata MicroVM 计算实例 2 vCPU · 4 GiB · 运行中
OverlayFS (/) RW · podd :49983
/dev/cubepod-rootfs RW · 持久 upperdir

apt / pip / npm 修改实时落盘

/dev/cubepod-workspace RW · /workspace

volumeKey: agent-ws · 1000:1000

双块卷已挂载,系统软件与工作区数据协同读写。
CLAIM LATENCY
< 50ms
PodWarmPool 冷启动

预热微虚拟机毫秒级领用

RESUME & FORK
~1s
CoW 克隆与跨节点唤醒

CSI 块卷重挂载与快照分支

IDLE OVERHEAD
0 CPU
Zero-Export 零开销休眠

0 内存占用 · 无需镜像导出

PERSISTENCE
100%
RootFS + /workspace

双卷彻底解耦持久保留

DEVELOPER EXPERIENCE

一行配置兼容 E2B,或原生调用超集 SDK

切换标签或点击重放,实时观察 SDK 调用与沙箱内 podd 守护进程的执行遥测流。

agent_runner.py
export E2B_DOMAIN="127.0.0.1:8080"
export E2B_API_KEY="cpod_live_secret"

from e2b_code_interpreter import Sandbox

with Sandbox.create() as sbx:
    sbx.commands.run("pip install pandas matplotlib")
    res = sbx.run_code("import pandas as pd; pd.DataFrame({'a':[1,2,3]})")
    print(res.results[0].html)
from cubepod import AsyncCubePod

async with AsyncCubePod(base_url="http://127.0.0.1:8080") as cp:
    box = await cp.create(
        "cubeplex-ubuntu24-desktop",
        volume_key="agent-ws-042",
        secret_bindings=[{
            "env_name": "GITHUB_TOKEN",
            "placeholder": "cpodref_gh_readonly_01",
            "allowed_hosts": ["api.github.com"],
        }],
    )
    forked = await cp.fork(box.sandbox_id)
    await cp.reset_rootfs(box.sandbox_id)
    await cp.pause(box.sandbox_id)
import { Sandbox } from 'cubepod';

const sbx = await Sandbox.create({
  baseUrl: 'http://127.0.0.1:8080',
  templateId: 'cubeplex-ubuntu24-desktop',
  volumeKey: 'agent-ws-042',
});

await sbx.files.archiveSync({ 'app/main.py': 'print("ok")\n' }, { dest: '/workspace' });
const panel = await sbx.createEndpoint(8080, { expiresInSeconds: 3600 });
console.log('GUI Panel:', panel.url);
await sbx.pause();
cubepod health
cubepod sandbox create --template cubeplex-ubuntu24-desktop
cubepod sandbox exec <id> "apt-get update && apt-get install -y ripgrep"
cubepod sandbox fork <id>
cubepod sandbox reset-rootfs <id>
cubepod sandbox pause <id>

# Expose sandbox tools via Model Context Protocol
cubepod mcp
podd-daemon · /var/log/cubepod.stream STREAMING
[0.038s] WARMPOOL Claimed standby Kata MicroVM pod-wp-84a1 (<50ms)
[0.094s] CSI-BLK Attached /dev/cubepod-rootfs (ext4) + /dev/cubepod-workspace
[0.412s] OVERLAY pip install pandas matplotlib committed to RootFS upperdir
[0.680s] KERNEL python3 kernel executed cell · 1 HTML table artifact captured
[0.715s] READY State persisted on block PVC across suspend & wake
_
SYSTEM INTERNALS

四层云原生架构栈

将易变 OS 依赖与用户工作区彻底解耦,零宿主机 Kubelet / containerd 侵入。

01

接入与协议层

Access Layer

官方 E2B SDK 无缝迁移、原生 Python / TS / Go SDK 与 MCP Server。

E2B Drop-incubepod mcpSigned /panel/{jwt}/
02

无状态控制与网关面

Control Plane

Auto-Resume 流量拦截唤醒、PodWarmPool 调度与每 Pod mTLS 签发。

cubepod-gatewaycubepod-controllerPodWarmPool
03

Kata 微虚拟机数据面

Hardware Isolation

独立 Guest 内核中运行 Rust PID 1 podd-init、podd 与零信任出站代理。

podd-init (Rust)podd :49983cubepod-egressLazy Desktop
04

CSI 持久块存储面

Raw Block CoW

只读 Base OCI 叠加独立 rootfs-pvc 与 workspace-pvc 双块卷。

Longhorn V2 SPDKOpenEBS LVMDual Raw Block
COMPARISON

CubePod vs. 上游 E2B vs. 传统容器

对比维度 CubePod v0.5.0 上游 E2B Cloud 传统容器沙箱
系统盘持久化 RootFS + /workspace 双持久 仅临时 RootFS 重启即丢失
存储性能模型 Dual CSI Raw Block (NVMe-oF) 临时 overlay / 共享 FS OverlayFS / NFS
OS 与数据耦合 完全解耦(独立重置 OS) 状态耦合 全局重置丢失
休眠与唤醒 0 CPU/RAM · ~1s 块卷恢复 导出内存镜像 / 冷启 持续占内存
沙箱分支克隆 < 1s CoW 双卷快照 不支持 / 全量拷贝 不支持
凭据安全隔离 cpodref_ + mTLS 边界替换 明文环境变量 明文 ENV + 共享内核
部署自由度 100% E2B 超集 · 自托管开源 专有 SaaS 需自行拼装
CUBEPLEX OPEN-SOURCE STACK · 脑手解耦架构

开源 CubePlex Agent 技术栈的核心执行层

采用脑手解耦(Brain-Hands Decoupling)架构:上层「脑」由 CubePlex (团队 Agent 工作空间)与 CubeLoop (异步 Agent 运行时)负责规划决策,底层「手」由 CubePod 提供持久化硬件隔离执行底座。