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エージェントの典型的なワークフロー

  1. 作成:PythonまたはCUDAイメージからVMを作成:smolvm machine create --name agent --image python:3.12-alpine。
  2. 起動:分岐可能な状態で起動:smolvm machine start --name agent --branchable。
  3. 実行:内部で推論コードを実行:smolvm machine exec --name agent -- python infer.py。
  4. チェックポイント:重要なステップの後に保存:smolvm machine checkpoint --name agent -o step1.chk。
  5. 分岐:環境全体を再初期化せずに代替プロンプトを試行。
  6. パック:最終状態を配布用にパック:smolvm pack create --from-vm agent -o agent.smolmachine。

安全性モデル – VMがワークロードを分離し、ホストフォルダのマウント、ネットワークホスト、資格情報の転送は明示的に許可します。信頼できないコードは、許可しない限りホストファイルシステムに触れることはなく、サードパーティのモデルやツールによるサプライチェーンリスクを軽減します。

制限事項 – WindowsではまだGPUアクセラレーションがなく、ランタイムはプラットフォーム固有のハイパーバイザーに依存します。コンテナランタイムではなく、OCIイメージは必要ですがDockerデーモンは不要です。

詳細情報 – ドキュメントは https://smolmachines.com/docs、SDKリファレンス、サンプルプロジェクト(Python、Node、Docker-in-VM、ローカルLLM、ヘッドレスブラウザ、Doom)をご覧ください。ソースは`smol-machines/smol`リポジトリにあり、このリポジトリにはランタイム本体が含まれています。


ライセンス:Apache-2.0

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト