リモートアクセスとクライアント

マシン(設定エディタではワークスペース)は 1 台の Mac 上に存在しますが、それを操作したい人がいつもその Mac の前に座っているとは限りません。Bromure Agentic Coding にはリモートから到達でき、すべてのリモート経路は、オプションでデフォルトでは無効の単一の SSH 玄関口を通ります。これを有効にすると 3 つの入り口が得られます。任意のターミナルから ssh で入ってメニューに到達できる、玄関口そのものをコマンドラインから管理できる、そしてリッチクライアント — アプリを実行している別の Mac、または iPhone、iPad、Apple Vision Pro 上の Bromure Remote — が接続して、インスタンス全体 — セッション、ルームとスイッチボード、マシン、ターミナル、ボード — をライブウィンドウにミラーできます。

リッチクライアントはサーバーに 2 つの方法で到達します。同じネットワーク上では、直接アドレスで 追加します。それ以外のどこからでも、bromure.io アカウントにサインイン し、ディレクトリからサーバーを選びます。2 台のデバイスは bromure.io によって引き合わされ、その後は ピアツーピア で通信します。ポート転送も VPN も、覚えておくべきアドレスもありません — そしてサインインすれば、あなた自身のデバイス同士が互いを認可するので、接続は パスワード不要 で、手動の鍵設定も要りません。

この章では、ホストでのリモートアクセスの有効化、各入り口、リッチクライアントがリモートをミラーする仕組み(アドレス指定と bromure.io 経由)、リモートの環境設定の編集、iPhone・iPad・Vision Pro のクライアント、リモート VM 内のサービスへの到達、開発サーバーのインターネットへの公開、そしてそれらすべてを安全に保つセキュリティモデルを扱います。フリート規模の登録とクラウドテレメトリはまったく別のシステムです — エンタープライズを参照してください。コマンドの完全なリファレンスは CLI、API、MCP にあります。

3 つの入り口

以下のすべては SSH の玄関口が有効になっていることに依存します(デフォルトでは無効です)。いったん実行されると、同じサーバーが 3 つの利用者すべてに対応します。

入り口使う人得られるもの
プレーン SSH任意のターミナルの人(ssh -p 2222 you@mac)リモートメニュー — curses スタイルの TUI。生のシェルには決して到達できません。
bromure-cli remote CLIホスト自身での操作玄関口の管理:有効化/無効化、キー、ステータス。ホストでのリモートアクセスの有効化 を参照。
リッチクライアントアプリを実行している別の Mac、または iOS / iPadOS / visionOS 上の Bromure Remoteリモートインスタンスのライブミラーで、双方向に編集可能 — LAN 上でアドレス指定により、またはどこからでも bromure.io アカウント経由で到達します。

サーバーは 組み込み です — macOS 自身の sshd ではなく、アプリに組み込まれた Apple の swift-nio-ssh ライブラリです。この違いは重要です。アプリが独自のサーバーを実行するため、システム設定で リモートログイン を有効にすることも管理者権限も一切なしに、OpenDirectory を通じて macOS アカウントのパスワードを検証できます。サーバーは アプリを実行しているちょうどその macOS ユーザーのためだけにリッスンし、すべての対話的ログインをリモートメニューへと強制します。マシン向けの例外は、リッチクライアントが使う 4 つのホワイトリスト登録済みコマンド(bromure-fatclient/1 control、forward <ip> <port>、forward-udp <ip>、browser-mcp <vm>)だけです。人間が入力するそれ以外のものはログインと同じように扱われ、メニューに落ちます。

メモ: リモートアクセスウィンドウはサーバーを「アプリが所有するシステム SSH サーバーのインスタンス」と説明します。より正確には、これは組み込みの swift-nio-ssh サーバーであり、macOS の sshd では ない ように意図的に作られています — それこそが、リモートログインや管理者権限なしで動作させることを可能にしている点です。

ホストでのリモートアクセスの有効化

リモートアクセスは有効にするまでは無効であり、2 つの等価な方法で管理できます。リモートアクセス ウィンドウか、bromure-cli remote CLI です。どちらも同じ場所に書き込むので、一方で行った変更はもう一方にも反映され、ライブで適用されます。

リモートアクセスウィンドウ

Bromure Agentic Coding(アプリ名メニュー)→ リモートアクセス… を開きます。ウィンドウのタイトルは リモートアクセス です。緑またはグレーのドットが sshd 実行中 または sshd 停止中 を示します。サーバーが起動しているときは、ヘッダーの下に ssh -p <port> <user>@<host> の形式のコピー可能な接続文字列が表示されます。

セクションフィールド目的デフォルト
ヘッダーSSH 経由でリモートアクセスを有効にするサーバーを起動・停止します。オフ
リスナーバインド IPどのインターフェースでリッスンするか。0.0.0.0 = すべてのインターフェース、127.0.0.1 = この Mac のみ。0.0.0.0
リスナーポートリスナーの TCP ポート。≥ 1024 である必要があります(非 root プロセスは特権ポートをバインドできません)。2222
認証macOS アカウントパスワードアプリを実行しているユーザーの macOS ログインパスワードを受け入れます(OpenDirectory 経由で検証)。オン
認証公開鍵下の authorized-keys リストのキーを受け入れます。オン
サーバーホストキーフィンガープリントアウトオブバンド検証用の、サーバー自身の ed25519 ホストキーのフィンガープリント。最初の使用まで (初回有効化時に生成) と表示されます。—
認可済み公開鍵リスト登録された ssh-ed25519 / ecdsa 公開鍵。キー行を貼り付けて追加し、ゴミ箱アイコンで削除します。空のときは 登録されたキーはありません。 と表示されます。空

バインド IP または ポート を編集して Return を押すと、変更がライブで適用されます。認証 セクションには <user> に対して検証 — bromure-ac を実行しているユーザー。 と注記され、誰のパスワードが玄関口を開けるのかが明確になっています。

警告: 少なくとも 1 つの認証方法は有効なままにしておく必要があります — パスワード認証と公開鍵認証の両方をオフにすることはできません。無効なキーを貼り付けると 有効な公開鍵ではありません として拒否されます。認可済みキーの追加または削除はリスナーを再起動し、ライブ接続をすべて切断します。

bromure-cli remote CLI

CLI は実行中のアプリと、その所有者専用の制御ソケット経由で通信するので、アプリが唯一の信頼できる情報源であり続けます。既存のシェル経由で到達したヘッドレス Mac でアクセスを有効にする最速の方法です。

