
2026/11/07 2:30
Devvm.dev:プロジェクトごとに一台のVM
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
devvm は、MIT ライセンスの無料オープンソースツールであり、Claude、Codex、Opencode などの AI エージェント向けにコード開発用隔離された仮想マシン(VM)サンドボックスを即座に作成します。Lima バックエンドを使用して macOS および Linux(arm64 または x86_64)上で動作し、共有ツール(node、python、go、rust、claude)を含む事前に構築されたベースイメージを共有することで、複雑な手動設定やエージェントログイン設定の必要性を排除し、新しい VM を数秒で起動可能にします。
このツールは、セキュリティを自動的に構成するため、プロジェクトフォルダのみを
~/web として読み書き可能なように VM にマウントし、~/.ssh、~/.aws、~/Documents のような重要なホームフォルダを環境から厳格に除外します。このアーキテクチャに加え、トークンを注入して階層別ネットワークアクセス(許可リスト、インターネット、公開、あるいはなし)を強制するマシンストアの代理サーバーを組み合わせたことで、脆弱性が悪用された場合の攻撃範囲を劇的に縮小します。API トークンなどの機密情報はローカルマシン上に留め置き、リクエスト時にのみプレースホルダーに置換されます。
技術的な柔軟性は組み込まれています:ツールチェーンはプロジェクトファイル(例:
package.json)に基づいて自動的に選択されますが、コマンドラインフラグを使用してカスタマイズ可能です。Docker、Nix、またはデスクトップ環境など、カスタムレイヤーを簡単なコマンド(devvm layer new)で追加することもできます。また、ポートは自動的に転送されます(例:VM の 5173 ポートを localhost:5173 に)。VS Code との統合は Remote-SSH を通じて機能します。システムの完全性を維持するため、git フックおよび macOS 上の設定はロックされており、VM がローカル挙動を変更するのを防止しています。本文
自由でオープンソース:プロジェクトごとに 1 つの VM (devvm)
コンセプト
隔離されたサンドボックス環境。プロジェクトのツールチェーンを搭載し、開発者自身またはコーディングエージェントが即座にコーディングを開始できるよう準備されています。
- ローカル実行:
などの場所で~/web
を実行します。devvm - ホストとの境界: 以下のディレクトリは VM の外側(ホスト)に残ります。
~/.ssh~/.aws~/Documents
動作環境とアーキテクチャ
VM 内のマウント状況
VM のシェル内(プロンプトが
(devvm) で始まる)では claude を実行します。
- エージェント: そのままの場所に動作し、プロジェクトフォルダーは**読み書き (read-write)**としてマウントされます。
- スキルと設定: **読み取り専用 (ro)**でマウントされます。
- ネットワーク: お使いのマシン上のプロキシを経由します。これによりトークンが追加され、インターネットへのアクセスもアロウルイストに従って制限されます。
お使いのマシン: ~/web $ devvm × ~/.ssh × ~/.aws × ~/Documents VM (devvm) ~/web $ claude █ ~/web rw skills ro settings ro token proxy allowlist
クイックスタート
1. プロジェクトに移動する
ターミナルを開き、任意のプロジェクトフォルダーに
cd で移動します。
お使いのマシン:
~ $ cd ~/some-project
2. devvm を実行する
devvm を実行すると、新しい VM に割り当てられる構成が表示されます。Enter キーを押すと VM が作成されます。
- ツールチェーン: node など自動検出または指定可能。
- エージェント:
など選択可能。claude - サイズ: デフォルト 4 CPUs, 8 GiB メモリ。
- ネットワーク: アロウルイスト設定。
お使いのマシン:
~/some-project $ devvm このフォルダー用の新しい VM は以下の構成を取得します: ツールチェーン: node エージェント: claude サイズ: 4 CPUs, 8 GiB メモリ ネットワーク層: allowlist カスタマイズしますか?[y/N] [Enter キーが押された]
3. エージェントを起動する
devvm は VM のシェル(プロンプトが (devvm) で始まる)を開きます。そこからエージェントを起動します。
VM 内:
VM(devvm) ~/some-project $ claude
ノート:
は初回起動前にログインが必要となります。Claude Codeコマンドを実行すると、VM 内でログイン処理が行われます。認証情報はお使いのマシン(ホスト)に保持されるため、以降は同じ VM を再利用可能です。devvm agent login claude
対応状況とカスタマイズ
ツールチェーンの自動選択
プロジェクトのファイルが参照しているツールチェーンは
devvm が自動選択します。新規作成時または --tools フラグで名称を指定して追加できます。
- 検出ロジック:
はフォルダー内のファイルを読み込んで判定します。devvm
→package.jsonnode
→pyproject.tomlpython
ファイル検出例:
~/web ├── package.json → node └── pyproject.toml → python
コーディングエージェント
- 動作環境:
,Claude Code
,Codex
は VM 内で動作します。opencode - 起動方法: VM 内のターミナルで「
」を実行します。claude
コマンド:
VM ~/web $ claude # 利用可能: claude, codex, opencode
レイヤー(ベースイメージ)
devvm は新規 VM のカスタマイズ時に選択できる docker, nix, desktop を同梱しています。独自のカスタムレイヤーは devvm layer new コマンドで作成可能です。
- 構成: ベースの上に
、さらにその上にdocker
を重ねた「docker+nix」構成が基本です。nix
レイヤーのスタック:
docker+nix └─ nix └─ docker └─ base
セキュリティと隔離性 (なぜ devvm か)
リスク比較表
| シナリオ | ターゲット資産 (侵害対象) | 安全な資産 |
|---|---|---|
| devvm を使用しない場合 | , , , | なし(マシン全体が侵害されるリスク) |
| devvm を使用する場合 | (隔離された環境) | , , |
攻撃被害の抑制
開発者はサプライチェーン攻撃や漏洩した機密情報、プロンプトインジェクションなどに直面する可能性があります。
devvm は合理的なデフォルト設定を同梱しており、ワンコマンドでサンドボックス環境からコーディングを開始できます。
- VM を使用しない場合: 攻撃がマシンへ至る経路は存在し、すべての資産が侵害対象になります。
- VM を使用する場合: プロジェクトは VM 内に配置され、各攻撃がマシンへ至る経路はVM の境界で止まります。
開発者向け設定:ゼロ構成 (Zero Config)
- オプションの追加機能: ベースイメージには
,oh-my-bash
,fzf
,zoxide (z)
,tree
が含まれています。tldr - Git の著者情報: すべての VM は Git の名前とメールアドレスを付与します。コミットはすべてユーザーまたはエージェントが作成したものとして扱われます。
- ポート転送: 自動的なポート転送を行います(例:VM 内の
→ ホストの:5173
)。localhost:5173 - VS Code との統合:
コマンドで Remote-SSH を経由して VM を開くことが可能です。devvm code
視覚的表現:
お使いのマシン (localhost:5173) │ ├─── SSH ───────► devvm-web (VM) │ │ │ ├── npm run dev (:5173 で準備済み) │ └── git commit (著者: ユーザー)
隔離されたサンドボックスの詳細
- マウント: VM はプロジェクトフォルダーを同じパスでマウントしますが、ホームフォルダー内の他の内容は一切認識しません(エージェント設定は読み取り専用)。
- ネットワーク: デフォルトでは「allowlist」層を取得し、プロキシ経由でのアクセスのみ許可されます。
- Git の保護 (macOS):
のフックと設定をロックするため、VM 内の変更がホストの Git に波及しません。.git - クローン (
): リポジトリをクローンした上で動作するため、作業ツリーや--clone
への直接アクセスを制限できます。.git
隔離マップ:
お使いのマシン: × ~/.ssh × ~/.aws × ~/Documents │ └──► ~/web (VM 内でマウント) ├── rw (プロジェクトファイル) └── .git (ロック済み) ネットワークフロー: プロキシ(アロウルイスト内のホストのみ許可)
セカンダリ VM の高速起動
- イメージ構築: 最初の VM はベースイメージを構築しますが、以降の VM はコピーとして数秒以内の起動が可能になります。
- 共有ツール: ツールチェーンのバージョンは一度だけ構築され、読み取り専用で共有されます。
可視化:
ベースイメージ (1 度構築) │ ├── devvm-web (起動済み) ├── node ├── python ├── go ├── rust └── claude (共有・読み取り専用) ├── devvm-api (起動済み) └── devvm-cli (起動済み)
コーディングエージェント向け最適化
- 隔離: エージェントは VM 内で動作するため、攻撃時はサンドボックス内に留まります。
- セキュリティ:
- クロードトークンや Codex ログイン情報はホストのマシンに保持されます。
- VM にはプレースホルダーが与えられ、実際のトークンは
のプロキシによって注入されます。devvm
- データフロー:
- スkil: **読み取り専用 (ro)**でマウント。
- 設定・MCP サーバー: コピーされる。
- 履歴・トークン: ホストに残り、プロキシ経由でのみ API アクセス可能。
データアーキテクチャ:
お使いのマシン ├── Skills │ (マウント) ──[RO]──► ├── Settings │ (コピー) ──> ├── MCP Servers │ (コピー) ──> └── Token │ (プレースホルダー) ──[プロキシが実際のトークンを追加]──► API VM └── エージェント: claude, codex, opencode
ご自身のもので作りましょう(カスタマイズ)
- カスタムレイヤー: 独自のレイヤー(例:
)を作成可能です。devvm layer new mailpit - セットアップ:
でユーザー選択のレイヤーや設定を適用します。devvm setup --layers - ベースイメージの選択:
フラグで特定のコンテナイメージ(例:--from
)から構築できます。node:24 - DevContainer への対応: プロジェクトに
が存在する場合、その設定を使用して VM を構築します。devcontainer.json
スタック例:
[上部] VM (devvm-web) │ (作成元: node + mailpit) │ [レイヤー] ユーザーのレイヤー (mailpit) │ [機能] ユーザーの機能、ダットファイル、エイリアス │ [ベース] コンテナイメージ: node:24
FAQ
動作環境は何ですか?
devvm は macOS および Linux (arm64 / x86_64) で動作します。Lima の必要があり、Homebrew を使用するとインストール可能です(Linux 場合は QEMU と /dev/kvm アクセス権限が必要)。
エージェントはお使いのマシン上で動作しますか? いいえ。VM のシェル内でのみ動作します。お使いのマシンにインストールされません。
無料ですか? はい。
devvm は MIT ライセンスの下でオープンソースです。
サンドボックスでコーディングを開始する手順
をインストールします。devvm- 任意のプロジェクトフォルダーで
を実行します。devvm