CLI、自動化、MCP

アプリでできることはすべて、ウィンドウなしでも実行できます。GUI をホストするのと同じバイナリ — Bromure Agentic Coding.app/Contents/MacOS/ 内の bromure-cli — は、完全なマルチコマンド CLI であり、HTTP 制御プレーンであり、2 つの MCP サーバーであり、AppleScript 辞書であり、スケジューラーでもあります。この章はそれらすべてのリファレンスです。

1 つの制御プレーンの上に、4 つの自動化サーフェスが乗っています。

  • bromure-cli コマンドライン — ワークスペースの作成、VM の起動、ターミナルの接続、コマンドの実行、トレースの読み取りを行う Docker/kubectl スタイルの CLI。
  • 自動化 API — 同じ制御プレーンを、ループバックインターフェイス上で JSON-over-HTTP として公開したもの。任意の言語からスクリプトを実行できます。
  • MCP サーバー — AI エージェント(Claude Code、Claude Desktop)がアプリを管理できる stdio サーバーと、エージェントがワークスペースの組み込み Chromium を操作できる browser サーバー。
  • AppleScript — macOS スクリプティングとスクリーンショットツール用の Bromure AC Suite 辞書。

スケジュール自動化 — 定期的な無人エージェント実行 — も同じ制御プレーン上に構築されており、この章の末尾で扱います。

制御プレーン: ソケットと API

これらのサーフェスはすべて、最終的には次の 2 つのトランスポートのいずれかを介して、実行中のアプリと HTTP で通信します。

トランスポート場所アクセスゲートデフォルトで有効
制御ソケット~/Library/Application Support/BromureAC/control.sock(Unix ドメイン、HTTP/1.1)ファイル権限 — ソケットはモード 0600 で所有者のみ。ファイルに到達できること 自体 が Docker ソケット方式の認可となります。はい。アプリまたはヘッドレスエージェントが実行中は常に有効
自動化 API127.0.0.1:9223(TCP)デフォルトではループバックのみ。イントロスペクションおよびミューテーションのルートには、加えて BROMURE_DEBUG_CLAUDE 環境変数が必要(デバッグエンドポイント を参照)いいえ — 環境設定 → 自動化 でオプトイン

CLI が VM と直接やり取りすることはありません。各サブコマンドは制御ソケット上の薄い HTTP クライアントであり、そのため同じコマンドがローカルでも動作し、ソケットが SSH でトンネリングされているときは リッチクライアント からリモートインスタンスに対しても動作します。エージェントを必要とするコマンドを実行したときにエージェントが動作していなければ、CLI はウィンドウなしのバックグラウンドエージェント(bromure-cli run --headless)を自動起動し、/health に応答するまで最大 40 秒待機します。読み取り専用コマンド(vm lsdescribetrace …)は自動起動しません。代わりに No bromure-cli agent running. と表示します。

メモ: 制御ソケットはアプリの実行中は常に利用可能で、自動化サーバーを有効にする スイッチとは独立しています。このスイッチが制御するのはポート 9223 の TCP リスナーのみです。bromure-cli CLI を使うために自動化 API を有効にする必要はありません。

bromure-cli コマンドライン

バイナリはフルバンドルパスで呼び出せますが、アプリは短いエイリアスを一度だけインストールする機能を提供します。起動時にアラート — 「bromure-cli」コマンドラインツールをインストールしますか? — が インストール / 後で / 今後表示しない のボタンとともに表示されます。インストール を選ぶと /usr/local/bin/bromure-cli がアプリのバイナリにシンボリックリンクされます(管理者プロンプトが 1 回)。bromure-cli という名前では、バイナリはアプリ内部のコマンド — イメージ管理、mcp サーバー、GUI の run デフォルト — を隠し、ターミナル向けのグループ(Workspaces、Tracing、Local inference、Enterprise、remote)のみを公開します。引数なしの bromure-cli はアプリを起動せずにヘルプを表示します。bromure-cli として呼び出すと、すべてが利用可能でデフォルトのサブコマンドは run(GUI)です。以下の例では bromure-cli を使用します。公開されているコマンドについては自由に bromure-cli に置き換えてください。

