アップデート一覧に戻る
New releaseSep 13, 2026

smolvm v1.15.0

ローカルでAgentを安全に実行するための、埋め込み可能でポータブル、分岐可能な仮想マシン。

共有

smol machines

Discord Release License npm PyPI crates.io

smolvm

AIエージェント向けのブランチ可能なmicroVM。 軽量な仮想マシンをソフトウェアに組み込み、ポータブルな開発環境やローカルサンドボックスを実現します。

インストール

curl -sSL https://smolmachines.com/install.sh | bash   # macOS + Linux

Windows: windows-x86_64 リリースを解凍してsmolvm.exeを実行します(Windows Hypervisor Platformが必要です)。コーディングエージェント: インストール後にsmolvm --helpを実行すると、すべてのコマンドを確認できます。

クイックスタート

smolvm machine run --net --image alpine -- uname -a          # 使い捨てVM、終了時に削除
smolvm machine run --net -it --image alpine -- /bin/sh       # インタラクティブシェル

ローカル

独自のカーネルを持つ本物のVMを、ノートPCや自前のサーバーで無料で利用できます。起動は1秒未満で、メモリは伸縮自在なため、ホストはゲストが実際に使用した分だけをコミットします。マシンは再起動後も永続化され、ローカルでビルドしたものを含め、あらゆるOCIイメージが動作します。

smolvm machine create --net --name dev && smolvm machine start --name dev
smolvm machine exec --name dev -- apk add git
docker save myapp | smolvm machine run --image - -- ./app    # ローカルイメージ、レジストリ不要

Smolfileでマシンを宣言できます: イメージ、リソース、ポート、マウント、ネットワークポリシーを1つのファイルにまとめてチェックインできます。

組み込み可能

単一のMachine APIで、自分のコードからマシンを操作できます。SDKはデーモンなしでプロセス内で動作し、ローカルでもsmol cloudでも利用できます。

npm install smolmachines     # Node / TypeScript
pip install smolmachines     # Python
cargo add smolmachines       # Rust
import { Machine } from 'smolmachines';

const m = await Machine.create({ image: 'python:3.12-alpine', network: true });
const r = await m.exec(['python3', '-c', 'print(2 ** 10)']);
console.log(r.stdout); // 1024
await m.delete();

ソースとドキュメント: smol-machines/smol · smolmachines.com/docs/sdk

ブランチ可能

実行中のマシンを実行途中で保存し、巻き戻したり、同じ地点から実行を継続するコピーにブランチできます。チェックポイントはRAM、CPU状態、ディスクをキャプチャし、ブランチは稼働中マシンのコピーオンライトの子です。

smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1                   # 稼働中のコピーオンライトの子
smolvm machine checkpoint --name agent -o agent.checkpoint        # プロセスごと保存
smolvm machine create --name agent2 --from agent.checkpoint       # 後で、または別の場所で再開

--from <checkpoint> --at '~N'で以前の世代に巻き戻し(machine checkpoint-logを参照)、pause and resumeで実行を失わずに停止できます。詳細はBranchingとincremental checkpointsを参照してください。

ポータブル

どのようにセットアップしたマシンでも、単一の.smolmachineファイルにパッケージ化できます。任意のOCIレジストリにプッシュしたり、何もインストールせずに200ms未満で起動する自己完結型の実行ファイルとして実行できます。

smolvm machine stop --name dev && smolvm pack create --from-vm dev -o dev
smolvm pack push --file dev.smolmachine ghcr.io/you/dev:v1
smolvm pack create --image python:3.12-alpine -o ./python312
./python312 run -- python3 --version

チェックポイントもポータブルです: 別のホストやsmol cloud上で復元できます。

安全

各ワークロードは、独自のカーネルを持つハードウェア分離されたVMで実行されます。ネットワークはデフォルトで無効で、外向き通信は指定したホストに制限でき、コードは資格情報を読むことなく使用できます。