コマンド動作
bromure-cli remote(または remote status)有効/実行状態、バインドとポート、認証方法、ホストキーのフィンガープリント、ログインユーザー、すぐに使える接続文字列、番号付きの認可済みキーリストを出力します。
bromure-cli remote enable [--port N] [--bind IP] [--password|--no-password] [--pubkey|--no-pubkey]サーバーを起動します(必要ならアプリエージェントを自動起動)。デフォルト:ポート 2222、バインド 0.0.0.0、両方の認証方法がオン。
bromure-cli remote disableサーバーを停止し、オフ状態を永続化します。
bromure-cli remote key add <path-or-key-text>ファイルパスまたは貼り付けたキー行から公開鍵を登録し、そのフィンガープリントを出力します。
bromure-cli remote key ls1 始まりのインデックス、フィンガープリント、コメント付きで認可済みキーを一覧表示します。
bromure-cli remote key rm <index|fingerprint>インデックスまたはフィンガープリントの部分文字列でキーを削除します。

remote enable は --no-password と --no-pubkey の両方を渡すと拒否し、ベースイメージが欠けているかインストール中はエラーになります。アプリが実行されていないとき、status、disable、key ls は bromure-ac エージェントが実行されていません。 と出力します。

メモ: ベースイメージが存在しないか、まだインストール中の間はサーバーは起動しません — 有効化すると、暗黙のうちに何もしないのではなく、対処可能なエラーが返されます。これは起動時にもトグルを切り替えたときにも当てはまります。まずベースイメージをインストールするか、インストールを完了してください。

ホストキー、フィンガープリント、信頼

初回の有効化時に、サーバーは ed25519 ホストキーを生成します。そのフィンガープリント — サーバーホストキー の行と bromure-cli remote status で、256 SHA256:… bromure-ac-remote (ED25519) の形式で表示されます — は、接続するクライアントが正しい Mac に到達したことを確認するために検証するものです。中間者攻撃者がホストになりすませないように、このフィンガープリントを接続する人に渡してください(またはリッチクライアントの初回接触シートで自分で確認してください)。リッチクライアントがどのようにこれをピン留めするかは 初回使用時の信頼 を参照してください。

レート制限

パスワード試行はトークンバケットによってソース IP ごとにスロットリングされます。フルスピードで 5 回試行でき、その後は約 2 秒ごとに 1 回のペースで補充され、課される遅延は最大 8 秒までです。試行は 遅延 されるだけで、拒否されることは決してなく、誰もロックアウトされません。1 つのうるさい IP が別の IP を遅くすることはできません。公開鍵認証は決してスロットリングされません。

プレーン SSH でのサインイン

任意のターミナルは ssh -p 2222 <user>@<mac> でホストに到達できます。接続はシェルではなく リモートメニュー に落ちます — これは curses スタイルの TUI(内部的には bromure-ac __remote-menu)で、すべての人間のログインに強制されます。それを通じて生のシェルに到達することは決してできません。

このメニューはセッション中心の再設計より前からあり、マシンを軸に構成されています。ライブの状態グリフ(● 実行中、◌ 起動中、⏸ サスペンド中、○ オフ)付きのワークスペースリストに加え、モデル(インストール済みモデルとデバイス上カタログ)と Trace(概要、ホスト名、漏洩)のセクションがあります。ここから次のことができます。

  • 1 画面のフォームでワークスペースを作成します。ペインごとの設定フォームへの入り口 Full settings… もあります。
  • 任意のワークスペースを 開始、サスペンド、強制終了、再起動、または削除 します。
  • 設定を編集します。シークレットは •••• (set) と表示され、シークレットを空欄のままにすると保存済みの値が保持されます。
  • ワークツリーを管理します — 作成、マージ、ターミナルのアタッチ、破棄。
  • SSH キーを生成 し、Fusion とモデルルーティングを切り替え、トレースの要約を閲覧します。
  • 任意の tmux タブまたは実行中の Docker コンテナに アタッチ します。

注: メニューの設定フォームではモデルボードを編集できません。そのモデルフォームは読み取り専用で、サーバーのプロバイダー(API キーまたはサブスクリプション)を一覧表示し、ワークスペースがグローバル設定を上書きしているかどうかを示します。プロバイダーとモデルは、Mac の環境設定、またはミラーのリモート環境設定で選択してください。

矢印キーで移動し、Enter で選択、q または Esc で戻ります。終了(切断) でセッションを終了します。アタッチ を選択するとターミナルがゲストの tmux に渡されます。Ctrl-b d でメニューに戻ってデタッチします。アタッチ中は、オーバーレイのキーコード(デフォルトは Ctrl-])でホスト側のコントローラーが表示され — タブの切り替え、新しいタブを開く、worktree の管理、Fusion やルーティングの切り替え、設定の編集、再起動、サスペンド、切断が — キーストロークがゲストに届くことなく行えます。コンテナへのアタッチではシェルの入力を求められます(Enter = sh)。

注: メニューには本物のターミナルが必要です。TTY なしで接続すると、ssh -t で再接続するよう促すヒントが表示されます。コールド状態のワークスペースを起動すると、アタッチする前にゲストの tmux セッションを最大約 20 秒待ちます。

オーバーレイのコードは ホスト Mac(接続先のマシン)でファイル ~/Library/Application Support/BromureAC/remote/overlay-key を通じて設定できます — 受け付ける形式は C-]、^]、0x1d、29 です — または BROMURE_OVERLAY_KEY 環境変数でも設定できます。

リッチクライアントでのリモートのミラーリング

リッチクライアントは、この Mac の Bromure Agentic Coding — または iPhone、iPad、Apple Vision Pro 上の Bromure Remote — をリモートのライブミラーに変えます。Mac では Remote — <name> というタイトルの完全なウインドウが開き、ローカルのメインウインドウと同じ見た目と操作性を持ちます。セッションのホーム、ルームとスイッチボード、マシン、タスクボードとオートメーションボードです。行った操作はすべてリモートで実行され、結果が返ってきます。

接続する

ワークスペース › リモートの Bromure に接続…(⇧⌘K)を開きます。ウインドウは選択肢を次のようにまとめています。*「Bromure を実行している別の Mac(グリッド、ワークスペース、タブ、オートメーション)をミラーリングします。サインインするとどこからでもサーバーにアクセスでき、LAN 上のアドレスを指定して直接追加することもできます。」*どちらの経路も同じミラーウィンドウに到達し、違うのは 2 台のデバイスが互いを見つけて認可する方法だけです。

メモ: SSH ハンドシェイクは回線に適応します。接続とハンドシェイクの猶予時間は実測のラウンドトリップ時間に応じてスケールするため、高レイテンシの回線(ホテルの Wi-Fi、モバイル回線、大陸をまたぐ距離)ではタイムアウトせず、時間をかけて接続します。

アドレスで接続(同一ネットワーク)

Mac のアドレスが分かっていて bromure.io アカウントが不要な LAN では、これを使います。

  1. リモート Mac で、リモートアクセスを有効にします(リモートアクセス ウィンドウまたは bromure-cli remote enable)。
  2. この Mac で、+ をクリックし、名前(例:rack mini)、アドレス、ポート(デフォルト 2222)、リモートユーザー を入力してから 接続 をクリックします。保存された行には user@address:port と最終接続時刻が表示されます。
  3. 初回接触 時に、リモートの SSH ホストキーのフィンガープリントを示すシートが表示されます。リモートの リモートアクセス ウィンドウと照合して検証し、信頼して続行 をクリックします。ピンはこのエンドポイントに対して記憶され、その後の接続はキーが変わらない限り無言で行われます。キーが変わった場合、ボタンは赤くなり 新しいキーを信頼して続行 と表示されます — 中間者攻撃の可能性です。
  4. クライアントは、このデバイス専用の鍵で公開鍵認証を試みます。まだ認可されていない場合は、リモートユーザーの macOS ログインパスワードにフォールバックします(ボタン: サインイン)。パスワードでのログインに成功すると、このデバイスの鍵がトンネル経由でリモートに登録されるため、以降の接続はすべてパスワード不要になります。パスワードを一切入力せずに事前に認可するには、この Mac のキーを表示をクリックし、リモートで bromure-cli remote key add '<this Mac's key>' を実行します。

最初の接続の後は、保存済みサーバーをダブルクリックすればワンクリックで再接続できます。各行のコンテキストメニューには 接続、編集…、削除 があります。iPhone と iPad の Bromure Remote では、同じ流れを アドレスでサーバを追加 から利用できます。

bromure.io アカウント経由(どこからでも)

bromure.io にサインインすると、クライアントはネットワークをまたいでサーバーに到達できます — カフェの Wi-Fi から自宅の Mac へ — ポートフォワーディングも VPN も、覚えておくアドレスも不要です。bromure.io は 2 台のデバイスを引き合わせ、直接経路が不可能な場合にバイトを中継するだけです。SSH セッション自体は両者の間でエンドツーエンド暗号化されたままです。

  1. サインインします。 Mac では、アプリ名のメニューから bromure.io にログイン… を選び、ブラウザでサインインします(またはコードのセクションを展開して、6 語の登録コードとデバイス名を入力します)。Bromure Remote では、スタート画面からサインインします。登録したすべてのデバイスは同じアカウントを共有します。
  2. リモート Mac で、リモートアクセス を有効にします。サーバーがディレクトリに現れるのは、その玄関口が有効で、bromure.io にハートビートを送っている間だけです。
  3. クライアントで リモートの Bromure に接続… を開きます。サーバーは マイサーバー · bromure.io の下に、ライブのオンライン表示ドットと最終確認時刻付きで一覧表示されます。いずれかをダブルクリックします(または選択して 接続 をクリックします)。ピアツーピアの経路 — 直接、ルーターのポートマッピング経由、または中継 — が確立される間、ステータスは 「Connecting to <name> via bromure.io…」 と表示され、その後ミラーが開きます。

この経路では、入力するアドレスも、ホストキーのシートも、パスワードもありません。あなた自身のデバイスがアカウントを通じて互いを信頼し(下記)、ホストキーは自動的にピン留めされます。

自分のデバイス間ではパスワード不要

いったんサインインすると、登録するすべてのデバイスがアカウントを通じて SSH アイデンティティを共有するので、あなたのどのデバイスからでもあなたのどのサーバーにも パスワードなし、手動の bromure-cli remote key add なし で到達できます。

  • 各デバイスは起動時に SSH 公開鍵を bromure.io に公開します。各サーバー(リモートアクセスがオン)は数秒以内にデバイスの鍵を取得して authorized_keys にインストールするため、今登録したばかりのデバイスもほぼ即座に認可されます。
  • サーバーは 実行している macOS ログイン も公開するので、クライアントは自動的に正しいユーザーとしてダイヤルします(アドレス経路であなたが入力を求められるまさにそのフィールドです)。
  • 鍵は あなた自身のデバイスに限定 されます — 同じ組織内であっても、他のユーザーのものには決してなりません。
  • デバイスで サインアウト するとそれは引退します。その鍵はあなたのサーバーから削除され、ディレクトリから消えるので、再びサインインしても古い重複が残ることはありません。90 日間使われなかった デバイスも、次にチェックインするまで認可されなくなります。そして bromure.io の Web コンソール から、あなたのどのデバイスも要求に応じて ログアウト できます。

注: リッチクライアントは、初めて使用するときに専用の ed25519 鍵ペア(コメント bromure-ac-fatclient)を生成します — これがアカウントに公開される鍵です。アドレス指定での接続では、ホストキーのピン留めはユーザーではなくエンドポイント(address:port)に属するため、保存済みサーバーのアドレスやポートを編集するとピンが破棄され、フィンガープリントのシートが再び表示されます。bromure.io での接続では、代わりにアカウントを通じてピアの鍵をピン留めします。

ミラーウィンドウ

接続に成功すると、ミラーウィンドウが自動的に開きます。これはリモート Mac のセッションのホームです。同じサイドバー(セッション、ルーム、スイッチボード、タスク、オートメーション、Kubernetes クラスタやレジストリを含む仮想マシン)、同じステージ、同じヘッダーを備えています。新規セッション(⌘N)でセッションを開始し、チャットし、質問に答え、チャットのグリッドを持つルームを開き、あるいはリモートのスイッチボードと話します — すべてリモートで行われ、⌘K パレットも使えます。

ヘッダーにはローカルのウインドウと同じコントロールがあります。セッションのターミナル用の Linux ピル、マシン名が付いたマシンメニュー(設定…、マシンの詳細、IP アドレスをコピー、トレースを調べる、専用ウインドウで開く、再起動)、Fusion の稲妻アイコン、エージェント用ブラウザの表示/非表示 (⌃⌘B)、ファイルパネルの表示/非表示 (⌃⌘E) です。ミラーウィンドウには独自のコントロールが 1 つ加わります。ネットワークトンネルのトグルです(システム全体のネットワークトンネルを参照)。ターミナルはマシン自身の外観で描画されます。

ミラー経由では、いくつかの動作が特別になります。

  • 設定… はローカルと同じ設定エディタを開きますが、シークレットを空にした読み取りと、シークレットを保持する保存に支えられています(シークレットはホストに留まるを参照)。そのモデルペインは、リモート Mac のモデル設定に対する、そのリモートマシン独自の上書きを編集します。Generate new SSH key は機能し、新しい公開鍵を表示します。
  • ファイルパネル(⌃⌘E)は、トンネル経由でマシンのファイルをブラウズします。以前のリリースにあった独立したファイルブラウザウインドウに代わるものです。マシンを参照してください。
  • 再起動 はサーバー自身のウインドウと同様に動作します。「…」を再起動しますか? の後にクリーンな再起動、選択時に ⌥ を押していれば強制再起動です(マシンの再起動を参照)。その後、その指示がサーバーに送られます。
  • 専用ウインドウで開く は、追加のライブターミナルウインドウを開きます。このウインドウはマシンが停止すると自動的に閉じます。

リモートがセッション API を持たない古い Bromure を実行している場合、ミラーは以前のマシン中心のレイアウトにフォールバックします。

メニューは前面のミラーに作用する

ミラーウィンドウがキーウインドウのとき、次のメニュー項目はこの Mac ではなくリモートの Mac に作用します。

項目ミラー先の Mac での効果
新規セッション…(⌘N)ミラーの新規セッション画面を開きます。
ワークスペース › 新規ルーム…リモートにルームを作成します。
次のルーム(⌃⌘R)リモートのルームを順に切り替えます(アーカイブ済みのルームはスキップされます)。
ワークスペース › インフラ › Kubernetes クラスタを作成… / レジストリを作成…ミラー内で作成シートを開くため、クラスタまたはレジストリはリモート上に作成されます。
環境設定…(⌘,)リモートを対象に環境設定を開きます(後述)。

リモートの環境設定

ミラーウィンドウが前面にある状態で ⌘, を押すと、その Mac のデフォルトを対象に環境設定が開き、タイトルは 環境設定 — <host> になります。ミラーウィンドウが開いている間は、環境設定の上部にある 設定対象: ピッカーで この Mac と接続中の各リモートを切り替えられます。対象ごとに独自のエディタがあるため、下書きがマシン間で混ざることはありません。リモートの設定を読み込んでいる間、ウインドウには「<host> から環境設定を読み込み中…」と表示されます。失敗すると リモートの環境設定を読み込めませんでした と 再試行 が表示されます。

すべてはリモートとの往復で処理されます。シークレットは空の状態で届き、新しい値を入力しない限り保持されます。モデルペインはリモートのグローバルなモデル設定を編集します — API キーは伏せ字で表示されます — そして変更は 保存 をクリックしたときに保存されます。これは、モデルボードが編集と同時に保存するローカルの環境設定とは異なります(モデルとプロバイダーを参照)。この Mac 自身のアプリ全体の設定 — オートメーションペインと、リソースの ワークスペースのサブネット および リモートトランスポート セクション — は、リモートに対しても、リモートマシンのエディタにも表示されません。

リモートからプロバイダーにサインインする

サブスクリプションのサインインは、クライアントからエンドツーエンドで機能します。Sign in with プロバイダー はリモート上でキャプチャを実行しますが、プロバイダーのサインインページ(またはデバイスコードの URL)はあなたのブラウザで開きます。URL を一切表示しないプロバイダーの場合、クライアントはサインイン用 VM のターミナルを表示するので、対話的に完了できます。リモートマシンの設定から開始したサインインは、スコープの質問 — すべてのワークスペース または このワークスペースのみ — をあなたの画面に表示します。誰も答えなければ このワークスペースのみ のままになります。リモートの環境設定から開始したサインインは、常にリモート上のすべてのマシンで共有されます。ログアウト… もリモートで機能します。

リモートでのブランチとレビュー

新規ブランチ…、変更を確認、ブランチにマージ は、専用フォルダを持つセッションに対して、リモート自身の画面とまったく同じようにミラーから機能します(ブランチとレビューを参照)。Bromure Remote では、セッションのメニューに 新規ワークツリー… があります。

ミラー先の Mac のセッションに依頼する

この Mac がリモートをミラーしている間、ここのセッションは @ニックネーム を使ってリモートのセッションに依頼できます。リモートのセッションは、コンポーザーの @ リストとエージェントに、ホスト名付きで表示されます。依頼に添付されたファイルはトンネルを通ってピアの受信箱に届きます。回答、軌道修正、クローズもすべて同じ経路で戻ります。逆方向 — リモートのエージェントがこの Mac のセッションに依頼すること — はできません。リモートにはクライアントへ戻るチャネルがないためです。

ミラーされるもの

ミラーには、ライブの実行状態を伴うすべてのマシン、セッションとルーム、タブとブランチ、グリッド、オートメーション、コーディングタスクボード、マシンの詳細とバイタル、Docker ダッシュボード、Kubernetes クラスタとレジストリ、ライブの対話型ターミナル、そしてリモートのセキュリティイベントが表示されます。セキュリティイベントは、この Mac のものと並んでセキュリティタイムラインに表示され、そのマシンフィルタには すべてのマシン、この Mac、ミラー中の各ホストがあります。デバイス上のモデルとそのダウンロードはリモートで実行され、クライアントでは決して実行されません。編集は接続中のすべてのクライアントに収束します。マシンの起動・停止・再起動、セッションとルームの操作、タブ操作、グリッドの編集(レイアウト全体、最後に書き込んだものが優先)、オートメーションの編集、Fusion トグル、Docker 操作、設定の保存、ファイル転送です。

ミラーは、リモートのコントロールソケットへの SSH トンネル経由のブリッジ上のプッシュチャネル(GET /state/subscribe)でリモートに追従します。プッシュチャネルが稼働している間、クライアントはハートビートとして 5 秒ごとに完全な状態を読み直すだけで、チャネルが切れた場合は 0.75 秒ごとの読み取りにフォールバックします。短いコントロール呼び出しはホストごとに 1 本の SSH 接続上で多重化されます。対話型のターミナルアタッチは専用の SSH 接続を使います。多重化されたチャネルでは、ターミナルが即座に必要とする出力がバッファリングされてしまうためです。bromure.io 接続では、同じブリッジとターミナルストリームがピアツーピア経路を通り、ミラーはまったく同じように動作します。

チャットも回線を節約します。リモートセッションのチャットを初めて開くと、会話の最新 ~1.5 MB だけを読み込みます。上にスクロールして 以前の会話を読み込む まで行くと、古い部分を取得します。もう一度開いたチャット — セッションに戻ったとき、またはルームが再表示されたとき — は、すでにダウンロード済みの履歴から始まり、新しいメッセージだけを取得します。

リッチクライアントからは、いくつかの操作が利用できません。

  • グリッドレイアウトの編集には、リモート上で GUI ウインドウが開いている必要があります。完全にヘッドレスなリモート(アプリは実行中だがメインウインドウなし)は、それ以外のすべてをミラーしますが、レイアウトの変更は受け付けません。
  • ファイルからの SSH 鍵のインポートは、リモートの設定エディタでは非表示です。

iPhone、iPad、Apple Vision Pro 上の Bromure Remote

Bromure Remote はクライアント専用のミラーで、まったく同じ方法で到達します(サインインしてサーバーを選ぶか、アドレスで追加します)。Mac と同様にセッション中心です。

  • iPhone — あなたを必要としているセッションの数が付いた セッション リスト、新規セッション画面(「何をお手伝いしましょうか?」)、そしてセッションごとの画面があります。セッション画面には、チャット、ターミナル用の Linux ボタン、そして 再開、名前を変更…、新規ワークツリー…、マシンの設定、アーカイブ(または 終了してアーカイブ)、セッションを終了、セッションを削除 を含むメニューがあります。ルームはセッションごとのタブとして開き、スワイプで切り替えられ、ルームのスイッチボードも使えます。
  • iPad — セッション、ルーム、マシンを備えた常設のサイドバー。ルームは Mac と同様にチャットのグリッドを表示します。

どちらでも、一覧の並びは Mac のサイドバーと同じです:まず 新規セッション、そのすぐ下に コーディングタスク と オートメーション、それからセッション。マシンは 仮想マシン(グリッド付き)と Native Machines(リモートが接続した Sidecar の Mac。1 台でもあるときだけ表示)に分かれ、ネイティブマシンには 新規ターミナル があります。iPad では、折りたためるセッションのセクションの上に 新規セッション が表示されたままになります。

リモートがセッションの開始を拒んだとき(たとえば、そのエージェントのない Sidecar の Mac)、クライアントは何もしないのではなく、リモートが示した理由を表示します。

  • Apple Vision Pro — iPad のレイアウトに加えて空間ウインドウ。任意のターミナルを独立したウインドウとして部屋のどこにでもピン留めしたり、グリッドを専用のステージウインドウとして開いたり、Pin All as Windows でグリッド全体を浮遊するウインドウに変えたりできます。

ルームでは、下部の 1 つのコンポーザーに 宛先 ピッカー — ルームのスイッチボード、またはその中の任意のセッション — と添付メニュー(写真ライブラリ、ファイルを選択、画像をペースト)があります。添付ファイルは送信時に宛先のマシンにアップロードされます。iPhone と iPad では、アプリがバックグラウンドにある間、入力を必要とするセッションがプッシュ通知で知らせてくれます。タップするとそのセッションが開きます。これらのデバイスではモデルボードは利用できません。モデルの変更は Mac から行ってください。

保留中の判断プロンプト

一部の操作は、リモート上で判断を求めます — ホームストレージのアップグレード、ベースイメージのドリフトのリセット、侵害された VM の消去、閉じるアクションに関する質問、プロバイダーのサインインのスコープの質問、または認証情報持ち出しアラート(侵害検出器が、認証情報を漏洩させようとした VM を一時停止したもの)です。これらはあなたのミラーウィンドウにアラートとして表示され、あなたの回答はトンネルを通って戻ります。プロンプトに回答がないまま時間が経つと、安全な選択肢でタイムアウトします。保留中のプロンプトがリモートのコントロールプレーンをブロックすることはありません。アラートが表示されている間も、ミラーの他の部分はライブのままです。実行中のエージェントが引き起こしうる同意プロンプト(認証情報の使用、サプライチェーンのパススルー、ガードレールへの書き込み、プロンプトインジェクション)は、ゲストが偽造できない別経路で処理されます。これはリモートでの同意処理に記載されています。

シークレットはホストに留まる

シークレットがリンクを越えることはありません。リッチクライアントがリモートマシンの設定やリモートの環境設定を読み込むとき、すべてのシークレットフィールドは空の状態で届きます(モデルプロバイダーの API キーは伏せ字の代替値として届きます)。保存時、空または伏せ字のフィールドは「保存済みの値を保持する」を意味し、入力された値はそれを置き換えます。API キー、トークン、サブスクリプションのサインイン、MCP の環境シークレットはリモートの Mac に留まります。リッチクライアントはペアリング後、SSH 鍵のみで認証します — ミラー中にパスワードを求められることはありません。

リモートの VM 上のサービスへの到達

リモートワークスペースの開発サーバーは、リモートの ネットワーク上で http://192.168.64.5:3000 のようなプライベートアドレスに存在します。Bromure はそれへの 2 段階のアクセスを提供します — 1 つは自動でブラウザスコープ、もう 1 つはオプトインでシステム全体です。

ブラウザペイン(自動、PAC スコープ)

ミラーウィンドウの折りたたみ可能なブラウザペイン(ヘッダーの地球儀ボタン、または ⌃⌘B)はローカルの Chromium VM で、リモートのワークスペースサブネットへのページトラフィックは SSH でトンネリングされます。生成された PAC(プロキシ自動設定)スクリプトが、リモートサブネットだけをホストごとの SOCKS フォワーダー経由でルーティングし、それ以外はすべて DIRECT にします。宛先はリモート側で解決されるため、リモートの開発サーバーのリテラルな http://192.168.64.x:port に移動するだけでそのまま機能します。リモートエージェント自身のブラウザ制御 MCP ストリームはこのペインに中継されるため、リモートのコーディングエージェントはあなたが見ているブラウザを操作します。

実行中のリモートマシンでセッションまたはマシンを選択し、⌃⌘B を押します。最初の状態更新でリモートのサブネットが届き、SOCKS フォワーダーが起動するまで、ペインは何もしません(それまではログ行に「tunnel not ready」と記録されます)。ローカルのブラウザ VM はサブネット 192.168.127.0/24(ゲートウェイ 192.168.127.1)に固定されているため、ワークスペースのサブネットと衝突することはありません。永続的なブラウザプロファイルはこの Mac 上に、リモートマシンの ID をキーとして保存されます。

メモ: ブラウザペインには、この Mac が Apple Silicon であり、ブラウザベースイメージがローカルにインストールされていることが必要です。SOCKS フォワーダーは 0.0.0.0 にバインドします(ブラウザ VM が vmnet ゲートウェイでそれに到達できるように)が、接続を受け付けるのはループバックと固定された 192.168.127.x ブラウザサブネットからのみです — オープンリレーになることは決してありません。

SOCKS フォワーディングと固定ポートフォワード

接続された各リモートホストは、0.0.0.0 にバインドされたエフェメラルポート上のローカル SOCKS5 フォワーダーを自動的に取得します(ループバックと 192.168.127.x ブラウザサブネットにピアフィルタリングされます)。各 CONNECT は forward <ip> <port> SSH チャネルを開き、リモートがそれを — ゲストの常時稼働する vsock 5010 上のループバックリレー経由で — そのゲスト自身の 127.0.0.1:<port> にブリッジします。したがって、この Mac から curl --socks5 127.0.0.1:<port> http://192.168.64.5:3000 はリモートゲストにバイト単位で到達します。

固定フォワードには隠れた CLI 配管があります。ssh -L スタイルのフォワードには bromure-cli __forward <hostID> <localPort> <remoteIP> <remotePort>、スタンドアロンの SOCKS プロキシには bromure-cli __forward-socks <hostID> <localPort> です。どちらもデフォルトでループバックにバインドし、--bind-all を受け付けます。

警告: リモートは、ターゲットが自身の vmnet サブネット上のゲストでないフォワードをすべて拒否します。フォワードを使ってリモート Mac 自身、そのゲートウェイ、またはインターネットに到達することはできません — ワークスペース VM のみです。

システム全体のネットワークトンネル

ブラウザペインだけでなく任意のローカルアプリからリモート VM にリテラルなアドレスで到達したい場合は、ミラーウィンドウのネットワークトグル(点をつないだアイコン、ヘッダーのコントロールの先頭)でホストごとのトンネルを有効にします。そのツールチップは リモートの VM への直接ネットワークアクセスを有効にする(任意のローカルアプリから 192.168.x.x) です。

1 回限りの特権ヘルパー — SMAppService 経由でインストールされる launchd デーモン、sudo なし — が utun インターフェースを作成してリモートサブネットをそこにルーティングし、そのインターフェースのファイルディスクリプタをアプリに返します。アプリ内のユーザースペース TCP/UDP スタックが各フローを終端し、あなたの SSH アイデンティティを使って同じ SSH フォワードチャネルにスプライスします。pf ルールもカーネルフォワーディングもありません。

初めて有効にするとき、Bromure のネットワークヘルパーを許可 というタイトルのアラートが 1 回限りの macOS 承認について説明します。

  1. ツールバーのトグルをクリックします。
  2. アラートで システム設定 → 一般 → ログイン項目 を開き、Bromure Agentic Coding を許可します(macOS は 1 回だけ管理者の認証情報を求めます)。
  3. アプリは承認をポーリングし(2 秒ごと、最大 5 分)、承認された瞬間に自動的に接続します。待機中、トグルのツールチップには システム設定 › ログイン項目での承認を待機中… と表示されます。

リモートがまだマシンのサブネットを報告していない場合(どのマシンも起動していない場合)、ツールチップは リモートがワークスペースのサブネットを報告するのを待っています(ワークスペースを起動してください)— クリックでキャンセル になります。トンネルが稼働すると、ツールチップは リモートの VM への直接ネットワークアクセスはオンです — クリックしてオフにします になり、失敗した場合は ネットワークトンネルが失敗しました — クリックして再試行 になります。オフに切り替えるとトンネルが停止し、最後のホストが無効にするとデーモンの登録が解除されます。この設定はホストごとに記憶されます。

メモ: トンネルには 1 回限りの承認のために管理者アカウントが必要です。それがなくても、Bromure は組み込みの SOCKS 経路で動作し続けます — ヘルパーは 他の アプリからリモート VM に到達する場合にのみ必要です。macOS が登録をきっぱり拒否した場合、ネットワークヘルパーをインストールできませんでした というタイトルのアラートが説明し、トグルは次のクリックで再試行します。リモートゲストへの ping はトンネルによってローカルで応答されます。これはルーティングが起動していることを確認するものであり、ゲストが生きていることを確認するものではありません。

複数のリモート(インストールごとのサブネット+フリートルーティング)

複数のリモートを同時にミラーリングできます。それぞれが独自のウィンドウ、SOCKS フォワーダー、そして(オプションで)トンネルを開きます。これがかつて陥っていた罠:すべてのインストールは歴史的にワークスペース VM に同じ 192.168.64.0/24 ネットワークを使っていたので、2 つのミラーされたリモートが同一のサブネットを広告し、システム全体の VPN がそれらを区別できませんでした。

インストールごとのサブネットは、この問題を根本から解決します。各 Mac は 172.16.0.0/12 の中からランダムな /24 を選び — Docker の 172.17〜172.20 の範囲と、ホストがすでに属している /24 は除外します — それをすべてのワークスペース VM に使うため、独立した 2 つのインストールが衝突することはほぼありません(172.16/12 は、企業の LAN や VPN と衝突する可能性が最も低いプライベート範囲でもあります)。新規インストールはこのようなサブネットで開始します。環境設定 › リソース › ワークスペースのサブネット で、いつでも確認、変更、再ランダム化できます。ゲストのアドレス割り当ては Bromure 独自のスイッチからの純粋な DHCP なので、これは完全にホスト側の処理であり(イメージの再ビルドは不要)、リモートは選んだサブネットを状態の中で通知するため、リッチクライアントとトンネルは自動的にそれに追従します。

2 つのリモートが それでも サブネットを共有する稀なケースのために、最初のものは文字通りにルーティングされ、2 番目のものには 100.64.<n>.0/24 CGNAT 空間のエイリアスが与えられ、1:1 のホストオクテット保持リマップで両方に同時に到達できるようになります。

警告: マルチホストのエイリアスルーティングは実装されユニットテストされていますが、エイリアスを認識する PAC とブラウザ MCP リマップをホスト間で縫い合わせるランタイム配線はまだ保留中です。単一のリモートホストが今日完全にサポートされている構成です。 エイリアシングの既知の制限は、配線された後、エイリアスされた リモート内で絶対的な文字通りの http://192.168.64.x リンクを出力する開発ページが誤ってルーティングされる可能性があることです。文字通りの(エイリアスされていない)リモートは影響を受けません。

開発サーバーのインターネットへの公開

