メインコンテンツへスキップ

ブリッジプロトコル(レガシー ノード トランスポート)

ブリッジプロトコルは レガシー のノード トランスポート(TCP JSONL)です。新しいノードクライアントでは、代わりに統合された Gateway WebSocket プロトコルを使用する必要があります。 新しいノードクライアント は、代わりに統合されたGateway WebSocketプロトコルを使用する必要があります。 新しいノードクライアント は、代わりに統合されたGateway WebSocketプロトコルを使用する必要があります。 オペレーターまたはノードクライアントを構築している場合は、 Gateway プロトコル を使用してください。 注記: 現在の OpenClaw ビルドには TCP ブリッジ リスナーは同梱されていません。本ドキュメントは履歴参照のために保持されています。 レガシーの bridge.* 設定キーは、もはや設定スキーマの一部ではありません。 従来の bridge.* 設定キーは設定スキーマの一部ではなくなりました。 従来の bridge.* 設定キーは設定スキーマの一部ではなくなりました。

両方が存在する理由

  • セキュリティ境界: ブリッジは、完全な ゲートウェイ API サーフェスではなく、小さな 許可リスト を公開します。
  • ペアリング + ノード ID: ノードの受け入れは ゲートウェイ によって管理され、ノードごとのトークンに紐づきます。
  • 検出 UX: ノードは LAN 上で Bonjour により ゲートウェイ を検出するか、tailnet 経由で直接接続できます。
  • ループバック WS: 完全な WS コントロールプレーンは、SSH 経由でトンネルしない限りローカルに留まります。

トランスポート

  • TCP、1 行につき 1 つの JSON オブジェクト(JSONL)。
  • オプションの TLS(bridge.tls.enabled が true の場合)。
  • レガシーのデフォルト リスナー ポートは 18790 でした(現在のビルドでは TCP ブリッジは起動しません)。
TLS が有効な場合、検出 TXT レコードには bridgeTls=1bridgeTlsSha256 が含まれ、ノードは証明書をピン留めできます。 Bonjour/mDNS の TXT レコードは 認証されていない点に注意してください。クライアントは、明示的なユーザーの意思または他のアウトオブバンド検証なしに、広告されたフィンガープリントを 信頼できるピンとして扱ってはなりません。

ハンドシェイク + ペアリング

  1. クライアントは、ノード メタデータ + トークン(既にペアリング済みの場合)を含む hello を送信します。
  2. 未ペアリングの場合、ゲートウェイ は errorNOT_PAIRED/UNAUTHORIZED)で応答します。
  3. クライアントは pair-request を送信します。
  4. ゲートウェイ は承認を待機し、その後 pair-okhello-ok を送信します。
hello-okserverName を返し、canvasHostUrl を含む場合があります。

フレーム

クライアント → ゲートウェイ:
  • req / res: スコープ付き ゲートウェイ RPC(chat、sessions、config、health、voicewake、skills.bins)
  • event: ノード シグナル(音声書き起こし、エージェント リクエスト、チャット購読、exec ライフサイクル)
ゲートウェイ → クライアント:
  • invoke / invoke-res: ノード コマンド(canvas.*camera.*screen.recordlocation.getsms.send
  • event: 購読された セッション 向けの チャット 更新
  • ping / pong: キープアライブ
レガシーの 許可リスト 強制は src/gateway/server-bridge.ts に存在していました(削除済み)。

Exec ライフサイクル イベント

ノードは、system.run のアクティビティを表面化するために exec.finished または exec.denied イベントを送出できます。 これらは ゲートウェイ 内の system イベントにマッピングされます。(レガシー ノードでは、引き続き exec.started を送出する場合があります。) これらはゲートウェイ内のシステムイベントにマッピングされます。 (レガシーノードはまだ exec.started を出力することができます。 これらはゲートウェイ内のシステムイベントにマッピングされます。 (レガシーノードはまだ exec.started を出力することができます。 ペイロード フィールド(特記がない限りすべて任意):
  • sessionKey(必須): system イベントを受信する エージェント セッション。
  • runId: グルーピングのための一意な exec ID。
  • command: 生または整形済みの コマンド 文字列。
  • exitCodetimedOutsuccessoutput: 完了の詳細(finished のみ)。
  • reason: 拒否理由(denied のみ)。

Tailnet の使用

  • ブリッジを tailnet IP にバインドします: bridge.bind: "tailnet"~/.openclaw/openclaw.json に設定します。
  • クライアントは MagicDNS 名または tailnet IP 経由で接続します。
  • Bonjour は ネットワークを跨ぎません。必要に応じて、手動の ホスト/ポート または 広域 DNS‑SD を使用してください。

Versioning

Bridge is currently implicit v1 (no min/max negotiation). ブリッジは現在 暗黙の v1(最小/最大のネゴシエーションなし)です。後方互換性が期待されます。破壊的変更の前には、ブリッジ プロトコルの バージョン フィールドを追加してください。