コマンドは、ワークスペース引数が示されている箇所ならどこでも、ワークスペースの id、short-id のプレフィックス、または name を受け付けます。ワークスペースは ワークスペース で説明されている永続的な VM 構成です。vmworkspaces のコマンドグループは互いのエイリアスです。

アプリとバックグラウンドエージェント

構文動作
bromure-cli run [--headless]デフォルト(非表示)のサブコマンド — GUI を起動します。--headless はウィンドウなしのメニューバーアクセサリエージェントを実行します。これが制御ソケットを提供するために CLI が自動起動するものです。

イメージ管理

ベースイメージは一度だけインストールされます。これらのコマンドは bromure-cli エイリアスでは隠されています。

構文動作
bromure-cli init [--build-local]Ubuntu ベースイメージをインストール: ビルド済みイメージをダウンロードし、ダウンロードに失敗した場合は約 10 分のローカルビルドにフォールバックします。--build-local はローカルビルドを強制します。
bromure-cli infoベースイメージのバージョン、仮想サイズ、ディスク上のサイズ、パスを表示します。
bromure-cli reset [--yes]ベースイメージ(ディスク、EFI 変数、バージョンスタンプ、状態)を削除し、次の init が新規に始まるようにします。--yes がなければ確認します。
bromure-cli init-foss-image --output <dir>パブリッシュパイプライン専用 — 再配布可能なフリーソフトウェアのみのベースイメージを <dir> にビルドします。
bromure-cli verify-image --disk <path> [--timeout 300]パブリッシュパイプライン専用 — 使い捨てのクローンをヘッドレスで起動し、タイムアウト内にシリアルログインプロンプトが出ることを要求します。

メモ: setup サブコマンドはありません — それは姉妹製品の Bromure(ブラウザ)製品に属します。Agentic Coding のイメージインストールコマンドは init です。ベースイメージが存在しない場合、GUI を起動するとアプリ内セットアップフローに誘導されます。

ワークスペースと VM の制御

これがコアグループです。vm run は意図的に Docker 風になっています。ワークスペースを起動し、ゲストの共有 bromure tmux セッションにターミナルを渡します。

