クライアント側で動作するサーバーレス仮想Linux環境 WebVM
(webvm.io)- WebVM は WebAssembly ベースでブラウザ内に Linux 環境を実行し、サーバーなしで x86 バイナリをクライアント側で扱えるようにする
- 中核基盤の CheerpX は、x86-to-WebAssembly JIT コンパイラ、仮想ブロックベースのファイルシステム、Linux システムコールエミュレータによってブラウザ仮想化を構成する
- 実行はブラウザの サンドボックス 内で処理され、x86 バイナリの実行はサーバーではなくユーザーのデバイス上で行われる
- 例示コマンドには
python3、gcc、objdump、vim、curlなどが含まれ、curl --max-time 15 parrot.liveにはネットワーキングが必要 - 別途体験環境として Alpine / Xorg / i3 WebVM が提供され、BrowserCode はブラウザで Claude Code を実行する関連項目
WebVMの実行方式
- WebVM は WebAssembly を通じてブラウザで動作する仮想 Linux 環境
- 基盤エンジンの CheerpX が x86 バイナリを安全なサンドボックス内で実行する
- 実行処理は完全に クライアント側 で行われる
CheerpXのブラウザ仮想化構成
- CheerpX はブラウザベースの仮想化のために次の要素を含む
-
x86-to-WebAssembly JIT コンパイラ
- 仮想 ブロックベースのファイルシステム
- Linux システムコールエミュレータ
-
体験環境と例示コマンド
- Alpine / Xorg / i3 WebVM を新しい WebVM 体験環境として提供
- 基本的な WebVM の例では次のコマンドを提案している
python3 examples/python3/fibonacci.pygcc -o helloworld examples/c/helloworld.c && ./helloworldobjdump -d ./helloworld | less -Mvim examples/c/helloworld.ccurl --max-time 15 parrot.live- このコマンドには ネットワーキング が必要
関連項目
- BrowserCode は WebAssembly を通じてブラウザで Claude Code を実行する関連項目
1件のコメント
Hacker News の意見
似たようなプロジェクトはほかにもいくつかある。VM 系では https://copy.sh/v86/、https://bellard.org/jslinux/、https://jamesfriend.com.au/pce-js/(https://github.com/jsdf/pce)、https://www.pcjs.org/ があり、最後のものは対応するハードウェアや OS が多い(https://github.com/jeffpar/pcjs)
Mac OS 系では https://infinitemac.org/(https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...)、https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo...、https://jamesfriend.com.au/pce-js/pce-js-apps/ もある
https://duckduckgo.com/?q=comptuers+built+in+minecraft
ベースになっているプロジェクトはオープンソースではなさそうだ。「WebVM は、私たちがホストしている CheerpX ビルドをベースにしています。ユーザーが WebVM の独自バージョンをデプロイすることは推奨しますが、現時点では CheerpX エンジン自体のセルフホスティングは許可していません。この公開 CheerpX ビルドは現状のまま提供され、技術調査、テスト、非商用利用には無料です。CheerpX/WebVM の上に製品を作りたい場合はご連絡ください」とある
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
WebVM のリード開発者で、Leaning Technologies の CTO だ。質問があれば答えるが、こちらはかなり遅い時間なので数時間後になるかもしれない。Discord に参加してもよい: https://discord.gg/yTNZgySKGa
取り組みは素晴らしい。軽い皮肉に聞こえないことを願う。付け加えると、vi を開いたら Esc がブラウザの問題なのかうまく効かず、「vi を終了できない」をまた言うことになるとは思わなかった
以前リンクされていたネットワーキング関連の記事は読んだが、具体的にどんなアプローチを取ったのか見てみたい
また、時々画面が固まり、キー入力が表示されなくなる。たいてい Backspace を押すと画面が戻る。Firefox の about:performance には該当タブの CPU 使用率が表示されず、自分のマシンの Linux htop でも Firefox が変に見えることはない
質問もある。タブを閉じて開き直しても新しいファイルが残っているのを見たが、開発者ツールで localStorage などは確認していない。それを使っているのか、それとも別のブラウザ機能を使っているのか気になる。これらのファイルは実際どのくらい永続的なのか?
ほかの返信を見た: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
タイトルは「WebVM はブラウザで動作する WebAssembly VM」くらいに直せばよさそうだ
バズワードが格好いい。結局はブラウザで動くLinux コマンドライン環境で、遅い
“CheerpX enables you to run existing 32-bit x86 native binaries” とある。奇妙なことに、ブラウザの wasm64 対応は何年も停滞していて、残念なことだ
ネットワーキングを Tailscale で提供しているのが賢い。潜在的な問題をいくつか回避してくれる
https://bellard.org/jslinux/よりずっと遅く感じる
格好いいが、キー入力が頻繁に表示されないので実質的には使いにくい。Web IDE のローカル開発環境というユースケースで見ても、十分に速いようには見えない
node --versionは初回実行後は速いが、JavaScript の実行は非常に遅い:user@:~$ time node -e "console.log('Hello')"Helloreal 0m7.693suser 0m0.012ssys 0m0.000sこういうものの実用的なユースケースが何なのか気になる
いくつかの例にすぎず、リストはもっと長くなり得る
ブラウザ内で Node.js サーバーとフロントエンドを実行するため、コンピュータにブラウザ以外は何もインストールしたり実行したりせずに、Graphweaver で何ができるかを確認できる。この例では SQLite データベースを REST API と組み合わせ、Graphweaver がその結果として GraphQL API を提供する