ここまでの内容とは別に、ワークスペース内で実行されている個々の HTTP サービスを、ポートごとの Cloudflare クイックトンネルでパブリックなインターネットに公開できます。実行中のマシンの詳細(マシンメニュー › マシンの詳細)を開き、ポートカードの下でサービスを見つけて地球儀をクリックします(ツールチップ: インターネットに公開(Cloudflare クイックトンネル))。Bromure はそのオリジン用に cloudflared プロセスを 1 つ実行し、ランダムな https://<name>.trycloudflare.com URL を発行します — Cloudflare アカウントは不要です。サービスごとにトンネルと URL が 1 つずつで、あるサービスを公開・非公開にしても他のサービスには影響しません。

地球儀の色は状態を追跡します。グレー = オフ、オレンジ = インストール中または起動中、緑 = 実行中、赤 = 失敗。ポートの下のステータス行が進捗(cloudflared をダウンロード&検証中(約 18 MB、1 回限り)…、次に トンネルを起動中…)またはコピーボタン付きのクリック可能なパブリックホスト名を表示します。

初めて何かを公開するとき、Cloudflare Tunnel 経由でサービスをインターネットに公開しますか? というタイトルの 1 回限りの同意ダイアログが表示され、ダウンロード、検証、トンネルプロセス(セキュリティタイムラインに記録されます)、Cloudflare の利用規約、そしてランダムな URL を知っている人なら誰でもサービスに到達できるという事実について説明します。停止するには、もう一度地球儀をクリックします。

cloudflared バイナリはピン留めされたリリースで、実行前に 2 回検証されます。ダウンロードしたアーカイブの SHA-256 がアプリに組み込まれたハッシュと照合され、Developer ID のコード署名チェックで Cloudflare のチーム ID が確認されます。--no-autoupdate 付きで実行されます。

警告: クイックトンネル URL はそれを持つ誰にでも公開され、ホスト名はトンネルが再起動するたびに(再起動、非公開/再公開、クラッシュ)ローテーション します。地球儀が付くのは HTTP(S) オリジンのみです — SSH やよく知られた生の TCP またはデータベースのポート(22、1433、3306、3389、5432、5672、5900、6379、9092、11211、27017)や UDP には決して付きません。ブラウザは Cloudflare のエッジ経由でそれらに到達できないためです。ワークスペースのトンネルはすべて、その VM がサスペンドまたはシャットダウンするときに破棄されます。ダウンロード時のハッシュ不一致は、ピンがアプリのリリースで更新されるまでインストールを拒否します。

OAuth コールバックフォワーディング

ワークスペース VM の 内部 で実行されている CLI — gh、gcloud、サブスクリプションのサインイン — は、ホスト Mac でブラウザを開いて http://127.0.0.1:<port>/callback へのリダイレクトを待つことで OAuth フローを完了することがよくあります。Bromure はこれを自動的にブリッジします。ホストはループバックポートを IPv4 と IPv6 の両方でバインドし、最初の実際のリクエストで vsock 5010 経由でゲスト自身の 127.0.0.1:<port> にスプライスします。redirect_uri は決して書き換えられないので、PKCE とリダイレクト検証は引き続き通ります。設定するものは何もありません — ワークスペース内でログインを開始すれば、リダイレクトはゲストに配信されます。

フォワーダーは 300 秒後に自身を破棄するので、ループバックポートが無期限に保持されることはありません。ホストポートがすでに使用中の場合、フローはブリッジなしでネイティブに進行し、投機的なブラウザのプリコネクト(開いても何も送信しないソケット)は無視されるので、単発のコールバックサーバーを詰まらせることはできません。

セキュリティモデル

リモートアクセスは強力なので、その境界について正確に述べる価値があります。

  • デフォルトでオフ、1 つの玄関口。 SSH サーバーを有効にするまで、リモート経路は存在しません。あらゆる経路 — 人間のメニュー、CLI、リッチクライアント、ポートフォワード、ブラウザ MCP — はその 1 つのサーバーに乗り、他のものには乗りません。
  • 暗号化とトランスポート。 すべてのトラフィックは SSH です。リッチクライアントの状態ストリームとコントロール呼び出し、ターミナルのアタッチ、ファイル転送、ポートフォワード、ブラウザ MCP の中継は、すべて SSH 接続の内側を通ります。swift-nio-ssh には耐量子鍵交換がないため、最新の OpenSSH クライアントは「not using a post-quantum key exchange」という警告を表示します。これは想定どおりで、ダウングレード攻撃を示すものではありません。
  • bromure.io はブローカーであり、中間者ではありません。 アカウント経路では、bromure.io はあなたの 2 台のデバイスを 引き合わせる だけで、直接のピアツーピア経路を構築できないときには不透明なバイトを TURN リレー(TLS 上)経由で中継します。SSH セッションを終端することは決してありません。暗号化されたトンネルはあなたの 2 台の Mac の間でエンドツーエンドに実行されます。SSH 鍵は あなた自身のアカウント のデバイス間でのみ共有され(他のユーザーのものとは決して共有されません)、各サーバーは所有者のデバイス鍵を自ら取得し、登録/サインアウトがデバイスの信頼を付与・取り消しする方法です。サインアウトされた、または 90 日間アイドルのデバイスは認可されなくなります。
  • 誰がログインできるか。 アプリを起動したちょうどその macOS ユーザーのみです。パスワード認証は OpenDirectory に対して検証され(リモートログインなし、PAM の変更なし、管理者権限なし)、公開鍵認証はあなたが登録したキーのみを受け付けます。パスワード試行はソース IP ごとにレート制限されます。キーは制限されません。
  • セッションで何ができるか。 人間のログインはリモートメニューにしか到達できず — シェルには決して到達できません — ワークスペースの作成、設定、操作はできますが、任意のホストコマンドを実行することはできません。リッチクライアントの 4 つのマシン動詞も同様に狭いです。制御ソケットブリッジ、vmnet サブネット上のゲストへのフォワード、ブラウザ MCP リレーです。ホスト自身、ゲートウェイ、インターネットへのフォワードは拒否されます。
  • シークレットはホストから出ません。 リモート設定の読み取りではシークレットが空になり(モデルプロバイダーの鍵は伏せ字)、保存はシークレットを保持します。API キー、トークン、サブスクリプションのサインイン、MCP の環境シークレットはリモートの Mac に留まります。
  • 初回使用時の信頼。 リッチクライアントは初回接触時にエンドポイントごとにリモートのホストキーをピン留めし、その後の変更に対して大声で警告します。
  • ゲストが偽造できない同意。 実行中のエージェントが引き起こす MITM 同意プロンプトは、ターミナルポンプの ホスト 側でレンダリングされます。そこでは侵害されたゲストはそれらを見ることも偽造することもできません。タイムアウトやデタッチはすべて拒否に解決します。リモートの同意処理 を参照してください。