構文動作
bromure-cli vm lsすべてのワークスペースをライブ状態(off / suspended / booting / running)、稼働時間、ウィンドウ接続状態、ツリー形式の tmux タブ(* はアクティブなタブを示す)、実行中の Docker コンテナとともに一覧表示します。
bromure-cli vm run [<workspace>] [-v <dir>]… [--name N --tool T --auth A --api-key K] [--memory GB] [-d] [--rm]ワークスペースの VM を起動するか、その場で使い捨てのものを作成します。デフォルト: ターミナルをゲストの tmux に接続します。
bromure-cli vm attach <vm> [<tab#> | containers:<name> [-- <shell>]] [-w]ターミナルを VM の tmux に接続するか(オプションでタブにジャンプ)、実行中のコンテナに docker exec -it で入るか(デフォルトシェルは bash)、-w/--window で GUI ウィンドウを開く/再接続します。
bromure-cli vm exec <vm> [-i] [-t] [--timeout 600] -- <command…>VM 内でコマンドを実行します(kubectl スタイル、-- の後ろ)。-it はインタラクティブな pty を開きます。-it でコマンドを省略するとシェルになります。ゲストの終了コードが伝播します。
bromure-cli vm kill <vm> [--suspend]VM を停止します: グレースフルシャットダウン、または --suspend でサスペンド(RAM をディスクに保存)。
bromure-cli vm reboot <workspace> [--hard]実行中のワークスペースをその場で再起動します。デフォルトはグレースフル、--hard は即座に破棄します。
bromure-cli vm describe <workspace>ワークスペースの設定に加え、実行中はライブなランタイム詳細(状態、IP、vCPU、Fusion の状態、ゲストの df からのディスク使用量、タブ、コンテナ、使用中のメモリ)を表示します。
bromure-cli vm ports <workspace>(または vm <workspace> -L実行中のワークスペースのリスニングポート(root として ss をライブ実行)を表示します: PORT、PROTO、ADDRESS、PROCESS。ループバックのみのバインドはマークされます。
bromure-cli workspaces create [--name N] [--tool T] [--auth A] [--api-key K] [--memory GB] [--color C] [-v <dir>]… [--generate-ssh] [--from-json <file|->]ワークスペースをヘッドレスで作成します。--from-json は完全なプロファイル JSON ドキュメントを適用します(フラグは一致するフィールドを上書き)。--generate-ssh はホスト側の SSH キーを生成し、公開鍵を表示します。
bromure-cli workspaces edit <workspace> [--from-json <file|->]ワークスペースの完全な構成を取得し、$VISUAL/$EDITOR(フォールバックは vi)で開き、変更を保存します。シークレットは空欄で表示されます — そのままにすると保持、入力すると置き換わります。--from-json は非対話的にドキュメントを適用します。
bromure-cli workspaces rm <workspace> [-f]ワークスペースとそのすべてのデータ(ディスク + ホーム)を、y/N の確認後に削除します。-f でスキップします。
bromure-cli workspaces ssh-keygen <workspace>ワークスペース用の新しいホスト側 SSH キーを生成し、Git ホスト用に公開鍵を表示します。

知っておくと役立つ運用上の詳細をいくつか。

  • vm run のフラグ。 --toolclaudecodexgrok のいずれか。--authtokensubscriptionbedrock のいずれか。-v/--volume <hostdir> はホストフォルダをゲストの ~/<basename> にマウントします(繰り返し可能、最大 8 個)。-d/--detach は VM を起動して接続せずに戻ります。--rm は VM が停止したときにワークスペースとそのディスクを削除します。接続中の tmux からのデタッチは Ctrl-b d で行います — これで VM は実行したままになります。
  • TTY 対応。 ターミナルを tmux に渡す Docker 風のデフォルトは、実際のターミナル上でのみ適用されます。パイプまたはスクリプトからの呼び出しでは、-d を渡したかのように黙って動作します。
  • workspaces create の認証。 create では、--authlocal も受け付けます。色は blueredgreenorangepurplepinktealgray です。
  • 編集時の空欄保持。 workspaces edit はシークレットを空欄にした構成全体をエクスポートします。空欄のシークレットを含むドキュメントを保存すると保存済みの値が保持されるため、往復で鍵が消えることはありません。変更のないバッファは何も保存しません。無効な JSON は中止されます。
  • Exec の待機。 vm exec はゲストのシェルエージェントを最大 10 秒待ちます。502 は VM が実行されていないか名前が一致しなかった可能性を意味します。接続中のセッション中に発生する承認プロンプトは、ゲスト内ではなく あなたの ターミナルにレンダリングされます(接続ターミナル上での同意 を参照)。

モデル、ルーティング、Fusion

ローカル推論は ローカルモデル で、マルチモデル合成は Fusion で詳しく扱っています。CLI のトグルは次のとおりです。

構文動作
bromure-cli model catalog|ls|pull|use|rm …ローカル MLX 推論モデルを管理します — キュレーションされたカタログを閲覧し、ライブ進捗付きでダウンロードし、ワークスペースごとに選択し、削除します。
bromure-cli vm fusion enable|disable <vm>実行中の VM で Fusion を有効化または無効化します。ワークスペースに 2 つ以上のモデルが構成されている必要があります。
bromure-cli vm routing cloud|local|hybrid <vm>実行中の VM の LLM バックエンドルーティングを設定します。
bromure-cli vm hybrid budget <tokens> <vm> | ttft <seconds> <vm> | split <percent> <vm>ハイブリッドルーティングを調整します: ローリング 24 時間あたりのクラウドトークン上限(0 = 無制限)、ソフトな time-to-first-token フォールバック閾値(デフォルト 5 秒)、ローカルに固定する新規セッションの割合(0~100)。

fusionon/engageoff/disengage も同義語として受け付けます。

トレース検査

これらはワークスペースごとの MITM セッショントレースを読み取ります。ワークスペースでトレースが有効になっていなければ何も返しません — トレース設定 を参照 — 全体像は トレース にあります。

構文動作
bromure-cli trace ls [workspace] [--limit 50]最近のリクエストを一覧表示: TIME / HOST / METHOD / STATUS / REQ / RESP / LAT / FLAGS(フラグには swap×NLEAK×Nconv が含まれる)。
bromure-cli trace summary [workspace]合計、ステータスクラス、swap/leak/conversation のカウント、上位ホストを集計します。
bromure-cli trace hostnames [workspace]個別のホストとそのリクエスト数を一覧表示します。
bromure-cli trace leaks [workspace]認証情報の漏洩が疑われるリクエスト(ヘッダー、プレビュー、疑い)を表示します。
bromure-cli trace clear [-f]y/N の確認後に、メモリ内およびディスク上のトレース履歴を消去します。

リモートアクセス

オプションの SSH フロントドアはデフォルトで無効で、リモートアクセス で完全に説明されています。すべての操作は制御ソケットを介して実行中のアプリを経由します。

構文動作
bromure-cli remote [status]デフォルトのサブコマンド — 有効/実行状態、バインドとポート、認証方式、ホスト鍵のフィンガープリント、ログインユーザー、すぐに使える接続行、認可された鍵を表示します。
bromure-cli remote enable [--port 2222] [--bind 0.0.0.0] [--[no-]password] [--[no-]pubkey]SSH サーバーを有効にします。少なくとも 1 つの認証方式が有効なままである必要があります。
bromure-cli remote disableSSH サーバーをオフにします。
bromure-cli remote key add <key|path> / key [ls] / key rm <index|fingerprint>認可された公開鍵を管理します(ls がデフォルト)。

エンタープライズ登録

スクリプトによるデバイスプロビジョニング用の、bromure.io に登録… シートの CLI 対応版です。エンタープライズ を参照してください。

構文動作
bromure-cli enroll --code <6-word-code> [--server-url URL] [--device-name NAME]管理者が発行したコードを使って、この Mac を bromure.io ワークスペースに登録します。サーバーのデフォルトは $BROMURE_MANAGED_URL または https://bromure.io/api。デバイス名のデフォルトは Mac のホスト名です。
bromure-cli unenroll [--force]登録済みワークスペースからサインアウトします(--force がなければ y/N)。
bromure-cli enrollment-status登録状態(ワークスペース、ユーザー、インストール id、デバイス、サーバー、登録日、bearer/リーフ証明書の有無)を表示します。"not enrolled" は終了コード 0 で終わるため、自動化が失敗として扱うことはありません。

統合コマンドと内部コマンド

構文動作
bromure-cli mcp [--debug] [--api-url http://127.0.0.1:9223]AI ツール用に AC MCP サーバーを stdio で実行します。AC MCP サーバー を参照してください。
bromure-cli __remote-menu__attach-window__fatclient…__forward…__dial__tunnel-helper内部エントリポイント(SSH ForceCommand TUI、ターミナルバイトポンプ、リッチクライアントのトンネルヘルパー)。対話的な使用向けではありません。

リモート TUI(__remote-menu

SSH リモートアクセスが有効な場合、すべてのリモートログインは(ForceCommand を介して)シェルではなく手作りの ANSI ターミナル UI に強制されます — 矢印キーと数字で操作する、代替画面の 256 色ミニシェルで、任意の SSH PTY 上で動作します(ssh -t を使用)。これは CLI 全体をメニューとしてミラーします。

  • Workspaces — 単一画面のフォーム(Name、Tool、Auth、API キー、Memory、Color、Folders、Generate SSH、Full settings…、Create)での作成、ワークスペースごとのアクション(実行中のワークスペースには Attach、New tab、Describe、Configure…、Fusion、Routing、Worktrees…、Reboot…、Suspend、Kill、オフのワークスペースには Start、Describe、Configure…、Delete)、生のテーブルビュー。Configure… はすべての GUI エディタペインをネイティブに再現します。
  • Models — インストール済みモデルとダウンロードカタログ。未インストールのモデルを選ぶと、ライブ進捗付きでインラインで model pull するよう提案します。
  • Trace — Summary / Hostnames / Leaks / Recent / Clear。

ワークスペースの tmux に接続している間、マジックキーコード(デフォルト Ctrl-]、バナーに表示)を押すと、ホストが描画する コントローラーオーバーレイ がポップアップします: タブツリー、New tab、Worktrees…、Fusion、Routing、Edit settings…、Reboot…、Suspend、Disconnect。ゲストはトリガーキーを一切見ません — remote/overlay-key ファイルまたは $BROMURE_OVERLAY_KEY で上書きします。Ctrl-b d は tmux から切断してメニューに戻ります。オーバーレイと接続セットアップを含む、リモートとリッチクライアントの完全な説明は リモートアクセス にあります。

ループバック自動化 API

制御プレーンは、任意の言語からスクリプトを実行するために、TCP 上の JSON-over-HTTP として公開することもできます。デフォルトでは無効 です。

有効化する

Bromure → 環境設定 → 自動化自動化 API と MCP サーバー ペインを開きます。

  1. 自動化サーバーを有効にする をオンにします。オンのとき、ペインには 127.0.0.1:9223 でリッスン中 と表示されます。オフにするとサーバーは即座に停止します。
  2. オプションで ポート(フィールドには (デフォルト: 9223) と注記)と バインドアドレス(デフォルト 127.0.0.1)を設定します。ポートとバインドアドレスはサーバーの次回起動時に有効になります — 今すぐ適用するにはスイッチをオフにしてからオンにします。

GUI を使わずにスイッチを切り替えることもできます。

defaults write io.bromure.agentic-coding automation.enabled -bool true

警告: バインドアドレス127.0.0.1 以外に設定すると、API — およびそれが支える MCP サーバー — がネットワークに公開され、ペインは ループバック以外へのバインドは API をネットワークに公開します。MCP サーバーには認証がありません。 と警告します。TCP リスナーには、ループバック境界と下記の BROMURE_DEBUG_CLAUDE ゲートを超える認証はありません。信頼できる特定の理由がない限り、バインドアドレスはループバックのままにしてください。

認証モデル

TCP リスナーと制御ソケットは 同じ ルートを提供しますが、アクセスが異なります。

ルートグループ制御ソケット自動化 API(TCP ループバック)
プロファイルとセッションの 一覧表示、セッションの open/close許可許可
VM 制御、exec/app/state/debug/*許可アプリで BROMURE_DEBUG_CLAUDE が必要
remote/stateautomationsgrid-layoutprompts許可制御ソケットのみ

言い換えると: 制御ソケットはフルアクセスの所有者専用パスであり、TCP API はループバック上で安全なサブセットを開き、強力なルートはデバッグフラグの背後にゲートします。パスセグメントはシングルパーセントエンコードされ(そのため空白を含むワークスペース名も機能します)、最大 8 MB のリクエストボディを受け付けます。

スクリプト用のエンドポイント

最も有用なルートは次のとおりです。

エンドポイントトランスポート目的
GET /health両方生存確認と debugEnabled
GET /stateソケットワンショットのミラースナップショット: ワークスペース、VM、グリッドレイアウト、自動化、pendingPrompts、vmnet サブネット。
GET /vms両方実行中の VM を一覧表示します。
POST /vms両方(TCP ではデバッグゲート)プロファイル参照またはインラインスペックとマウントから VM を起動します。
GET /sessions / POST /sessions両方セッションを一覧表示します。ワークスペースのセッションを開きます。
GET /profiles / POST /profiles両方ワークスペースを一覧表示します。JSON ドキュメントから作成します(?full=1 はシークレットを空欄にしたドキュメント全体を返します)。
POST /vms/<id>/exec両方(TCP ではデバッグゲート)VM 内でコマンドを実行します。interactive は接続を生のフレーム化された pty ストリームに乗っ取ります。
GET /automations / POST /automations/<id>/runソケットスケジュール自動化を読み取り、駆動します(スケジュール自動化 を参照)。
POST /prompts/<id>/answerソケットキューに入ったライフサイクルプロンプトに応答します(保留中のプロンプトに応答する を参照)。

制御ソケットのパスには空白が含まれるため、まず変数に取り込みます。

SOCK="$HOME/Library/Application Support/BromureAC/control.sock"

# Full mirror snapshot (control socket only)
curl --unix-socket "$SOCK" http://localhost/state

# List running VMs (control socket — no debug flag needed here)
curl --unix-socket "$SOCK" http://localhost/vms

# Boot a workspace by name
curl --unix-socket "$SOCK" -X POST http://localhost/vms \
  -d '{"profile":"Claude Dev"}'

# Answer a queued lifecycle prompt with one of its offered button labels
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
  -d '{"choice":"Not Now"}'

安全なサブセットは、有効化すれば TCP API 上で機能します — たとえば、セッションの一覧表示と開始にはデバッグフラグは不要です。

# List sessions
curl http://127.0.0.1:9223/sessions

# Open a session for a workspace
curl -X POST http://127.0.0.1:9223/sessions -d '{"profile":"Claude Dev"}'

メモ: GET /vms(実行中の VM の一覧表示)は、デバッグフラグなしで TCP 自動化 API 上で利用可能です。VM をミューテートするルート — POST /vms(VM の起動)と POST /vms/<id>/exec — は TCP 上では BROMURE_DEBUG_CLAUDE を必要とします。アプリをデバッグモードで実行したくない場合は、(上記のように)制御ソケット上で駆動してください。worktree とタブのアクション、/trace/remote、リッチクライアントのミラールートを含む完全なエンドポイントサーフェスは、付録 にまとめられています。

AC MCP サーバー(bromure-cli mcp

bromure-cli mcp は、AI ツールがアプリを管理できる stdio JSON-RPC MCP サーバー(サーバー名 bromure-cli)を実行します。これは自動化 HTTP API と AppleScript をラップするため、まず自動化サーバーを有効にしてください — セッションおよびプロファイル一覧表示ツールは --api-url(デフォルト http://127.0.0.1:9223)の HTTP API を呼び出します。

公開するツールは次のとおりです。

  • bromure_ac_list_profilesbromure_ac_list_sessions
  • bromure_ac_open_session(ウィンドウを最大 30 秒待ちます)、bromure_ac_close_session
  • bromure_ac_get_profilebromure_ac_set_profile(アトミックな JSON 置換、id は保持)
  • bromure_ac_get_profile_settingbromure_ac_set_profile_setting(キーには namecolorcommentstoolauthModeapiKeycloseActionmemoryGBfolderPathsCountmcpServerCountkeyboardLayoutOverridekeyRepeatDelayMskeyRepeatRateHz が含まれる)

--debug(かつアプリに BROMURE_DEBUG_CLAUDE が設定されている)を使うと、bromure_ac_app_statebromure_ac_vm_execbromure_ac_vm_read_filebromure_ac_vm_write_file が追加されます。

Claude Code に組み込むには、~/.config/claude-code/.mcp.json(またはクライアントの同等物)に次を追加します。これは環境設定ペインの MCP クライアント設定 セクションがコピー用に提供する、まさにそのスニペットです。

{
  "mcpServers": {
    "bromure-cli": {
      "command": "/Applications/Bromure Agentic Coding.app/Contents/MacOS/bromure-cli",
      "args": ["mcp"]
    }
  }
}

メモ: get/set プロファイルツールは osascript(実行中のアプリに対する AppleScript)にシェルアウトするため、GUI アプリが実行中である必要があり、macOS は自動化権限を一度求めることがあります。プロファイル JSON は、BROMURE_DEBUG_CLAUDE が設定されていない限りシークレットを空欄にして伝わります。

ワークスペース内ブラウザ MCP サーバー

AC MCP サーバーとは別に、すべてのワークスペースエージェントには browser MCP サーバーが自動的に付与されます — 設定不要です。これはワークスペースの組み込み Chromium を駆動し、Chromium は独自の使い捨て VM で動作します。ワークスペースエディタの MCP ペインはワークスペース自身の MCP サーバーを説明します。組み込みブラウザサーバーは、そこに追加したものの上に常に存在します。

ワークスペースを編集ウィンドウの MCP ペイン。MCP サーバー構成がアクティブなエージェント向けに変換され、起動時に VM に注入されることを説明しており、サーバーを追加ボタンがあり、まだサーバーは構成されていない

このサーバーは、ナビゲーションと検査のための 23 個のツールを公開します — browser_navigatebrowser_new_tabbrowser_list_tabsbrowser_activate_tabbrowser_close_tabbrowser_backbrowser_forwardbrowser_reloadbrowser_screenshot(フルページオプション付き)、browser_evaluatebrowser_get_textbrowser_get_htmlbrowser_get_linksbrowser_clickbrowser_fillbrowser_typebrowser_press_keybrowser_wait_forbrowser_networkbrowser_network_summarybrowser_clear_networkbrowser_consolebrowser_pick_element(60 秒間のインタラクティブな要素ピッカー)。

トランスポートは生成された Python stdio シム bromure-browser-mcp.py で、ゲストの /mnt/bromure-meta/ に読み取り専用でステージングされます。これはホストに vsock ポート 5830 でダイヤルし、切断時には永久に再接続するため、MCP クライアントがツールを撤回することはありません。閉じているブラウザに対するツール呼び出しは、ブラウザを開いてコールドブートを待ちます。ブラウザは 別の VM であるため、サーバー命令はエージェントに対し、ワークスペースの開発サーバーには localhost ではなくワークスペースの LAN IP(hostname -I)で到達するよう警告します。

メモ: リッチクライアントでは、エージェントのブラウザ MCP ストリームを SSH チャネル上でスプライスでき、リモートエージェントがローカルで見えるブラウザペインを駆動できます。一度にアクティブなリレーは 1 つです。リモートアクセス を参照してください。

エディタで追加する HTTP MCP サーバーは、ホスト側の OAuth ブローカーを通じて認証できます: RFC 8414 ディスカバリと RFC 7591 動的クライアント登録(Bromure AC として)を実行し、システムブラウザで PKCE 認可コードフローを実行し、ループバックリスナー(ポート 28500~28599)でコールバックを提供します。成功ページには Authorized — You can close this tab and return to Bromure AC. と表示されます。フロー全体はホスト上で実行されるため、VM が実際の OAuth 認証情報を見ることはありません。

AppleScript(Bromure AC Suite)

スクリプティング辞書 Bromure AC Suite は 3 つ目の自動化サーフェスです — オーケストレーションや、ウィンドウ ID を必要とするスクリーンショットツールに役立ちます。Script Editor または osascript から application "Bromure Agentic Coding" をターゲットにします。これは次をカバーします。

  • Profileslist profilescreate ac profile <name> [color <c>](UUID を返す)、delete ac profile <name|uuid>、および get profile json / set profile json による完全ドキュメントの往復(Codable プロファイル全体。id は保持。保存済みシークレットは空欄フィールドの下でマージされる)。
  • フィールドごとの設定get profile setting … key … / set profile setting … key … to value …
  • エディタウィンドウopen profile manageropen ac profile editorclose ac profile editorselect editor category <key>、および get editor window id / get main window idscreencapture -l 用の CGWindowID)。
  • セッションopen ac sessionclose ac sessionlist ac sessions
  • アプリの状態と設定get app state(JSON)、および automation.enabledautomation.portautomation.bindAddressremoteAccess.enabledremoteAccess.portremoteAccess.bindAddressmanaged.serverURLmanaged.acIngestURL の各キーに対する get ac app setting / set ac app settingautomation.enabled を設定すると HTTP サーバーがライブで切り替わります。

たとえば、セッションを開くには次のようにします。

osascript -e 'tell application "Bromure Agentic Coding" to open ac session "Claude Dev"'

メモ: プロファイル JSON は、BROMURE_DEBUG_CLAUDE が設定されていない限りシークレットを除去して伝わります。set profile settingapiKey を空文字列に設定すると、鍵を保持するのではなく クリア します — JSON 往復ブリッジの空欄保持の動作とは異なります。ロケール切り替えは意図的にスクリプト化できません。代わりに、たとえば -AppleLanguages "(fr)" でアプリを再起動してください。

スケジュール自動化

スケジュール自動化は、1 つのワークスペースにバインドされた、定期的で無人のエージェント実行です。発火すると、新しい git worktree を作成し、その中で選択したエージェントをあなたのプロンプトで起動します。実行は通常の worktree タブとして表示されます。自動化は自動化ボード(⇧⌘A、またはサイドバーの AUTOMATIONS セクション)から作成・管理され、機能全体 — トリガー、スケジュール構文、チェーン、必須の注入画面、実行履歴、自動化の永続化場所 — は 自動化 で説明されています。このセクションでは、機能が公開する制御プレーンのサーフェスのみを扱います: API 上での自動化の駆動、無人実行が発生させ得る決定プロンプトへの応答、接続ターミナル上で同意がどう機能するか。

API 上での自動化の制御

機能全体はリッチクライアント用に制御ソケット上でミラーされます。

エンドポイント目的
GET /automations自動化とその実行履歴を一覧表示します。
POST /automations自動化を作成または更新(upsert)します。
DELETE /automations/<id>自動化を削除します。
POST /automations/<id>/run今すぐ発火します(スケジュールは変更しません)。
POST /automations/<id>/toggle一時停止または再開します。

保留中のプロンプトに応答する

一部のライフサイクル決定 — ストレージのアップグレード、ドリフトのリセット、侵害のワイプ — は通常ローカルアラートとして表示されます。代わりにリモートのリッチクライアントによってトリガーされた場合、ホストには表示されずキューに入れられます: それらは GET /statependingPrompts の下に表示され(それぞれ idprofileIDtitlemessage、ボタンラベルを持つ)、POST /prompts/<id>/answer で応答されます。

SOCK="$HOME/Library/Application Support/BromureAC/control.sock"
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
  -d '{"choice":"Upgrade"}'

プロンプト自身のボタンラベルの 1 つを choice として渡します。180 秒以内にどのクライアントも応答しなければ、プロンプトは安全なフォールバック(cancel / not-now — 決して破壊的なオプションではない)に解決されます。10 秒以内にどのクライアントも /state をポーリングしていなければ、即座にフォールバックします。これらのルートは制御ソケットのみです。リッチクライアントはこれらのプロンプトを通常のローカルアラートとしてレンダリングします。

接続ターミナル上での同意

ターミナルが — vm exec -itvm attach、または SSH 接続を通じて — セッションに対話的に接続されている間、ホスト側の承認プロンプト(認証情報の使用など)は、ゲスト内ではなく あなたの ターミナルにレンダリングされます。プロンプトには 🔒 Bromure — 承認が必要です と番号付きの選択肢、そして Choice [1-N] (Enter or timeout = deny) が表示されます。Enter、タイムアウト、EOF、デタッチはすべて拒否を意味するため、侵害されたゲストが承認を偽造することはできません。その後、ゲストの tmux は再描画されます。

デバッグエンドポイント(BROMURE_DEBUG_CLAUDE

BROMURE_DEBUG_CLAUDE を設定してアプリを起動すると、TCP 自動化 API 上で追加のルートがアンロックされ、VM 制御のデバッグゲートが解除されます。

  • 制御ソケットなしでの POST /sessions/<id>/exec/vms/… 制御ルート。
  • GET /app/state
  • GET /debug/ui-shot?path=…&which=unified|picker|editor — アプリが自身のウィンドウを PNG にレンダリングし(画面収録権限は不要)、サブビューフレームのダンプを返します。デフォルトの出力は /tmp/bromure-ui-shot.png です。
  • POST /debug/editor — スクリーンショットツール用に設定エディタを駆動します。
  • POST /detect/prompt-injection — 実際の検出器を実行してその判定を返します(このルートは 制御ソケット上でも デバッグフラグを必要とします)。

このフラグはまた、AppleScript と MCP のプロファイル JSON ブリッジを通じてシークレットがそのまま伝わることを可能にし、bromure-cli mcp --debug の VM ツールに必要です。GET /healthdebugEnabled を報告するため、アプリがどのモードにあるかがわかります。

警告: BROMURE_DEBUG_CLAUDE は、通常は exec、VM 制御、生のプロファイルシークレットをループバック TCP API から遠ざけている安全ゲートを取り除きます。自分が制御するマシンでのみアプリをそれとともに実行し、ループバック以外のバインドアドレスと決して組み合わせないでください — そうすると、ポートに到達できる誰にでも、完全な VM シェルアクセス、編集されていないシークレット、ウィンドウキャプチャが公開されます。これは BROMURE_AC_DEBUG(stderr イベントログ)や BROMURE_CLI_DEBUG(CLI ソケット診断)とは異なり、それらは無害なログ切り替えです。デバッグエンドポイント、すべての環境変数、この章で触れたすべてのファイルの場所は、付録 にカタログ化されています。