smol-machines/smolvm
An embeddable, portable, branchable virtual machine to safely run Agents locally.
smol‑machines / smolvm – 分岐可能なAIエージェント用マイクロVM
概要 – smolvm は、任意のOCIコンテナイメージから小さなハードウェア仮想化マシン(マイクロVM)を起動できるオープンソースのランタイムです。libkrun VMMとカスタムゲストカーネル(libkrunfw)を基盤としており、macOS(Hypervisor.framework)、Linux(KVM)、Windows(Hypervisor Platform)で動作します。AI開発者にとっての主な利点は、各エージェントを独自のVMに分離でき、200ms未満の高速起動、弾力的なメモリ、そして実行中のVMのチェックポイント、巻き戻し、分岐が可能なことです。これは、再現可能な実験、信頼できないコードのサンドボックス化、エージェントの状態の永続化に役立ちます。
使用方法
- Homebrew、スクリプト、またはWindows用zipでインストールします。
- CLI(
smolvm machine …)でVMの作成、起動、コマンド実行、パッキングができます。例:smolvm machine run --net --image alpine -- uname -a。 - SmolfileでVMを宣言的に定義します(イメージ、リソース、ポート、マウント、ネットワークポリシー)。
- Node/TS、Python、Rust向けのSDKを通じて、独自のコードにランタイムを組み込めます。単一の
MachineオブジェクトでVMの作成、コマンド実行、削除ができ、バックグラウンドデーモンは不要です。
主な機能
| 機能 | AI/MLワークロードにとって重要な理由 |
|---|---|
| 分岐可能/チェックポイント可能 | 実行中のエージェントを凍結し、コピーオンライトで分岐、または以前の状態に巻き戻せます。モデルの推論パスのデバッグや再現に最適です。 |
ポータブルな.smolmachineアーティファクト |
VM(状態を含む)を単一ファイルにパックし、OCIレジストリにプッシュ、または別のホストで自己完結型実行ファイルとして実行できます。 |
| ハードウェア分離 | 各VMは独自のカーネルを持ち、ネットワークはデフォルトでオフ。ホストのホワイトリスト登録や資格情報の安全な転送が可能です。 |
| 高速起動と弾力的メモリ | 200ms未満で起動。メモリはvirtio balloonでオンデマンドに割り当てられるため、ラップトップ上で多数のエージェントを共存させられます。 |
| 組み込み可能なSDK | Python、Node、Rustから別途デーモンなしで直接APIアクセスでき、エージェントフレームワークやオーケストレーションツールへの統合が容易です。 |
| Kubernetes RuntimeClass | ポッドをマイクロVMとして実行し、クラウドネイティブなAIワークロードに対応します。 |
| GPUサポートのロードマップ | virtio-gpu経由のVulkanとCUDAリモーティングが文書化されていますが、まだ本番対応ではありません。 |
AIエージェントの典型的なワークフロー
- 作成:PythonまたはCUDAイメージからVMを作成:
smolvm machine create --name agent --image python:3.12-alpine。 - 起動:分岐可能な状態で起動:
smolvm machine start --name agent --branchable。 - 実行:内部で推論コードを実行:
smolvm machine exec --name agent -- python infer.py。 - チェックポイント:重要なステップの後に保存:
smolvm machine checkpoint --name agent -o step1.chk。 - 分岐:環境全体を再初期化せずに代替プロンプトを試行。
- パック:最終状態を配布用にパック:
smolvm pack create --from-vm agent -o agent.smolmachine。
安全性モデル – VMがワークロードを分離し、ホストフォルダのマウント、ネットワークホスト、資格情報の転送は明示的に許可します。信頼できないコードは、許可しない限りホストファイルシステムに触れることはなく、サードパーティのモデルやツールによるサプライチェーンリスクを軽減します。
制限事項 – WindowsではまだGPUアクセラレーションがなく、ランタイムはプラットフォーム固有のハイパーバイザーに依存します。コンテナランタイムではなく、OCIイメージは必要ですがDockerデーモンは不要です。
ライセンス:Apache-2.0
関連
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト