クイックスタート
ゼロから、実際のリポジトリをビルドし、起動し、テストまで終えたボックスまで、およそ 10 分。必要なのは GitHub アカウントと Claude Code(または他の MCP クライアント)だけで、ローカルには何もインストールしません。
ボックスはあなた自身のエージェントのためのリモート Linux マシンです。2 vCPU、16 GB メモリ、専用の Docker、git、Node、Go、Python、Chromium 付きの仮想ディスプレイ、ffmpeg。ボックスの中に AI はいません。エージェントが MCP ツールで操作し、人が必要になったらブラウザかデスクトップアプリから画面を見たり引き継いだりします。
1. ログインして API キーを作る
- https://app.parallelsandbox.com/ を開き、GitHub でログインします。
- 「アカウント」で「API キーを作成」を押し、名前を付けます。
- キーをコピーします。表示は一度きりで、
psbx_...の形式です。
すべてのアカウントに、期限のない 500 クレジットが付きます。ボックスは 1 時間あたり約 100 クレジットで、分単位で課金されます。料金を参照してください。
2. エージェントを接続する
Claude Code、streamable HTTP:
claude mcp add --transport http parallelsandbox https://mcp.parallelsandbox.com/mcp \
--header "Authorization: Bearer psbx_YOUR_KEY"
stdio しか話せないクライアント(Codex、Cursor、自作エージェント)は npm のアダプターを使います:
claude mcp add parallelsandbox -e PARALLELSANDBOX_API_KEY=psbx_YOUR_KEY -- npx -y parallelsandbox-mcp
Codex の ~/.codex/config.toml:
[mcp_servers.parallelsandbox]
command = "npx"
args = ["-y", "parallelsandbox-mcp"]
env = { PARALLELSANDBOX_API_KEY = "psbx_YOUR_KEY" }
確認:claude mcp list で parallelsandbox が接続済みと表示されること。Claude Code 内で /mcp を打つと sandbox_* と logs_* のツールが並びます。
3. スキルを入れる
スキルは、いつボックスを使うか、ツールをどの順で呼ぶかをエージェントに教えます。ファイルは 1 つです:
mkdir -p ~/.claude/skills/parallelsandbox
curl -fsSL https://parallelsandbox.com/skill/SKILL.md -o ~/.claude/skills/parallelsandbox/SKILL.md
他のエージェントでは、同じファイルをシステムプロンプトかプロジェクト指示に貼り付けてください。内容はこちら。
4. 最初のボックスを動かす
Claude Code にこう伝えます:
ParallelSandbox で https://github.com/parallel-sandbox/example-compose-app を動かして。ボックスを起動し、リポジトリを clone し、docker compose でビルドして起動し、サービスを wire し、録画しながら仮想ディスプレイ上で Playwright の e2e をヘッド付きで実行し、スクリーンショットと動画をくれて、最後にボックスを停止して。
エージェントがツールごとに行うこと:
sandbox_start { "services": [{ "name": "api", "port": 3000 }, { "name": "worker", "port": 8080 }] }
sandbox_exec { "id": "<id>", "cmd": "git clone https://github.com/parallel-sandbox/example-compose-app.git" }
sandbox_exec { "id": "<id>", "cmd": "docker compose up -d --build --wait", "cwd": "example-compose-app", "timeoutSec": 600 }
sandbox_wire { "id": "<id>", "service": "api", "mode": "box" }
sandbox_wire { "id": "<id>", "service": "worker", "mode": "box" }
sandbox_exec { "id": "<id>", "cmd": "npm ci && npx playwright install chromium", "cwd": "example-compose-app/e2e", "timeoutSec": 600 }
sandbox_shot { "id": "<id>", "record": "start" }
sandbox_exec { "id": "<id>", "cmd": "DISPLAY=:99 HEADED=1 BASE_URL=http://localhost:3000 npx playwright test", "cwd": "example-compose-app/e2e", "timeoutSec": 300 }
sandbox_shot { "id": "<id>", "record": "stop" }
sandbox_get { "id": "<id>", "path": "example-compose-app/e2e/screenshots/jobs.png" }
sandbox_stop { "id": "<id>" }
待機中のボックスがあれば sandbox_start は 15 秒以内、コールドスタートなら 90 秒以内に返ります。sandbox_shot の record: "stop" と sandbox_get は 1 時間有効なダウンロード URL を返します。
5. 見る、または引き継ぐ
sandbox_start と sandbox_status は takeoverUrl を返します。ブラウザで開くとボックスの画面がライブで見え、マウスとキーボードがそのまま使えます。人が接続している間、sandbox_exec は一時停止して「引き継ぎ中」を返します。ページを閉じればエージェントは続行します。
エージェントが人を必要とするときは、メモを添えて sandbox_takeover を呼びます。リクエストは https://app.parallelsandbox.com/ に表示されます(デスクトップアプリを入れていれば通知も届きます)。必要な作業をして「返す」を押し、任意でメッセージを残すと、エージェントはそのメッセージをツールの結果として受け取ります。