agentpc について
agentpcは、Apple Silicon搭載Mac上でAIエージェントが使うWindows、Ubuntu、Arch Linux ARMのデスクトップVMを素早く作成・リセットできます。1つのMCPサーバーでVMを管理し、デスクトップ操作やコマンド実行、チェックポイントに対応します。
主な機能
- 01デスクトップVMの迅速な作成とリセット
- 02Windows、Ubuntu、Arch Linux ARMに対応
- 03ツールによるデスクトップ操作とスクリーンショット
- 04SSH経由のコマンド実行
- 05MacとVM間のファイル転送
- 06VMチェックポイントの保存と復元
活用シーン
- 01隔離されたデスクトップでAIエージェントにアプリを操作させる
- 02クリーンなVMでインストールスクリプトをテストする
- 03VMの状態を保存してチェックポイントに戻す
- 04MacからVM内のサービスにアクセスする
MCP 対応
agentpcはstdio経由でMCPサーバーを提供し、クライアントからVMの作成・管理、デスクトップ操作、コマンド実行、ファイル転送、ポート転送を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
agentpc
AI エージェント向けの、すぐに使えてリセット可能な Windows、Ubuntu、Arch Linux ARM デスクトップを Mac 上で利用できます。
ウェブサイト:https://agentpc.pawanpaudel.com.np
agentpc を使うと、AI エージェント(Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、VS Code、または 任意の MCP クライアント)が作業できる、本物のデスクトップコンピューターを利用できます。数秒で VM を作成し、エージェントにクリック、入力、スクリーンショットの撮影、コマンドの実行を任せたあと、クリーンな状態にリセットできます。Apple のハイパーバイザー上で QEMU を使って VM を実行し、MCP 経由でエージェントに提供する、単一の Rust バイナリです。
目次
- 機能
- 要件
- インストール
- クイックスタート
- AI エージェントでの使用
- CLI リファレンス
- イメージ
- 設定
- 仕組み
- トラブルシューティングとゲスト OS のヒント
- アンインストール
- セキュリティ
- 開発
- ライセンス
機能
- すぐに使える VM。 新しい VM は、実行中のデスクトップの保存済みスナップショットから再開するため、約 1 秒(Ubuntu、Arch)または約 4 秒(Windows)で使用できます。
resetを実行すると、VM を同じ速さでクリーンな状態に戻せます。 - チェックポイント。 リスクのある手順の前に、実行中の VM(ディスクとメモリ)を保存し、数秒でその状態に戻せます。
- 本物のデスクトップ。 Windows 11(ARM)、Ubuntu 24.04 または別のリリース(XFCE)、Arch Linux ARM(XFCE)を利用できます。いずれもエージェントが操作できるデスクトップ制御サーバーを備えています: すべての OS で cua-driver を利用できます。
- すべてを扱う 1 つの MCP サーバー。 エージェント自身が VM を作成、操作、スクリーンショット撮影、削除できます。
任意の MCP クライアントで動作し、
agentpc mcp-installでよく使われるクライアントをセットアップできます。 - シェルと画面へのアクセス。 SSH 経由で PowerShell または bash を実行できます。ゲスト OS の起動中や応答停止中でも、ハイパーバイザーから直接約 40 ms で PNG スクリーンショットを撮影できます。
- ファイルとポート。 Mac と VM の間でファイルやフォルダーをコピーし、VM 内で実行中のサーバーに Mac からアクセスできます。
- エージェント向けに準備済みのゲスト OS。 ブラウザー(Windows では Edge、Ubuntu では Chrome、Arch では Chromium)を備えた 1280x800 のデスクトップを利用できます。また、無人作業を妨げるポップアップ、更新による再起動、バックグラウンドジョブは無効になっています。
- 作業を見守る。 すべての VM にブラウザービューアーがあり、エージェントの作業を確認できます。準備完了後に Mac のデフォルトブラウザーで開くには、
agentpc create ubuntu --openまたは MCP のopen_in_browser: trueを使います。どちらもデフォルトではタブを開きません。 - x86 アプリ。 x64 Windows アプリは Prism 経由で動作します。
ubuntu-x86apps/arch-x86appsでは、FEX 経由で x86_64 Linux プログラムと amd64 コンテナーを実行できます。 - 任意のバージョンを並行実行。 Ubuntu 22.04、24.04、26.04、または複数の Windows 11 リリースを同時に実行できます。各イメージには、OS のバージョン、ソース、ビルド日が記録されます。
- ローカルでプライベート。 すべて Mac 上で実行され、
127.0.0.1のみでリッスンします。
要件
| 要件 | 詳細 |
|---|---|
| ハードウェア | Apple Silicon Mac(M1 以降。M4 でテスト済み) |
| OS | QEMU がサポートする macOS バージョン:現行バージョンと、最長 2 年間の直前のバージョン(macOS 15 でテスト済み) |
| ランタイム | Homebrew からインストールしたQEMU(インストーラーが処理します。必要に応じて Homebrew もインストールします) |
| メモリ | 実行中の Ubuntu または Arch VM 1 台あたり 4 GB、実行中の Windows VM 1 台あたり 8 GB |
| ディスク | Ubuntu または Arch のイメージ 1 つあたり約 10 GB、Windows のイメージ 1 つあたり約 30 GB(各スナップショットを含む) |
インストール
curl -fsSL https://agentpc.pawanpaudel.com.np/install.sh | sh
インストーラーは次の処理を行います。
- 最新リリースをダウンロードし、チェックサムを検証します。
agentpcを~/.local/binに(sudoを使わずに)インストールし、PATHに追加します。- QEMU が見つからない場合は Homebrew でインストールします。Homebrew も必要に応じて先にインストールします。この際、パスワードの入力は一度だけ求められます。
- 見つかったエージェントに MCP サーバーを登録します(
agentpc mcp-install)。 agentpc doctorですべてを確認します。
後でアップグレードするには、agentpc update を実行してください(確認だけする場合は agentpc update --check)。インストーラーを再実行してもアップグレードできます。インストーラーのオプションは次のとおりです。
| 変数 | 効果 |
|---|---|
AGENTPC_VERSION=0.1.0 | 特定のバージョンをインストールします |
AGENTPC_INSTALL_DIR=<dir> | ~/.local/bin 以外の場所にインストールします |
AGENTPC_NO_MCP=1 | MCP サーバーの登録をスキップします |
ソースからビルドする方法については、開発を参照してください。
クイックスタート
Ubuntu:
agentpc create ubuntu # first run: downloads (~1.2 GB) and prepares the image; then ~1 s per VM
Arch Linux ARM:
agentpc create arch # first run: downloads and prepares the image; then ~1 s per VM
Windows: Microsoft のライセンスでは Windows イメージの再配布が認められていないため、各 Mac で一度ずつ独自にビルドします。すでにお持ちでない場合、agentpc は Microsoft から公式の Windows 11 ARM64 ISO(7.3 GB、チェックサム検証済み)をダウンロードします。
agentpc image build windows # once: download + ~12 min install; or pass --iso <path>
agentpc create windows # ~4 s per VM
次のようなことをエージェントに依頼してみてください。
- 「Ubuntu VM を作成し、ターミナルを開いて
uname -aを実行してください。」 - 「ubuntu-1 をリセットし、クリーンなマシンでインストールスクリプトが動作するか確認してください。」
- 「windows-1 で Notepad を開き、短いメモを入力して、スクリーンショットを見せてください。」
VM を自分で確認するには、agentpc info <name> が表示するビューアー URL を開いてください。
AI エージェントでの使用
agentpc は MCP サーバーです(agentpc mcp、stdio)。1 つのサーバーですべての VM を操作できます。
Claude プラグイン
Claude Code では、agentpc プラグインをインストールしてください。MCP サーバーと、Claude に VM をいつ、どのように使用するかを教えるスキルが含まれています。
/plugin marketplace add pawanpaudel93/agentpc
/plugin install agentpc@agentpc
プラグインはインストール済みの agentpc バイナリを実行するため、先にインストールしてください(インストールを参照)。プラグインをインストールすると、Claude Code 用の MCP サーバーはすでに登録されているため、重複を避けるために agentpc mcp-install は Claude Code をスキップします。
その他のエージェント
登録すると、インストール済みの対応エージェントすべてに登録されます(インストーラーがこの処理を行います)。
agentpc mcp-install # or pick: agentpc mcp-install claude claude-desktop codex
対応エージェント:Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、VS Code(登録後、Claude Desktop を再起動してください)。既存の JSON mcpServers.agentpc または Codex の [mcp_servers.agentpc] エントリを更新する際は、カスタムの環境変数やオプションを保持しながら、管理対象のコマンドと引数を更新し、周囲のコメントと空行も維持します。設定は非公開の一時ファイルを通して書き込まれます。無効な設定は置き換えず、処理を拒否します。複数行の TOML 値は、値全体として編集されます。その他の MCP クライアントでは、次の内容を追加してください。
{
"mcpServers": {
"agentpc": { "command": "agentpc", "args": ["mcp"] }
}
}
このリポジトリにはプロジェクトレベルの設定(.mcp.json、.codex/config.toml、.cursor/mcp.json、.gemini/settings.json、.vscode/mcp.json)も含まれているため、クローン内で開いたエージェントは自動的にサーバーを認識します。
ツール
| ツール | 説明 |
|---|---|
list_vms | VM(所有者、状態、サイズ、チェックポイント、ビューアー、および実行中の x86apps VM の場合は x86_tso)と、OS バージョンを含む利用可能なイメージを一覧表示します |
create_vm | VM を作成し(必要に応じてバージョン、サイズ、またはオフラインを指定)、デスクトップの準備が整うまで待機します。同じセッション内で同じ name とイメージを指定して再実行すると、すでに作成された VM が返されます。停止中の場合は起動します。open_in_browser: true を指定すると、準備完了後に Mac のデフォルトブラウザーでビューアーを開きます(デフォルトは false。呼び出しごとに指定)。ブラウザーの起動に失敗しても警告が表示されるだけで、作成は失敗しません |
start_vm / stop_vm | 停止中の VM を起動する/正常にシャットダウンする |
reset_vm | すべての変更を破棄し、イメージの新しいコピーに戻します |
checkpoint_vm / restore_vm | VM のディスクとメモリをラベル付きで保存し、数秒でその状態に戻します |
delete_checkpoint | ラベルを指定してチェックポイントを削除します。VM には影響しません |
delete_vm | ディスクとチェックポイントを含めて VM を削除します |
take_screenshot | ハイパーバイザーから PNG スクリーンショットを取得します。save_to を指定すると Mac 上のパスにも保存します |
run_command | コマンドを実行します(Windows では PowerShell、Ubuntu と Arch では bash)。終了コード、標準出力、標準エラーを返します。フォアグラウンド実行は timeout(デフォルトは 120 秒)で終了し、部分的な出力を返します。background: true を指定すると、get_job_status 用のジョブ ID を返します |
get_job_status | ジョブ ID でバックグラウンドジョブの状態(実行中、終了(終了コード付き)、停止、終了コードなしで終了)とログの末尾を確認します |
stop_job | バックグラウンドジョブと、そのジョブが起動したすべてのプロセスを停止します(Linux では、デタッチされたプロセスが抜け出せない systemd スコープ、Windows ではプロセスツリー)。すでに終了したジョブの場合は、ジョブが残した実行中のプロセスのみを停止します |
upload_file / download_file | Mac と VM の間でファイルまたはフォルダーをコピーします |
forward_port | VM で実行中のサーバーに Mac からアクセスできるようにします(SSH トンネル経由の TCP。ゲストの 127.0.0.1 のみで待ち受けるサーバーにも接続できます。0.0.0.0 で待ち受ける UDP サーバーには protocol: "udp" を指定します) |
list_forwards / delete_forward | VM のアクティブなポート転送を一覧表示する/ホストポート(および任意のプロトコル)を指定して停止する |
read_vm_log | VM が起動しない場合やデスクトップに接続できない場合に、VM の qemu または serial ログの末尾を読み取ります |
list_desktop_tools | VM 内のデスクトップ操作ツールを、それぞれに必要な引数と読み取り専用かどうかを含めて一覧表示します。名前が誤っている場合は、類似する候補を返します |
use_desktop_tool | ツールのいずれかを呼び出します。クリック、入力、アプリの起動、UI ツリーの読み取りなどを行います。引数または名前が誤っている場合は、ツールの引数または類似する候補を返します |
デスクトップツールの応答が再接続に関するメッセージで始まる場合(VM またはそのドライバーが再起動した場合)、以前のスナップショット ID とブラウザーセッションは失われています。新しいスナップショットを取得し、browser_prepare をもう一度実行してください。
MCP セッションが作成、起動、リセット、または復元した VM は、セッション終了時に停止されます(削除はされません)。ただし、AGENTPC_KEEP_RUNNING=1 の場合は停止されません。セッションのサーバーが強制終了された場合は、次に起動した MCP サーバーが該当する VM を停止します。list_vms では、そのような VM は owner_running: false と表示されます。また、同じ名前とイメージを指定した create_vm は、要求したセッションに既存の VM を引き渡します。セッション終了時の停止処理は VM ごとに約 45 秒を上限とします(ロック待機、ACPI シャットダウン、その後に強制終了)。別のセッションに引き継がれた VM はそのまま残されます。
承認プロンプト
すべてのデスクトップ操作は use_desktop_tool を経由します。このツールは破壊的な操作としてマークされているため、ツール呼び出しを確認するクライアントでは、クリックやキー入力のたびに確認を求められます。agentpc のツールを事前に承認するには、次のように設定します。
| クライアント | 設定 |
|---|---|
| Claude Code | /permissions で mcp__agentpc(すべてのツール)を許可するか、設定の permissions.allow に追加します |
| Codex | ~/.codex/config.toml の [mcp_servers.agentpc] の下に default_tools_approval_mode = "approve" を設定します |
| Gemini CLI | ~/.gemini/settings.json の agentpc サーバーに "trust": true を設定します |
| その他 | クライアント独自のツール承認設定 |
これにより、Mac 上のファイルを読み書きする upload_file と download_file を含む、agentpc のすべてのツールが承認されます。VM 自体は使い捨てです。reset_vm を実行すると、VM 内で行ったすべての操作が元に戻ります。
| ゲスト | デスクトップ | デスクトップ制御サーバー |
|---|---|---|
| Windows | Windows 11(ARM64)、1280x800、Edge | cua-driver(SSH 経由) |
| Ubuntu | Ubuntu 24.04 または別のリリース、X11 上の XFCE、1280x800、Google Chrome;.deb をダブルクリックするとインストールされます | cua-driver(SSH 経由) |
| Arch | Arch Linux ARM(ローリングリリース)、X11 上の XFCE、1280x800、Chromium;sudo pacman -Syu --noconfirm <pkg> | cua-driver(SSH 経由) |
AGENTS.md にエージェント向けの使い方のヒントがあります。
CLI リファレンス
VM
VM を操作するコマンドでは、複数の名前を指定できます(agentpc stop a b)。処理を開始する前にすべての名前を確認し、失敗があっても続行します(いずれかが失敗した場合、終了ステータスは 1 です)。すべてのコマンドで --help を使用できます。
| コマンド | 説明 |
|---|---|
agentpc create <image> [name] [--memory GB] [--cpus N] [--offline] [--open] | ubuntu、windows、arch、または ubuntu-22.04 のようなバージョンを指定して VM を作成します。Ubuntu と Arch のイメージがない場合は取得します。名前は最大 64 文字で、英字、数字、. - _ を使用できます。--memory は 2~64 GB、--cpus は 1~16(デフォルトは 4)です。デフォルト以外のサイズでは、再開ではなくコールドブートします。--offline:インターネットおよびこの Mac へのアクセスを無効にします。--open(別名 --open-in-browser):準備ができた VM のビューアーを Mac のデフォルトブラウザーで開きます。デフォルトでは無効です |
agentpc list [--json](ls) | VM とイメージを表示します。--json を指定すると、MCP の list_vms ツールと同じデータが返されます |
agentpc info <name> | ビューアー URL(VNC パスワード付き)、SSH と VNC の詳細、チェックポイント、および x86apps VM での x86 プログラムの実行方法(x86 programs: FEX, hardware|emulated TSO)を表示します |
agentpc start <name>… | --all | 停止中の VM を起動します |
agentpc stop <name>… | --all | VM を正常にシャットダウンします。ディスクは保持されます。agentpc が電源ボタンの制御を logind に渡す前に取得された Arch イメージでは、agentpc image snapshot <image> で更新するまで、停止のたびに約 3 分のタイムアウトを待ちます |
agentpc reset <name>… | すべての変更を破棄し、イメージの新しいコピーの状態に戻します |
agentpc rm <name>…(delete) | ディスクとチェックポイントを含めて VM を削除します |
agentpc checkpoint <name> <label> [-d] | VM のディスクとメモリーを保存します(実行中の VM は約 5 秒間一時停止します)。または、チェックポイントを削除します |
agentpc restore <name> <label> | チェックポイント時点の状態に VM を正確に戻します(数秒で再開します) |
agentpc ssh <name> [command] | コマンドを実行するか、コマンドを指定せずにシェルを開きます |
agentpc screenshot <name> [file] | PNG スクリーンショットを保存します |
agentpc cp <src> <dst> | ファイルをコピーします。VM 側のパスは <name>:<path> です。例:agentpc cp app.msi windows-1:Downloads/ |
agentpc forward <name> <guest-port> [host-port] | 127.0.0.1:<host-port> から、実行中の VM のポートに転送します(SSH 経由)。--udp を指定すると、UDP を転送します(ゲストの 0.0.0.0 上のサーバーが対象です)。--list を指定すると VM のポート転送を表示します。--rm <host-port> を指定するとポート転送を停止します(プロトコルを選ぶには --udp/--tcp を追加します) |
イメージコマンド
| コマンド | 説明 |
|---|---|
agentpc image pull <image> | 公開済みイメージをダウンロードします。例:ubuntu、ubuntu-22.04、ubuntu-x86apps、arch、arch-x86apps、またはバージョンを固定した ubuntu-24.04-YYYYMMDD / arch-rolling-YYYYMMDD。失敗後に再度プルすると、検証済みのパーツを再利用して再開します |
agentpc image build <image> [--iso <path>] | イメージをローカルでビルドします(Ubuntu は約3分、Arch は約6分、ubuntu-x86apps は約8分、arch-x86apps は約10分、Windows は約12分+ISO のダウンロード) |
agentpc image ls (list) | OS バージョンとともにローカルイメージを一覧表示します |
agentpc image info <image> | イメージのバージョン、ソース、ビルド日、デスクトップサーバーを表示します |
agentpc image rm <image>… (delete) | ローカルイメージを削除します(VM、ビルド、プル、またはスナップショットで使用中の場合は拒否されます) |
agentpc image snapshot <image> | この agentpc のゲスト環境設定をイメージに適用し、VM が再開時に使用するスナップショットを再取得します(ビルドとプルではこの処理が行われます)。先にそのイメージの VM を削除する必要があります |
agentpc image push <image> | メンテナー向け:Ubuntu または Arch のイメージを ghcr.io に公開します |
セットアップ
| コマンド | 説明 |
|---|---|
agentpc mcp | stdio で MCP サーバーを実行します(エージェントが起動するコマンドです) |
agentpc mcp-install [clients…] | エージェントに MCP サーバーを登録します(プラグインがインストールされている場合は Claude Code をスキップします。遅いビルドや起動でタイムアウトしないよう、Codex の MCP タイムアウトを延長します) |
agentpc mcp-uninstall [clients…] | エージェントから MCP サーバーの登録を解除します |
agentpc update [--check] | 最新リリースに更新します(チェックサム検証済み。イメージと VM は保持されます。更新後、agentpc list はゲスト環境設定が古いイメージを示し、agentpc image snapshot <image> で更新できます)。別名:upgrade。バイナリのディレクトリに書き込み権限がない場合は、sudo agentpc update の実行または AGENTPC_INSTALL_DIR を指定した再インストールを提案します |
agentpc doctor | 前提条件と macOS および QEMU のバージョンを確認します(macOS 15 未満では x86apps VM がエミュレートされた TSO を使用するため、また QEMU 9.0 未満の場合に警告します) |
agentpc clean [-n] | ディスク容量を解放します。必要に応じて再取得されるダウンロード(ISO、クラウドイメージ、約830 MB の Arch Linux ARM tarball)、中断されたビルド、プル、チェックポイントの残りファイル、その他のバージョンの TSO ライブラリが対象です。イメージや VM には手を加えず、実行中のビルド、プル、プッシュで使用中のものは保持します(「kept …」と表示)。VM が使用していないイメージを一覧表示します |
agentpc uninstall [--keep-data] [-y] | agentpc を削除します(アンインストールを参照) |
agentpc completions <shell> | bash、zsh、fish 用のタブ補完を出力します。例:agentpc completions zsh > ~/.zfunc/_agentpc |
イメージ
イメージは、OS、デスクトップ、エージェントツールがインストールされた読み取り専用ディスクです。各 VM はイメージのコピーオンライトクローンであるため、VM はクリーンインストールから起動し、必要な容量は数 MB だけです。
イメージ名は <os>-<version> 形式で、複数のイメージを並行してインストールできます。各 VM は、どのイメージから作成されたかを記憶します。ubuntu のようにバージョンを省略すると ubuntu-24.04、arch は arch-rolling、windows(または windows-11)は windows-11-25h2 を指します。12分のビルドを省略するため、25H2 がビルドされていない場合、create と image info はインストール済みの最新の Windows 11 イメージにフォールバックします。テストハーネスなど、リリースが重要な場合は完全な名前を指定してください。
| イメージ | ソース | 入手方法 |
|---|---|---|
ubuntu = ubuntu-24.04 | Ubuntu 24.04 の公式クラウドイメージ | image pull(初回の create 時に自動実行)、または image build |
ubuntu-<release> | cloud-images.ubuntu.com/releases にある任意のリリース。例:22.04、26.04 | image build ubuntu-22.04。公開済みの場合は image pull も可能 |
ubuntu-x86apps = ubuntu-24.04-x86apps | x86_64 および i386 の Linux プログラムも実行できる Ubuntu 24.04(x86_64 Linux プログラムを参照) | image pull(初回の create 時に自動実行。ダウンロードに失敗した場合はローカルでビルド。約8分)、または image build ubuntu-x86apps |
ubuntu-22.04-x86apps | x86 プログラムに対応した 22.04(x86apps は 22.04 と 24.04 のみ) | image build ubuntu-22.04-x86apps。公開済みの場合は image pull も可能 |
arch = arch-rolling | Arch Linux ARM(コミュニティによる Arch の移植版)。Ubuntu ヘルパー VM 内で aarch64 tarball からインストール | image pull(初回の create 時に自動実行。ダウンロードに失敗した場合はローカルでビルド。約6分)、または image build arch(Ubuntu イメージが必要です。見つからない場合は取得されます) |
arch-x86apps = arch-rolling-x86apps | x86_64 および i386 の Linux プログラムも実行できる Arch Linux ARM(x86_64 Linux プログラムを参照) | image pull(初回の create 時に自動実行。ダウンロードに失敗した場合はローカルでビルド。約10分)、または image build arch-x86apps |
windows-11-25h2 (windows) | Windows 11 25H2(Home/Pro)、Microsoft 提供の 7.3 GB ISO | image build windows |
windows-11-24h2、windows-11-23h2 | 以前の Windows 11 リリース(Home/Pro) | image build windows-11-23h2 |
windows-<name> | 独自の Windows 11 ARM64 Home/Pro ISO | image build windows-<name> --iso <path> |
Apple Silicon でネイティブ速度で動作するのは ARM64 版 Windows のみのため、x64 のみのリリースは提供していません。また、Windows 10 の ARM64 ビルドは Apple Silicon で起動時にハングするため、最低要件は Windows 11 です。
無人インストールでは Home/Pro のセットアップキーを使用するため、Enterprise と LTSC の ISO はサポートされません。ファイル名からビルド対象のリリースがわかる場合は、~/Downloads 内の ISO が使用されます。リリース名を指定した --iso も、そのリリースと一致している必要があります(24H2 の ISO を windows-11-25h2 にすることはできません)。
Windows はライセンス認証されていない状態で動作します(表示されるのは透かしのみです)。必要であれば、ご自身のキーでライセンス認証してください。
イメージは、新品の PC を購入したときと同様のクリーンインストールです。Windows には Visual C++ 再頒布可能パッケージも .NET もなく、組み込みの .NET Framework 4.8.1 のみが含まれ、PowerShell 7 もありません。お使いのマシンでは動作するのに、VM では VCRUNTIME140.dll などが見つからず失敗するプログラムは、インストーラーで提供されるべき依存関係が不足しています。Microsoft の評価版 ISO は、インストール時点ですでに期限切れで、1時間ごとにシャットダウンするため提供していません。
Microsoft が提供している ARM64 ISO は現行版のみです。以前のバージョンはアーカイブミラー(archive.org、bobpony.com)からダウンロードします。すべての ISO は固定された SHA-256 と照合されるため、ミラーによって改変されたファイルに置き換えられることはありません。また、ISO は ~/.agentpc/cache に保存されます。すべて en-us 版です。別の言語版が必要な場合は、ご自身でダウンロードして --iso に渡してください。
agentpc image build ubuntu-22.04 # ~3 min
agentpc create ubuntu-22.04 # VMs from different versions run side by side
各イメージには、その内容を示す情報が記録されています(agentpc image info <image>)。
{
"os": "windows",
"version": "Windows 11 Pro 25H2 (build 26200.6584)",
"version_id": "11-25H2",
"arch": "arm64",
"base": "Windows 11 25H2 (Home/Pro) ISO, ARM64, en-us",
"built": "20260927",
"agentpc": "0.1.0",
"desktop_server": "cua-driver 0.30.3",
"iso_sha256": "32cde007…"
}
公開イメージは単一のパッケージ ghcr.io/pawanpaudel93/agentpc にあり、イメージ名をタグとして付けています。Windows イメージは再配布できません。
| タグ | 意味 | プルするコマンド |
|---|---|---|
ubuntu-24.04 | Ubuntu 24.04 の最新ビルド(ubuntu ともタグ付けされています) | agentpc image pull ubuntu |
ubuntu-<release> | 別のリリースの最新ビルド | agentpc image pull ubuntu-22.04 |
ubuntu-24.04-YYYYMMDD | 特定のビルド(固定済み。ローカルではビルドできません) | agentpc image pull ubuntu-24.04-YYYYMMDD |
ubuntu-24.04-x86apps | x86 プログラムを含む Ubuntu 24.04 の最新ビルド | agentpc image pull ubuntu-x86apps |
ubuntu-24.04-x86apps-YYYYMMDD | 特定のビルド(固定済み。ローカルではビルドできません) | agentpc image pull ubuntu-24.04-x86apps-YYYYMMDD |
arch-rolling | Arch Linux ARM の最新ビルド(arch ともタグ付けされています) | agentpc image pull arch |
arch-rolling-YYYYMMDD | 特定のビルド(固定済み。ローカルではビルドできません) | agentpc image pull arch-rolling-YYYYMMDD |
arch-rolling-x86apps | x86 プログラムを含む Arch Linux ARM の最新ビルド | agentpc image pull arch-x86apps |
arch-rolling-x86apps-YYYYMMDD | 特定のビルド(固定済み。ローカルではビルドできません) | agentpc image pull arch-rolling-x86apps-YYYYMMDD |
固定済みのビルドはダウンロード専用です。image build はこれを拒否し、ダウンロードに失敗した create も、代わりに今日のビルドを作成することはありません。短縮名も使用できます(ubuntu-x86apps-YYYYMMDD は ubuntu-24.04-x86apps-YYYYMMDD を指します)。プッシュするとローリングタグは更新されますが、既存の日付付きタグは、ローカルイメージを再キャプチャした後も変更されません。日付付きタグは現在のローリングイメージとは限らず、元の公開イメージを引き続き選択します。異なるマシン上の公開者は、新しい日付のプッシュを直列化する必要があります。レジストリ側に不変タグがない場合、タグの確認と作成はアトミックではありません。
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
AGENTPC_HOME | ~/.agentpc | イメージ、VM、キー、キャッシュの保存場所 |
AGENTPC_IMAGE_REPO | ghcr.io/pawanpaudel93/agentpc | image pull/push 用のパッケージ(イメージ名でタグ付け) |
WIN_ISO | 以前にダウンロードした ISO、~/Downloads 内の一致する ISO、またはダウンロード | --iso を指定せずに image build windows-… を実行する際に使用する Windows ISO |
各 VM には、スロット番号 n に基づいて 127.0.0.1 上に独自のポートが割り当てられます(既存の VM は、次回起動時に新しいポートへ移動します)。
| ポート | 用途 |
|---|---|
47000 + n | SSH |
47200 + n | noVNC WebSocket(ビューアー用) |
47300 + n | VNC |
8100 | すべての VM で共有されるブラウザービューアー |
ゲストのログイン情報は、デスクトップと sudo で agent / agent です。SSH では agentpc のキーのみが使用され、パスワードログインは無効です。各 VM には独自の VNC パスワードもあります(セキュリティを参照)。
仕組み
- ハイパーバイザー。 VM は Apple の Hypervisor.framework(HVF)を使用して QEMU 上で動作し、Apple Silicon でネイティブに実行されます。その間にほかのものは介在しません。
- 即時起動。 イメージをビルドまたはダウンロードした後、agentpc は一度起動して、デスクトップと制御サーバーが起動するまで待ち、VM のメモリを保存します。新しい VM は起動する代わりに保存済みの状態から再開するため、起動時間が約 15 秒/約 25 秒から約 1 秒/約 4 秒になります。
stopの後にstartすると通常の起動になり、resetすると再び新しいコピーから再開します。 - チェックポイント。 チェックポイントを作成すると、VM を数秒間一時停止し、メモリをファイルに書き込み、ディスクを複製します(APFS のコピーオンライトクローンなので、VM がさらに書き込むまでは容量を消費しません)。復元すると、新しい VM と同じようにチェックポイントから再開します。実行中の VM のチェックポイントごとに、使用中のメモリとほぼ同じ容量のディスク領域が必要です(Windows では 3~4 GB)。
agentpc checkpoint <name> <label> --deleteでチェックポイントを削除でき、VM を削除するとすべてのチェックポイントも削除されます。 - スナップショットはローカルに保持。 メモリスナップショットは Mac のチップと QEMU のバージョンに依存するため、公開されるのはディスクのみです。各プルの後にスナップショットが再取得されます(約 1 分)。各スナップショットには QEMU のマシンタイプが記録されるため、QEMU をアップグレードした後も再開できます。
- 堅牢性。
createは事前に空きディスク容量と RAM を確認し、checkpointはディスク容量を確認します。復元はアトミックに行われるため、失敗しても VM は元の状態を保ちます。また、一時停止したままの VM も再開します。同じ VM に対する操作は直列化され、クラッシュによって残った古い pid ファイルは信用せずに検出します。ゲストの時計は Mac のタイムゾーンに従います。SSH キープアライブにより長時間の呼び出しを維持し、デスクトップツールの呼び出しは 120 秒後に打ち切られ、ビューアーが起動しなくても VM の起動は失敗しなくなりました。ブラウザービューアー(noVNC)は、固定されたチェックサムと照合してダウンロードします。 - イメージの配布。 Ubuntu と Arch のイメージは、GitHub Container Registry 上の OCI アーティファクトです。圧縮された qcow2 を 64 MB のパーツに分割し、並列ダウンロードしてチェックサムを検証します。プルする前に空きディスク容量を確認します。中断された場合は検証済みのパーツを保持し、再度プルするとそこから再開します。すべてのレイヤーとイメージ設定をマニフェストのダイジェストおよびサイズと照合し、結合したディスクが
qemu-img checkに合格してから現在のイメージと置き換えます。 - ダウンロードの固定。 イメージのビルドで取得するものはバージョンなどを固定し、検証します。FEX はタグとコミット、Ubuntu と Arch の x86 ルートファイルシステム、および cua-driver のインストーラーとバイナリーは SHA-256、Arch Linux ARM の tarball は署名、Chrome は Google の署名付き apt リポジトリーで固定します。ビルド時とスナップショット取得時に、ゲストで固定バージョンの cua-driver が動作していることを確認します。
- Windows のビルド。 agentpc は ISO の隣に小さなセットアップディスクを書き込みます。このディスクには、無人インストール用の応答ファイル(dockur/windows-arm を基に調整)、Red Hat の ARM64 virtio ドライバー、OpenSSH と cua-driver をインストールする初回ログオンスクリプト(テレメトリーはオフ)が含まれます。その後、クリック操作なしで Windows Setup が QEMU 上で実行されます。スクリプトが失敗した場合はタイムアウトを待たずにビルドを直ちに停止します(ゲストの
C:\OEM\failed.txtとC:\OEM\setup.logを確認してください)。 - Ubuntu のビルド。 公式クラウドイメージを cloud-init で設定します。内容は XFCE(X11)、自動ログイン、cua-driver(ドキュメントに記載されたツール名と一致するよう固定し、テレメトリーはオフ)です。クローンで再設定が実行されないよう、その後 cloud-init を無効にします。cua-driver のテレメトリーを有効にするには、VM で
cua-driver telemetry enableを実行してください。 - Arch のビルド。 Ubuntu イメージのクローンに空の 2 台目のディスクを追加し、スクリプトでそのディスクに Arch Linux ARM の tarball をインストールします。インストール内容は systemd-boot、XFCE(X11、自動ログイン)、Chromium、Ubuntu と同じ固定バージョンの cua-driver です。このディスクがイメージになります。検証済みの tarball は次回のビルドに備えて
~/.agentpc/cache/alarmに保存されます(agentpc cleanで削除されます)。 - x86apps のビルド。
ubuntu-x86appsとarch-x86appsでは、guests/<os>/x86apps.shが、ソースから FEX(タグとコミットはそこで固定)を静的 PIE としてビルドし、guests/ubuntu/fex.patchを適用して(x86 コンテナーが動作するようにします)、x86 ルートファイルシステムをインストールします。Ubuntu のものは、カーネルが起動時に読み取り専用でマウントする squashfs 形式です(サンドボックス化されたサービスでは FUSE 経由で FEX を実行できないため、FUSE は使用しません)。Arch Linux のものは、fex-pacmanでパッケージを追加できるように展開されます。 これらの VM 用の QEMU はsrc/hvf_tso.cを読み込み、CPU の TSO モードを有効にします。agentpc は起動後にこの状態を確認し、FEX に伝えます。TSO がオフの場合、FEX は x86 のメモリー順序をエミュレートします。 - エージェント向けのゲスト。 スナップショットを取得するたびに、準備スクリプトが無人作業を妨げるものを無効にします(Windows SmartScreen、更新、初回実行やヒントのポップアップ、Ubuntu のバックグラウンド apt ジョブ、Arch の pacman タイマー)。また、cua-driver のブラウザーツール用に Ubuntu へ Google Chrome をインストールします(Arch のイメージには Chromium が含まれます)。
トラブルシューティングとゲストのヒント
- セットアップを確認する:
agentpc doctor。 - 画面を確認する:
agentpc screenshot <name>を実行するか、agentpc info <name>でビューアーの URL を開きます。 - 各 VM のログは
~/.agentpc/instances/<name>/にあります。qemu.log(QEMU のエラー)とserial.log(ゲストコンソール)です。 - VM の状態が不正です:
agentpc reset <name>を実行します。 image build/pull/rmが拒否される: VM がまだそのイメージに依存しています。まずagentpc rmで VM を削除してください。 実行中のビルドでそのイメージを使用している間は、build と rm も拒否されます(Arch のビルドは Ubuntu イメージのクローンで実行されます)。また、pull またはそのイメージのスナップショットが実行中の場合も rm は拒否されます。完了してから再試行してください。 ピン留めされた…-YYYYMMDDイメージは pull のみ可能です。- イメージのビルドまたはスナップショットで、ゲストが別の cua-driver を実行していると表示される: イメージは異なるバージョンの agentpc でビルドされています。
agentpc image build <image>で再ビルドしてください。 agentpc updateがそのディレクトリに書き込めない(例:root が所有する/usr/local/bin):sudo agentpc updateを実行するか、AGENTPC_INSTALL_DIR=<dir>を指定してそのディレクトリに再インストールしてください。
ネットワーク
各 VM は QEMU のユーザーモード NAT の背後にあるため、VM 同士は分離されていますが、Mac のネットワークを共有します(Mac で設定された VPN やプロキシは、VM の送信トラフィックにも適用されます)。
- Mac から VM 内のサーバーに接続する:
agentpc forward <name> <guest-port> [host-port]を実行します (MCP:forward_port)。その後、127.0.0.1:<host-port>に接続します。SSH 経由でトンネルするため、ゲストの127.0.0.1にバインドされたサーバーにも接続でき、Windows ファイアウォールの影響を受けません。 ポートフォワードは VM が停止するか、削除するまで有効です(--rm <host-port>/delete_forward)。--list(MCP:list_forwards)で VM のポートフォワードを確認できます。 - UDP サーバー(ゲーム、DNS、QUIC、リレー):
--udpを追加します(MCP:protocol: "udp")。UDP のポートフォワードは SSH トンネルではなく QEMU のホストフォワードであるため、ゲストのネットワークアドレス(10.0.2.15)に接続します。サーバーは127.0.0.1ではなく0.0.0.0で待ち受ける必要があり、Windows ではファイアウォールルールも必要です。TCP のポートフォワードと同様に、停止、復元、リセット時に破棄され、オフライン VM では利用できません。 - ゲストから Mac に接続する:
10.0.2.2は Mac ホストです。NAT はこれを Mac のループバックにマッピングするため、VM 内から10.0.2.2:<port>に接続すると、127.0.0.1または0.0.0.0で待ち受けている開発サーバーに接続できます。 - VM 間の接続: 直接の経路はありません。サーバー側 VM のポートを Mac に転送し
(
forward_port(B, guest_port, host_port))、もう一方の VM から10.0.2.2:<host_port>に接続します。UDP の場合はprotocol: "udp"を指定し、B のサーバーが0.0.0.0で待ち受けるようにします。 - オフライン VM(
--offline/offline: true)は10.0.2.2にもインターネットにも接続できませんが、Mac から転送する TCP ポートには引き続き接続できます。UDP のポートフォワードは機能しません。オフラインネットワークは、応答を含め、ゲストが送信するすべての UDP データグラムを破棄します。 - 社内プロキシ/CA: ゲストは Mac のプロキシ設定を引き継ぎません。ゲスト内で
HTTP_PROXYとHTTPS_PROXYを設定し、社内ルート CA をImport-Certificate(Windows)、update-ca-certificates(Ubuntu)、またはsudo trust anchor --store <cert>(Arch)でインポートしてください。
ゲストの再起動
ゲストを再起動すると(Windows Update のインストールや、一部のインストーラーなど)、SSH 接続が切断されます。同じ VM で start_vm を呼び出してください。VM がすでに実行中の場合でも、デスクトップが再び使用可能になるまで待機します。または、復旧後に run_command を再試行してください。
Windows ゲストに関するヒント
-
GUI インストーラーはすぐに戻ります。 サイレントモードで実行し、プロセスの終了を待ちます。
Start-Process installer.exe -ArgumentList '/S' -Wait -PassThru(スイッチは/S、/silent、/quietなどインストーラーによって異なります)を実行し、その後ExitCodeを確認します。run_commandのプロセスはコマンドが戻ると終了するため、 サーバーや GUI アプリはbackground: trueを指定して起動してください。 -
イメージでは Windows Update が無効になっています(
wuauservサービスは停止し、無効に設定されており、NoAutoUpdateポリシーも設定されています)。そのため、更新によってタスクが中断されることはありません。ただし、 Windows Update から取得するオプション機能もブロックされます。たとえば、DISM/online(.NET 3.5 など)やAdd-WindowsCapability(RSAT、言語パック。OpenSSH はすでにインストール済み)です。これらを使うには、 一時的に有効にして、使用後に元の設定に戻してください。Set-Service wuauserv -StartupType Manual; Start-Service wuauserv # … Add-WindowsCapability / DISM … Stop-Service wuauserv; Set-Service wuauserv -StartupType Disabled -
Defender のリアルタイム保護は有効です。 agentpc が無効にするのは SmartScreen だけで、Defender は無効にしません。 そのため、ビルドしたばかりのテスト用バイナリや署名されていないテスト用バイナリが Defender に隔離されることがあります。
Add-MpPreference -ExclusionPath C:\workで作業ディレクトリを除外するか、Set-MpPreference -DisableRealtimeMonitoring $trueでリアルタイム監視をオフにしてください (後者は改ざん防止機能によってブロックされる場合があります)。 -
x64 アプリはエミュレーションで動作します。 ゲスト OS は Windows 11 ARM64 です。x64 および x86 のプログラム (インストーラー、デスクトップアプリ、CLI)は Windows に組み込まれた Prism エミュレーションで動作するため、 ネイティブ実行より約 2~4 倍遅くなります。x64 ドライバー、カーネルモードソフトウェア、アンチチートは動作しません。 ダウンロード時に ARM64 版を選べる場合は、そちらを優先してください。
Arch ゲストに関するヒント
- パッケージ:
sudo pacman -Syu --noconfirm <pkg>(Arch は部分アップグレードをサポートしていません)。 最初の-Syuではシステム全体がアップグレードされることがあるため、run_commandのtimeoutを長めに設定するか、background: trueを指定してください。カーネルのアップグレード後は、新しいモジュールを読み込む前に 再起動(start_vm)してください。 /tmpは tmpfs です。 Ubuntu とは異なり、起動のたびにクリアされます。ファイルは別の場所に保存してください。
x86_64 Linux プログラム
Ubuntu と Arch のゲストは arm64 です。x86_64(および i386)Linux プログラムを実行するには、ubuntu-x86apps または arch-x86apps イメージから VM を作成します(agentpc create ubuntu-x86apps、または version: "x86apps" を指定して create_vm を実行します)。これにより FEX が追加され、x86 プログラムを実行時に arm64 へ変換します。カーネルとデスクトップはネイティブのままです。プログラムを直接実行します(./tool)。
- 速度。 ほとんどのコードはネイティブより約 2 倍遅く、Node などの JIT ランタイムは約 6~7 倍遅くなります。macOS 15 以降では、agentpc はこれらの VM の CPU を x86 のメモリー順序である TSO にも切り替えるため、FEX でエミュレートする必要がありません。マルチスレッドコードは最大約 40%高速になり、ネイティブ arm64 コードは遅くなりません。
agentpc list --json(list_vms)では、VM が使用する方式をx86_tsoとしてhardwareまたはemulatedで確認できます。FEX は変換後のコードを~/.cache/fex-emuに保持するため、プログラムの 2 回目以降の起動は初回より数倍高速です。 - ライブラリ。 x86 プログラムは、イメージに含まれる x86 ツリー(x86 Ubuntu または x86 Arch Linux)から一般的なライブラリ(libc、libstdc++、GTK など)を見つけます。Ubuntu では、ほかに必要なものは amd64 パッケージとしてインストールします。
sudo apt install libfoo:amd64を実行するか(イメージには amd64 パッケージソースが設定されています)、amd64 の.debをsudo apt install ./app_amd64.debでインストールします。インストールスクリプト(ネイティブの dpkg が実行します)では、uname -m、arch、dpkg --print-architectureが x86_64 マシンを示すため、これらを確認するベンダーパッケージも問題なく動作します。amd64 ライブラリをインストールすると、arm64 側の同名ライブラリもアップグレードされることがあります。両方が同じバージョンである必要があるためです。Arch にはマルチアーキテクチャの仕組みがないため、arch-x86appsでは x86 プログラムは FEX の x86 Arch Linux ツリーを使用し、sudo fex-pacman -Sy --noconfirm --needed <pkg>で x86 パッケージを追加インストールできます(chroot 内で実行される x86 のpacmanは、そのツリーの Arch Linux Archive の日付に固定されるため、一部だけがアップグレードされることはありません)。 - Go プログラムは、
GODEBUG=asyncpreemptoff=1を設定しないと FEX でクラッシュします。イメージでは x86 プログラムに対してこの設定が行われます。 - x86 の Electron および Chromium アプリ(VS Code、Slack、Chrome など)は、
zygote_hostエラーで起動時に異常終了します。FEX では Chromium のサンドボックスが使用する名前空間を作成できないためです。--no-sandboxを付けて起動します(例:code --no-sandbox)。 - x86 コンテナーは動作します。Docker または Podman をインストールし(Arch の場合:
sudo pacman -Syu --noconfirm docker && sudo systemctl start docker)、docker run --platform linux/amd64 <image>を実行します。FEX はコンテナーイメージ内の x86 ファイルを使って実行します。 - x86 サービスは、ホームディレクトリを持たないシステムユーザーとしても、systemd の下で実行できます(この場合、FEX は設定とコードキャッシュをユニットの
StateDirectory=または専用の/tmp/fex-emu-<uid>に保持します)。MemoryDenyWriteExecute=またはLockPersonality=を指定したユニットでは、JIT と同様に FEX が停止します。そのため systemd ジェネレーター(/etc/systemd/system-generators/agentpc-fex)が、ExecStartが x86 プログラムであるすべてのユニットでこの 2 つの設定を緩和します。ネイティブサービスでは設定は維持され、systemctl catでドロップインを確認できます。別の方法(スクリプトなど)で x86 プログラムを実行するユニットでは、sudo fex-unit <unit>を実行する必要があります(--undoで解除します)。実行しない場合、サービスは起動時に FEX 内部の SIGSEGV で停止し、AArch64 のコアダンプが生成されます。アプリケーションのクラッシュのように見えることがあります。ProtectSystem=strictを指定している場合は、ユニットに書き込み可能なディレクトリ(StateDirectory=またはPrivateTmp=)を指定します。 - x86 専用インストーラーのうち、
uname -mを確認するものは、x86 の bash から変更せずに実行できます。sudo FEXBash ./install.shを実行します。これによりuname、useradd、systemctlなどのツールも x86 プログラムとして実行されるため、スクリプトからは x86_64 マシンとして認識されます。貼り付けて実行するブロック(curl ... | sudo VAR=... bash -s -- args)の場合は、FEXBashを起動して、そこでブロックを貼り付けます。実際のsudoは setuid でネイティブに実行されるため、FEXBash は自身のsudoをPATHの先頭に置き、それを使って実際のsudoに FEXBash 経由でコマンドを起動させ、x86 のまま実行します。 - 対象外: x86 カーネルモジュールおよびドライバー。これは変換であり、x86 マシンではありません。
ハードウェアの制限
ゲストのディスプレイは1280x800に固定されており、2D専用のvirtio GPUを搭載しています(3D/GPUアクセラレーションはありません。WebGLはソフトウェアレンダリングされるか、利用できません)。また、オーディオデバイスはありません。
アンインストール
agentpc uninstall # asks first; -y skips the prompt
すべてのVMを停止し、mcp-installによって登録されたすべてのエージェントからMCPサーバーを削除し、~/.agentpc(イメージ、VM、チェックポイント、鍵を含みます。--keep-dataを指定すると保持されます)とagentpcバイナリを削除します。共有されているものはそのまま残し、一覧表示します。インストーラーが追加したPATHの行(~/.local/binはほかのツールでも使用されています)、QEMU(ほかに必要なものがなければbrew uninstall qemuでアンインストールできます)、Claudeプラグイン(/plugin uninstall agentpc@agentpc)です。
ディスク容量だけを空けるには、agentpc cleanで再ダウンロード可能なものを削除し、使わなくなったイメージはagentpc image rm <image>で削除できます。
セキュリティ
- すべて
127.0.0.1のみでリッスンします。 - VM内のデスクトップ制御サーバーには認証がありません。Mac上のあらゆるプロセスからアクセスできます。
- 各VMには固有のVNCパスワード(インスタンスディレクトリ内の
vnc-pass、モード0600)があります。agentpc info <name>が出力するビューアーURLにパスワード(&password=…)が含まれているため、ブラウザーのビューアーはプロンプトなしで接続できます。ネイティブのVNCクライアント(vnc://127.0.0.1:<port>)ではパスワードが求められます。そのURLからコピーするか、~/.agentpc/instances/<name>/vnc-passを読み取ってください。 - ゲストのデスクトップと
sudoには、固定のログイン情報agent/agentを使用します。すべてのVMのSSHポートはほかのVMやローカルユーザーからアクセスできるため、SSHではagentpcの鍵のみを受け付けます。 ~/.agentpcはユーザー専用(0700)です。ゲストのディスク、RAMチェックポイント、SSH鍵が格納されています。- ブラウザーのビューアーリンクでは、リクエストで送信されない
#以降にVNCパスワードが含まれます。また、ポート8100のサーバーがagentpc自身のものである場合にのみ、このリンクが渡されます。コマンドは、新しいHMAC-SHA256チャレンジでビューアーを検証します。秘密のID鍵がHTTP経由で提供されることはなく、観測された応答を別のチャレンジの認証に使うこともできません。 - エージェントが作業を続けられるよう、Windows VMではUACプロンプト、SmartScreen、Windows Updateが無効になっています。これらの保護が必要な用途には使用しないでください。
- VMはインターネット、およびゲートウェイ
10.0.2.2経由でMac上のサービスにアクセスできます。信頼できないソフトウェアを使う場合など、両方を遮断するには、--offlineを指定してVMを作成してください(create_vmではoffline: true)。SSH、ビューアー、転送ポートは引き続き動作します。 - MCPツールにはアノテーションが付いています。
list_vms、take_screenshot、list_desktop_tools、get_job_status、list_forwards、read_vm_logは読み取り専用です。download_file(Macに書き込みます)など、状態を破棄または上書きするツールには破壊的操作であることが示されるため、クライアントはそれに応じて自動承認または確認を行えます。 - VMは使い捨てのサンドボックスとして扱い、秘密情報を置く場所として使用しないでください。
開発
cargo build --release # target/release/agentpc
scripts/check.sh # all CI checks, including site SEO/link checks
scripts/smoke.py --bin target/release/agentpc # drives fresh VMs through the MCP server
python3 scripts/lifecycle-stress.py --bin target/release/agentpc --rounds 3
ライフサイクルのストレステストスイートには、既存の最新の Ubuntu スナップショットが必要です。イメージのダウンロードやビルドは行いません。アイドル状態のイメージロックを短時間保持してクローン作成を遅らせ、キューに入った起動/削除の呼び出しが初期化の完了を待つことを確認し、ワーカーが 1 つの MCP サーバーが応答し続けることを検証します。続いて、名前付きの作成、起動、停止、削除を競合させ、強制終了されたセッションの孤立状態からの復旧と、セッションの正常なシャットダウンを確認します。一意の名前を持つタスク所有の VM のみを使用し、テスト後に削除します。また、無関係な実行中の孤立 VM が再利用される可能性がある場合は、開始を拒否します。ログには、生の MCP レスポンスやビューアーの認証情報は記録されません。CI では構文をチェックし、VM のテストは Apple Silicon 上でローカルに実行します。
ゲストスクリプト、デスクトップドライバー、または MCP ゲートウェイを変更した後は、スモークテストを実行してください(最初に該当するイメージを再ビルドしてください)。ゲストが初回起動時のダイアログなしでアプリを開くこと、デスクトップツールが読み取りと入力を行えること、ゲートウェイが不正な引数について説明することを確認します。
guests/ 内のゲストプロビジョニングファイルはバイナリに埋め込まれます。AGENTS.md では、コントリビューターとコーディングエージェント向けにコードの構成を説明しています。
リリース(メンテナー向け)
- 最新でクリーンな
main上で、scripts/release.sh X.Y.Zを実行します(ghにログイン済みであること、npx用の Node、jqが必要です)。すべての箇所のバージョンを設定し(Cargo.tomlがすでに X.Y.Z の場合はスキップします)、CI チェックを実行して、dist/をビルドします(バイナリの tarball、MCP バンドルagentpc-X.Y.Z.mcpb、それぞれの.sha256ファイル、内容を記入済みのserver.jsonとNOTES.md、前回のタグ以降の Conventional Commit の件名をグループ分けしたリリースノートを含みます)。その後、確認を求めてからchore: release vX.Y.Zをコミットし、vX.Y.Zのタグを作成して、mainとタグをプッシュし、GitHub Release を作成します。--dry-runを指定すると、dist/のビルド後に終了します。 - Linux イメージ(
ubuntu、ubuntu-x86apps、arch、arch-x86apps)を公開します。パッケージを書き込めるトークンでorasにログインし(gh auth refresh -s write:packagesを実行し、その後gh auth token | oras login ghcr.io -u <user> --password-stdinを実行します)、各イメージについてagentpc image build <image>とagentpc image push <image>を実行します。プッシュでは 64 MB のパーツをアップロードし、失敗時には再試行して、このリポジトリにパッケージを関連付けます。パッケージの設定で、一度だけ公開状態にしてください。 - MCP Registry に公開します。
brew install mcp-publisher、mcp-publisher login githubの順に実行してから、mcp-publisher publish dist/server.jsonを実行します。
ライセンス
MIT © 2026 Pawan Paudel
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。