トラブルシューティング

症状考えられる原因対処
有効化がエラーを返すベースイメージが欠けているか、まだインストール中ベースイメージが存在するまでサーバーは起動できません。インストールを完了してから再度有効にしてください。
ssh は接続するが ssh -t で再接続するよう言われるTTY が要求されなかったリモートメニューにはターミナルが必要です。-t を追加してください(または ssh -t -p 2222 <user>@<mac> を使う)。
OpenSSH が「ポスト量子鍵交換を使用していません」と出力するswift-nio-ssh に PQ 鍵交換がない想定内で無害です — 接続は依然として暗号化されています。
アドレスで の接続がパスワードを求め続けるこの Mac のキーがリモートに登録されていない1 回のパスワードログインで自動的に登録させるか、リモートで bromure-cli remote key add '<this Mac's key>' を実行してください(この Mac のキーを表示 でコピーできます)。
bromure.io の接続がまだパスワードを求める鍵レジストリがこのデバイスをそのサーバーでまだ認可していないここではパスワード不要は自動です — 両方の Mac で bromure.io にサインインしていること、サーバーの リモートアクセス がオンであること、両方が最新のビルドを実行していること(サーバーがログインを公開し、あなたの鍵を取得します)を確認してください。リモートアクセスを有効にした後、数秒待ってください。
マイサーバー · bromure.io が空サインインしていない、またはサーバーが広告していないサインインしてください(アプリ名メニュー → bromure.io にログイン…)。リモートで リモートアクセス を有効にして、ハートビートを送り表示されるようにします。グレーアウトした行はハートビートが止まったことを意味します。
「bromure.io 経由で接続を確立できませんでした…」2 台の Mac の間に直接または中継のネットワーク経路がない両方が bromure.io に到達できることを確認してください。リレーには turns:5349 への到達性が必要です。再試行してください — 次の試行で経路が再試行されます。
「bromure.io 経由で … に到達しましたが、その SSH の玄関口が応答しませんでした」リモートでリモートアクセスがオフにされたリモート Mac で リモートアクセス を再度有効にしてください。
「この Mac の bromure.io デバイスは取り消されました。再度サインインしてください。」このデバイスがログアウト/取り消された(あなた、Web コンソール、または 90 日間のアイドルによる)再登録してください:アプリ名メニュー → bromure.io にログイン…。
赤い 新しいキーを信頼して続行 シートピン留め後にリモートのホストキーが変わったアウトオブバンドで検証してください。キーが変わった理由がわかっている場合のみ続行してください(再インストール、新しい Mac)— そうでなければ中間者攻撃の可能性があります。
キーを編集した後にライブ接続が切れる認可済みキーの追加または削除はリスナーを再起動する想定内です。再接続してください。
ブラウザペインが空白のままSOCKS フォワーダーまたはサブネットの準備ができていないミラーの最初の状態更新を待ちます。マシンが実行中であること、この Mac にブラウザイメージがインストールされていることを確認します。
フォワードが拒否されるターゲットがリモートの vmnet サブネット上のゲストではないフォワードはワークスペース VM にしか到達できません。ホスト、ゲートウェイ、インターネットには決して到達できません。
トンネルトグルが 承認を待機中… で止まる特権ヘルパーがまだ承認されていないシステム設定 → 一般 → ログイン項目で Bromure Agentic Coding を承認してください(管理者が必要)。それがなくても SOCKS は動作します。
グリッドレイアウトの編集がリモートで反映されないリモートがヘッドレスグリッド編集にはリモートで GUI ウィンドウが開いている必要があります。それ以外のすべては引き続きミラーされます。

ファイル、ポート、環境変数

サーバー側の状態は ~/Library/Application Support/BromureAC/remote/ の下に存在します。hostkey_ed25519(0600)とその .pub、authorized_keys(0600)、そしてオプションの overlay-key オーバーライドです。リッチクライアントのアイデンティティと状態は ~/Library/Application Support/BromureAC/remote-client/ の下に存在します。id_ed25519(.pub)(コメント bromure-ac-fatclient)、known_hosts(TOFU ピン)、hosts.json(保存済みサーバー)、そして hosts/<host-UUID>/ の下のホストごとのミラー永続化です。サポートディレクトリ全体は CFFIXED_USER_HOME の下に再配置されます。

ポート/インターフェース役割
TCP 2222(設定可能、≥ 1024)組み込み SSH サーバー、デフォルトでバインド 0.0.0.0。
アウトバウンド TCP 443 + turns:5349bromure.io アカウント経路のみ。 あなたのアカウント(デバイスディレクトリ、ランデブー)への到達、および直接のピアツーピア経路を構築できないときの TURN リレー(TLS 上)。アカウント経路では両方が各デバイスから到達可能である必要があります。アドレス経路とは無関係です。
ゲスト vsock 5010すべての VM 内の常時稼働ループバックリレー — ポートフォワードと OAuth コールバック配信の経路。
ゲスト vsock 5830ワークスペースエージェントのブラウザ MCP ストリーム、リッチクライアントのブラウザペインにリレーされる。
エフェメラルポート、バインド 0.0.0.0ホストごとの SOCKS5 フォワーダー(ループバックと 192.168.127.x ブラウザサブネットにピアフィルタリング)。
192.168.127.0/24リッチクライアントの固定されたローカルブラウザ VM サブネット。
100.64.<n>.0/24フリートのサブネット衝突時に割り当てられる CGNAT エイリアスサブネット。

関連する UserDefaults キー(ドメイン io.bromure.agentic-coding)は、remoteAccess.enabled、remoteAccess.port、remoteAccess.bindAddress、remoteAccess.passwordAuth、remoteAccess.pubkeyAuth、fatclient.tunnel.<host-UUID>、cloudflareTunnel.consented です。診断用の環境変数には、BROMURE_OVERLAY_KEY(リモートメニューのキーの組み合わせ)、BROMURE_FATCLIENT_LOG(リッチクライアントの詳細ログ)、BROMURE_FATCLIENT_UTUN(システム全体のトンネルのオプトインを強制的に有効化 — 製品としての経路はツールバーのトグル)があります。隠しコマンド __forward、__forward-socks、__dial、__attach-window の仕組みを含む CLI の完全なリファレンスは、CLI、API、MCP にあります。