OpenClawSkills
GitHub
Gateway / Protocol • 5分で読める

ブリッジプロトコル

旧ノードのトランスポート(TCP JSONL):ペアリング、スコープ RPC、イベント

Bridge プロトコルはレガシーなノード転送(TCP JSONL)です。新しいノードクライアントは統一された Gateway WebSocket プロトコルを使用してください。

operator やノードクライアントを作る場合は、Gateway プロトコルを利用してください。

Gateway プロトコル を参照してください。

注意: 現在の OpenClaw は TCP ブリッジリスナーを提供しません。本ページは歴史的参照として残されています。

旧 bridge.* の設定キーは、もはや設定スキーマの一部ではありません。

Tutorial.step

なぜ両方あったのか

  • セキュリティ境界:ブリッジは Gateway API 全体ではなく、小さな allowlist のみを公開していました。
  • ペアリング + ノードID:ノードの受け入れは Gateway 側で管理され、ノードごとのトークンに紐付きました。
  • 発見 UX:ノードは LAN では Bonjour で Gateway を発見でき、また tailnet 経由で直接接続もできました。
  • Loopback WS:完全な WS 制御プレーンは、SSH トンネルしない限りローカルに留まりました。
Tutorial.step

トランスポート

  • TCP(1行につき1つの JSON オブジェクト:JSONL)。
  • TLS は任意(bridge.tls.enabled が true の場合)。
  • 旧デフォルトの待受ポートは 18790(現在は TCP ブリッジを起動しません)。

TLS 有効時、発見用 TXT には bridgeTls=1 と bridgeTlsSha256 が含まれ、ノード側で証明書を pin できました。

Tutorial.step

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

  1. クライアントは hello を送り、ノードメタデータ + トークン(ペア済みの場合)を含めます。
  2. 未ペアの場合、Gateway は error(NOT_PAIRED/UNAUTHORIZED)を返します。
  3. クライアントは pair-request を送ります。
  4. Gateway は承認を待ち、pair-ok と hello-ok を送ります。

hello-ok は serverName を返し、canvasHostUrl を含むこともありました。

Tutorial.step

フレーム

クライアント → Gateway:

  • req / res: scoped gateway RPC (chat, sessions, config, health, voicewake, skills.bins)
  • event:ノードシグナル(音声録音、エージェント要求、チャット購読、exec ライフサイクル)。

Gateway → クライアント:

  • invoke / invoke-res:ノードコマンド(canvas.*、camera.*、screen.record、location.get、sms.send)。
  • event:購読セッションのチャット更新。
  • ping / pong:keepalive。

旧 allowlist の強制は src/gateway/server-bridge.ts(削除済み)にありました。

Tutorial.step

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

ノードは exec.started のイベント面に exec.started または exec.started を送出できました。

Payload fields (all optional unless noted):

payload フィールド(注記がない限り任意):

  • sessionKey(必須):システムイベントを受け取るエージェントセッション。
  • runId:グルーピング用の一意な exec ID。
  • command:生の/整形済みコマンド文字列。
  • exitCode、timedOut、success、output:完了時の詳細(finished のみ)。
  • reason:拒否理由(denied のみ)。
Tutorial.step

Tailnet usage

  • ブリッジを tailnet IP にバインド:bridge.bind: "tailnet" で ~/.openclaw/openclaw.json。
  • クライアントは MagicDNS 名または tailnet IP で接続します。
  • Bonjour はネットワークを越えません。必要なら手動 host/port または wide-area DNS‑SD を使ってください。
Tutorial.step

バージョニング

Bridge は実質暗黙の v1(min/max 交渉なし)でした。後方互換が前提で、破壊的変更の前にプロトコルバージョンフィールドを追加します。