agent-browser
Browser automation CLI for AI agents — Rust 製ネイティブ CLI が Chrome CDP 経由でページを操作し、アクセシビリティツリーと @eN 参照でエージェント向けにコンパクトな出力を返す。
agent-browser は vercel-labs/agent-browser が公開する、AI エージェント向けブラウザ自動化 CLI。Playwright や Puppeteer に依存せず、Chrome for Testing を CDP で直接制御する。Cursor・Claude Code・Codex など任意のエージェントからシェルコマンドとして呼び出せる。
スナップショットは生 HTML より大幅に短く(目安 200〜400 トークン)、エージェントがページ構造を把握しやすい。CLI に同梱されたスキルは agent-browser skills get でインストール版と常に同期される。
npm install -g agent-browser
agent-browser install # 初回: Chrome for Testing を取得
Homebrew(brew install agent-browser)、Cargo(cargo install agent-browser)、プロジェクトローカル依存(npm install agent-browser)にも対応。Linux では agent-browser install --with-deps でブラウザ用システムライブラリも導入できる。
ユーザーまたはエージェントが bin/agent-browser.js 経由で Rust バイナリを起動し、バックグラウンドの daemon が Chrome セッションを保持する。連続コマンドは同一 daemon を再利用するため、起動コストを抑えられる。非アクティブな daemon は標準で 1 時間後に終了し、--idle-timeout または AGENT_BROWSER_IDLE_TIMEOUT_MS で調整できる。
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#dce6f5", "primaryTextColor": "#1b365d", "primaryBorderColor": "#1b365d", "lineColor": "#3d5a8a", "secondaryColor": "#f5f0e0", "tertiaryColor": "#eef3fa", "fontFamily": "Outfit, system-ui, sans-serif", "fontSize": "13px"}}}%%
flowchart LR
Agent["AI Agent / Shell"]
CLI["agent-browser CLI\n(Rust)"]
Daemon["Browser daemon\ncli/src/native/"]
Chrome["Chrome / Chromium\n(CDP)"]
Agent --> CLI --> Daemon --> Chrome
ブラウザ自動化の中核は cli/src/native/(daemon・CDP クライアント・snapshot・state など)。--engine で Chrome と Lightpanda を切り替え可能。npm パッケージには skill-data/・skills/・postinstall スクリプトが同梱される。
| パス | 役割 |
|---|---|
cli/ | Rust CLI・daemon・MCP サーバー・CDP プロトコル |
skill-data/ | エージェント向け SKILL 本文(core / slack / electron 等) |
packages/dashboard/ | 観測用ダッシュボード(ポート 4848) |
packages/@agent-browser/sandbox/ | Vercel Sandbox 等クラウド実行 |
docs/ | Next.js 公式ドキュメントサイト(agent-browser.dev) |
evals/ / benchmarks/ | スキル選択・コンテキスト量の評価 |
agent-browser open <url> でページを開く。ブラウザはセッション中ずっと起動したまま。@e1 形式の参照が付く。agent-browser click @e3 など、スナップショット上の ref で操作する。agent-browser open https://example.com/login
agent-browser snapshot -i
# 出力例:
# @e3 [input type="email"] placeholder="Email"
# @e4 [input type="password"] placeholder="Password"
# @e5 [button type="submit"] "Continue"
agent-browser fill @e3 "user@example.com"
agent-browser fill @e4 "secret"
agent-browser click @e5
agent-browser wait --url "**/dashboard"
agent-browser snapshot -i
@eN はスナップショットごとに再採番される。クリックで遷移した直後に古い ref を使うと失敗する。別要素に被さってクリックできない場合も、カバー要素を操作してから再スナップショットする。
| 方式 | 例 | 向いている場面 |
|---|---|---|
| 推奨 snapshot + ref | click @e2 |
AI エージェントの通常フロー。トークン効率が最も良い |
| 次点 find(セマンティック) | find role button click --name "Submit" |
事前 snapshot なし、ARIA role / ラベル / placeholder で探す |
| CSS セレクタ | click "#submit" |
上記が効かないときのフォールバック |
read — Chrome なしでテキスト取得
agent-browser read [url] は HTTP でドキュメントを取得し、Markdown 交渉・llms.txt 探索・HTML からの readable 抽出を行う。URL を省略するとアクティブタブのレンダリング済み DOM を読む(ログイン状態を含む)。
batch — 複数コマンドを 1 回で
agent-browser batch は引用引数または JSON stdin で複数ステップを 1 プロセスにまとめる。cookie 設定 → ルート → navigate など、ナビゲーション前セットアップに使う。
skills/agent-browser/SKILL.md は discovery stub。実際の手順は CLI が配信する:
agent-browser skills get core # ワークフロー・トラブルシュート
agent-browser skills get core --full # コマンドリファレンス込み
agent-browser skills list # インストール版で利用可能な一覧
| スキル名 | 用途 |
|---|---|
core | 通常の Web 操作(ナビゲート・フォーム・スクショ・待機) |
electron | VS Code・Slack・Discord・Figma 等の Electron アプリ |
slack | Slack ワークスペースの未読確認・メッセージ送信 |
dogfood | 探索的テスト・QA・バグハント |
vercel-sandbox | Vercel Sandbox microVM 内での実行 |
agentcore | AWS Bedrock AgentCore クラウドブラウザ |
agent-browser mcp
agent-browser mcp --tools core,network,react
agent-browser mcp --tools all
stdio 上の JSON-RPC。デフォルトプロファイルは core(コンテキストを小さく保つ)。session 引数または AGENT_BROWSER_SESSION でブラウザセッションを分離できる。
| プロファイル | 主なツール群 |
|---|---|
core | ナビゲーション・snapshot・操作・wait・read・screenshot・eval・タブ基本 |
network | ルート・HAR・リクエスト検査・オフライン |
state | Cookie・storage・認証・保存 state・profiles・skills |
debug | console・trace・profiler・doctor・dashboard・batch |
react | React DevTools hook 経由の tree / inspect / renders |
mobile | デバイスエミュレーション |
all | CLI との完全パリティ |
SESSION="$(agent-browser session id --scope worktree --prefix my-app)"
agent-browser --session "$SESSION" --restore open https://app.example.com
agent-browser --session "$SESSION" snapshot -i
auth save / auth login で認証情報を vault に保存できる。タブは t1 形式の ID またはユーザー定義ラベル(docs 等)で切り替える。
- ダッシュボード: ポート
4848でセッション・ストリームを観測(https://dashboard.agent-browser.localhost等のプロキシ URL も可) - stream: runtime WebSocket ストリーミング(
stream enable) - diff: snapshot / screenshot / URL 間の差分比較
- chat: 自然言語での単発または REPL ブラウザ操作
- doctor: Chrome・daemon・設定の診断(
--fixで修復) - React / vitals:
--enable react-devtools起動時に fiber tree・Web Vitals 計測 - プラグイン: 認証 vault・cloud browser provider・カスタム command.run
各セッションは WebSocket のビューポート配信を持ち、AI エージェントの操作を人が見ながら介入する「ペアブラウジング」に使える。画質とフレームサイズは daemon 単位、配信頻度はクライアント単位で設定する。
| 設定 | 標準値 | 役割 |
|---|---|---|
AGENT_BROWSER_STREAM_QUALITY | 80 | JPEG 品質(0〜100) |
AGENT_BROWSER_STREAM_MAX_WIDTH | ビューポート幅 | エンコードするフレーム幅の上限 |
AGENT_BROWSER_STREAM_MAX_HEIGHT | ビューポート高 | エンコードするフレーム高の上限 |
AGENT_BROWSER_STREAM_QUALITY=20 agent-browser open example.com
agent-browser stream status
agent-browser stream disablemaxFps(1〜120、0 は無制限)や pacing=ack を指定できる。入力イベントはフレーム送信とは別に処理され、マウス・キーボード操作の応答性を保つ。- GitHub: vercel-labs/agent-browser — 本体リポジトリ
- agent-browser.dev — 公式ドキュメント
- skills.sh — スキル配布ページ
- npm: agent-browser — グローバル / ローカルインストール
この HTML は docs-site 側の要約。コマンド一覧・フラグの正は README.md と agent-browser skills get core --full の出力に合わせる。