概要
- Zeroboot は、 AIエージェント向けサブミリ秒VMサンドボックス を実現
- Firecracker を活用し、 コピーオンライト(Copy-on-Write)フォーク による高速起動
- 各サンドボックスは 本物のKVM仮想マシン で、ハードウェアレベルのメモリ分離を実現
- APIやSDK を通じてPythonやTypeScriptから利用可能
- 現状は プロトタイプ であり、プロダクション運用には未対応
サブミリ秒VMサンドボックスの仕組みと特徴
-
Firecracker でVMを一度だけ起動し、Pythonやnumpyなどランタイムを事前ロードした状態で スナップショット 取得
-
新しい実行ごとに KVM VMをコピーオンライトでフォーク し、スナップショットメモリを MAP_PRIVATE でマッピング
-
各サンドボックスは 独立したKVM VM として起動、 ゲストカーネル・メモリ・ページテーブル も完全に分離
-
コード実行後は即終了、 超高速なサンドボックス起動 を実現
- 起動レイテンシ(p50): 0.79ms(従来のDaytonaやE2B microsandboxと比較して圧倒的に高速)
- 起動レイテンシ(p99): 1.74ms
- サンドボックスごとのメモリ消費: 約265KB
- Pythonでのfork+exec時間: 約8ms
- 同時1000フォーク時の合計時間: 815ms
-
ハードウェアレベルのメモリ分離 により、セキュリティ・アイソレーションを確保
-
LinuxのCoW機能 により、メモリ効率も抜群
API・SDKによる利用方法
- API エンドポイント例
- curlコマンドでPOSTリクエスト送信し、コードを即時実行
- Python SDK
from zeroboot import Sandboxsb = Sandbox("zb_live_your_key")result = sb.run("print(1 + 1)")
- TypeScript SDK
import { Sandbox } from "@zeroboot/sdk";const result = await new Sandbox("zb_live_your_key").run("console.log(1+1)");
アーキテクチャと現状
- Firecracker でテンプレートVMを一度だけ起動し、 スナップショット を取得
- 新規リクエストごとに KVM VMをフォーク し、 CoWメモリ を利用しつつCPU状態も復元
- 完全なVM分離 によるセキュリティ
- Rust で実装、 Apache-2.0ライセンス
- プロトタイプ段階 であり、商用運用前の状態
- 興味があれば GitHub Issue で問い合わせ可能
技術的な工夫点
- 毎回新規VMをブートせず、スナップショットから即時復元
- CoW自体よりも、スナップショットVMの正しい再開処理が難関
- 各サンドボックスは 本物のKVM VM であり、 コンテナとは異なる完全分離
- 書き込み時は個別ページを自動複製、高いセキュリティと効率性
まとめ
- AIエージェントやコード実行基盤 に最適な、 超高速・高セキュリティなサンドボックス基盤
- 従来技術と比較して圧倒的な起動速度・省メモリ
- 今後の本番運用やOSS貢献にも期待