世界を動かす技術を、日本語で。

Show HN: macOS向けのローカルファーストLinux MicroVMs

概要

  • Shuru は、macOS上で軽量なLinuxサンドボックスを即時起動可能なCLIツール
  • Apple Siliconで約1秒の高速起動、すべての実行はデフォルトで エフェメラル
  • チェックポイント機能 で環境の保存・復元が可能、状態の分岐や再利用も容易
  • ネットワークアクセスは 明示的な許可 が必要、安全性を重視
  • Rust製の 単一バイナリ、依存関係なし、AIエージェントのコード実行等に最適

Shuru:シンプルなCLIによるサンドボックス操作

  • shuru run -- コマンドで、Linux VMを即時実行し、終了後は環境が破棄される
    • 例:shuru run -- echo "hello from the sandbox" 結果:hello from the sandbox
  • VM内で Alpine Linux が利用され、cat /etc/os-release | head -1で確認可能
  • デフォルトでは 永続化なし、毎回クリーンな環境が提供される
  • ネットワークアクセスはデフォルトで 禁止
    • 明示的な許可が必要:shuru run --allow-net -- apk add python3
  • CPU数、メモリ、ディスクサイズ はオプションで指定可能
    • 例:shuru run --cpus 4 --memory 4096 -- free -m | head -2
    • 例:shuru run --disk-size 2048 -- df -h /
  • チェックポイント機能 で、環境の状態を保存し再利用可能
    • 例:shuru checkpoint create myenv --allow-net -- sh -c 'apk add nodejs npm'
    • 保存後はshuru run --from myenv -- node -e 'console.log("ready")'で即復元・実行
  • チェックポイントは 分岐・再利用 が可能、複数の開発環境構築に最適
  • ポートフォワーディング 機能で、ゲストVM内のサーバーをローカルに公開
    • 例:shuru run --from py -p 8080:8000 -- python3 -m http.server 8000
    • curl http://127.0.0.1:8080/でアクセス可能
  • vsockトンネリング により、ネットワーク許可不要で安全な通信実現

Shuruの特徴と用途

  • Apple Virtualization.framework を活用し、macOS上で高速なLinux環境を提供
  • Apple Silicon で約1秒の起動速度、開発・テスト・検証用途に最適
  • AIエージェントのコード実行 など、使い捨てLinux環境が求められる場面に適合
  • Rust製単一バイナリ で、インストールや依存関係が不要
  • セキュリティ重視 の設計、ネットワークや永続化の明示的制御が可能
  • 柔軟な環境構築・保存・再利用 による効率的な開発ワークフロー実現

Hackerたちの意見

これって、例えばリマと比べて何がいいの?

リマは、設定次第でシュルができることの多くをこなせるよ。主な違いはデフォルト設定と、最初にどれだけ設定しなきゃいけないかってところ。シュルを使えば、一時的なVMが作れて、ネットワークもなくて、毎回クリーンなrootfsが使えるから、設定ファイルに触れる必要がないんだ。シュルを実行すれば、すぐに使えるよ。チェックポイントやブランチもCLIに組み込まれてるから、実験的な機能を試す必要もない。だけど、リマはもっと大きくて成熟したプロジェクトだね。シュルは、学ぶためと、この特定のユースケースに対してもっとまともなデフォルトが欲しかったから作ってるんだ。

エージェントスタックは専門的なレイヤーに分かれてきて、サンドボックス化が明らかに独立したものになってきてるね。シュル、E2B、モーダル、ファイアクラッカーのラッパー。今月初めに、これらのレイヤーが非常に異なる防御プロファイルを持っている理由と、モノリシックにするのが間違いだってことについて書いたよ。https://philippdubach.com/posts/dont-go-monolithic-the-agent... 編集: スペルミス

いい記事だし、部分的なAIソフトウェア開発の経験と似てる気がする。意思決定やソフトウェアアーキテクチャの結論を保存してないと(開発者とAIの間で作られたもの)、ソフトウェア設計に関する貴重なコンテキスト情報を失ってるよね。とはいえ、この記事がマイクロVMの話にどれだけ関連してるかはちょっと疑問だけど。

この文脈で「ローカルファースト」ってどういう意味?ただローカルってこと?ソフトウェアがローカルで動くってこと?

うん、つまりすべてが自分のマシンで動くってことだよ。E2Bやsprites.devみたいな、クラウドでサンドボックスを提供するサービスもあるけど、シュルはAppleのVirtualization.frameworkを使ってローカルでVMを動かすから、何もMacから出ないんだ。

残念ながらそうだね。最近はただのバカみたいなマーケティング用語になっちゃってる。

これ、macOSしかサポートしてないみたいだから、実用的にはローカル専用だね。

これを盗んで、macOS用のローカルファースト版のhttps://microterm.devを作るよ :) アイデアは、すべてのターゲットで統一された環境を持つことで、変わるのは速度とRAMの量だけって感じ。

いいね、ぜひ見てみたい!

iOSのSafariがリダイレクトループにハマってる(読み込み...インジケーターが90%に達したらハードリフレッシュ、エラーメッセージが出るまで繰り返し)

これってどうやってVM/コンテナを動かしてるの?クラウドとか、container2wasmみたいな感じ?今、携帯でアルパインターミナル使ってるんだけど、ブラウザで動いてるのか本当に聞きたくなった。

すごくいいね!新しいプロジェクトにぴったりなものを探してたんだ。(リツールとOpenClawを組み合わせたようなプロジェクトに取り組んでるよ。中小企業が社内アプリを素早く作るために使うやつ。)

これってAppleのコンテナと比べてどうなの?この分野での革新にワクワクしてる! 1 - https://github.com/apple/container

Appleのコンテナは、Dockerスタイルのワークフロー、OCIイメージ、レジストリなどが中心だよ。ShuruはマイクロVMでチェックポイント機能があるだけで、もっとシンプルな範囲だね。

誰かこれをWindowsで試した人いる?WSLは、非開発者向けの消費者アプリを出すには理想的じゃないよね。設定が必要だから。

ここでの価値は「ローカルVM」じゃなくて、デフォルトが逆になってることなんだ。その他はすべて永続的でネットワーク接続されてるのに、これは一時的で孤立してる。小さな変化だけど、実行しようとしてるコードを信用できないときには重要だよ。

これめっちゃいいね!何ヶ月も前から仮想化フレームワークのマイクロVMが欲しかったんだ!Dockerも悪くないけど、オーバーヘッドが理想的じゃないよね。デフォルト設定(エフェメラル、ネットワークオフ)が好きだな。ホストマップされたディレクトリを追加することについてどう思う?エフェメラルサンドボックス用のMCPサーバーがあって、いろんなバックエンド(Docker、E2B、Modal、さらにはWASM)をサポートしてるんだ。これを追加することを考えてみるよ。

Shuru、かっこいいね!俺も似たような感じのものに取り組んでるんだ、まずはLinuxホスト向けに;マイクロVM、デフォルトオフラインとか。まだリリースする準備はできてないけど、試しに使い始めてるよ。