安全性は共同の責任です。smolvmは境界を提供します: ワークロードごとに別々のVMとカーネルを持ち、許可しない限りホストには何も到達しません。その境界を越えるものを決めるのはあなたです。マウントするフォルダ、開くポート、許可するホスト、転送するシークレットやSSHエージェントはすべて、ワークロードが利用できるものになるため、信頼できないワークロードには必要なものだけを与えてください。

smolvm machine run --net --image alpine --allow-host registry.npmjs.org -- wget -qO- https://google.com   # ブロックされる
smolvm machine run --net --image alpine --allow-host-pattern registry.npmjs.org -- wget -qO- https://registry.npmjs.org   # 完全一致ホストのみ
NOTION_API_KEY=secret_… smolvm machine run --net --image alpine \
  --credential [email protected] -- sh -c 'echo $NOTION_API_KEY'   # プレースホルダー

credential substitutionとsecurity modelを参照してください。 --allow-host-pattern '*.example.com'を使うとサブドメインのみを許可できます。従来の --allow-host example.comは引き続きapexとサブドメインの両方を許可します。 停止したマシンの許可リストはsmolvm machine updateで変更できます (--allow-host、--allow-host-pattern、--allow-cidrおよびそれぞれの--remove-形式)。

仕組み

各ワークロードは、Hypervisor.framework(macOS)、KVM(Linux)、またはWindows Hypervisor Platform(Windows)上で、独自のゲストカーネルを持つハードウェア仮想化VMで実行されます。libkrunがVMMで、libkrunfwがゲストカーネルを提供します。イメージはOCI形式を使用するため、Docker Hub、ghcr.io、その他のレジストリにあるものはDockerデーモンなしでmicroVMとして起動します。

デフォルト: 4 vCPU、8 GiB RAM。メモリはvirtio balloonにより伸縮自在で、アイドル状態のvCPUはハイパーバイザー内でスリープするため、過剰なプロビジョニングのコストはほとんどかかりません。--cpusと--memで上書きできます。

比較

smolvmコンテナColimaQEMUFirecrackerKata
ワークロード境界VM + ゲストカーネル名前空間 + 共有カーネル共有VM内の名前空間VM + ゲストカーネルVM + ゲストカーネルコンテナごとのVM
起動時間<200ms~100ms~秒~15-30s<125ms~500ms
アーキテクチャライブラリ (libkrun)デーモンデーモン (VM内)プロセスプロセスランタイムスタック
ワークロードごとのVMはいいいえいいえ (共有)はいはいはい
macOSネイティブはいDocker VM経由はい (krunkit)はいいいえいいえ
組み込み可能SDKはいいいえいいえいいえいいえいいえ
ポータブル成果物.smolmachineイメージ (デーモンが必要)いいえいいえいいえいいえ

プラットフォームサポート

ホストゲスト要件
macOS Apple Siliconarm64 LinuxmacOS 11+
macOS Intelx86_64 LinuxmacOS 11+ (未検証)
Linux x86_64x86_64 LinuxKVM (/dev/kvm)
Linux aarch64aarch64 LinuxKVM (/dev/kvm)
Windows x86_64x86_64 LinuxWindows Hypervisor Platform (WHP) 有効

Windowsはポータブルチェックポイント、pause/resume、--freeze-sourceによるブランチをサポートします。GPUアクセラレーションは引き続き利用できません。既知の制限を参照してください。

その他

  • Kubernetes: RuntimeClassを通じてポッドをmicroVMとして実行します。
  • GPUとCUDA: virtio-gpu / Venus経由のVulkan、およびCUDA APIリモーティング。
  • Examples: python、node、docker-in-vm、local-llm、headless-browser、doom。
  • Development · ユーザードキュメントはsmolmachines.com/docsにあり、smol-machines/docsで執筆されています(修正はそちらへ、ランタイムのバグはこちらへ)。

カテゴリ