亚毫秒虚拟机沙箱,使用CoW内存分叉。
Show HN: Sub-millisecond VM sandboxes using CoW memory forking

原始链接: https://github.com/adammiribyan/zeroboot

## Zeroboot:亚毫秒级AI代理沙箱 Zeroboot 提供极快的(亚毫秒级p50延迟,约1.7毫秒p99)虚拟机沙箱,用于安全地运行AI代理代码。它通过利用KVM虚拟化和Firecracker快照的新颖的写时复制(CoW)分叉机制来实现这一点。 Zeroboot 不采用传统的VM创建方式,而是将运行时环境预加载到基础VM中,然后通过将快照的内存映射为CoW来快速“分叉”新的隔离VM。这大大减少了启动时间——每个分叉大约0.8毫秒——同时保持硬件强制的内存隔离。 每个沙箱都是一个完整的KVM VM,消耗大约265KB的内存。Zeroboot为Python和TypeScript提供SDK,允许开发者轻松地在这些安全、短暂的环境中执行代码。 Zeroboot目前是一个可用的原型,尚未达到生产级成熟度,但它展示了在快速、安全地为AI应用提供沙箱方面的重大进展。

亚当·米里比扬开发了一种使用 Firecracker 和写时复制 (CoW) 内存分叉来创建极速虚拟机沙箱的方法。他不是为每次代码执行启动一个新的微型虚拟机,而是启动一个预装了 Python 和 NumPy 的单个虚拟机,然后快照其状态。 后续沙箱是通过快速分叉此快照创建的——利用 Linux 的 CoW 机制为每个沙箱提供其自己的隔离内存空间,而无需完整虚拟机初始化的开销。这些是真正的 KVM 虚拟机,提供强大的隔离,具有独立的内核和内存。 主要挑战不是 CoW 实现本身,而是可靠地恢复快照的虚拟机。该项目用 Rust 编写,并以 Apache 2.0 许可协议发布,可在 GitHub 上获取。一位评论者戏谑地询问是否可以在另一个沙箱*内部*运行该沙箱。
相关文章

原文

Zeroboot

Sub-millisecond VM sandboxes for AI agents via copy-on-write forking

License Rust API Status


demo

curl -X POST https://api.zeroboot.dev/v1/exec \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer zb_demo_hn2026' \
  -d '{"code":"import numpy as np; print(np.random.rand(3))"}'
Metric Zeroboot E2B microsandbox Daytona
Spawn latency p50 0.79ms ~150ms ~200ms ~27ms
Spawn latency p99 1.74ms ~300ms ~400ms ~90ms
Memory per sandbox ~265KB ~128MB ~50MB ~50MB
Fork + exec (Python) ~8ms - - -
1000 concurrent forks 815ms - - -

Each sandbox is a real KVM virtual machine with hardware-enforced memory isolation.

  Firecracker snapshot ──► mmap(MAP_PRIVATE) ──► KVM VM + restored CPU state
                              (copy-on-write)         (~0.8ms)
  1. Template (one-time): Firecracker boots a VM, pre-loads your runtime, and snapshots memory + CPU state
  2. Fork (~0.8ms): Creates a new KVM VM, maps snapshot memory as CoW, restores all CPU state
  3. Isolation: Each fork is a separate KVM VM with hardware-enforced memory isolation

Pythonsdk/python

from zeroboot import Sandbox
sb = Sandbox("zb_live_your_key")
result = sb.run("print(1 + 1)")

TypeScriptsdk/node

import { Sandbox } from "@zeroboot/sdk";
const result = await new Sandbox("zb_live_your_key").run("console.log(1+1)");

Working prototype. The fork primitive, benchmarks, and API are real, but not production-hardened yet. Open an issue if you're interested.

Apache-2.0

联系我们 contact @ memedata.com