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

Gateway 管理のペアリング

Gateway が管理するノードペアリング(案 B):iOS とその他のリモートノード向け。

"Gateway 管理のペアリング"モードでは、Gateway が「どのノードが参加を許可されているか」の唯一の真実のソースです。UI(macOS アプリ、将来のクライアント)は単なるフロントエンドです:保留中のリクエストを表示し、承認または拒否を可能にします。

''重要:'' WebSocket ノードは ''connect'' ハンドシェイク中に ''デバイスペアリング''(ロール ''connect'')を使用します。''node.pair.*'' は別の独立したペアリングストアであり、WS ハンドシェイクのアクセス制御には''影響しません''。''node.pair.*'' を明示的に呼び出すクライアントのみがこのフローを通ります。

Tutorial.step

Concepts

- 保留中のリクエスト(pending request):参加をリクエストし、承認を待っているノード。

- ペアリングされたノード(paired node):承認され、auth トークンを受け取ったノード。

- トランスポート(transport):Gateway WS エンドポイントはリクエスト/イベント転送を処理しますが、メンバーシップは Gateway のペアリングストアによって決定されます。(古い TCP ブリッジサポートは非推奨/削除されました。)

Tutorial.step

ペアリングフローの仕組み

1. ノードが Gateway WS に接続し、ペアリングリクエストを開始します。

2. Gateway が ''保留中のリクエスト''を保存し、イベント ''node.pair.requested'' を発行します。

3. CLI または UI でリクエストを承認/拒否します。

4. 承認後、Gateway が 新しいトークンを生成します(再ペアリングでトークンがローテーションされます)。

5. ノードがそのトークンを使用して再接続し、その後「ペアリング済み」とみなされます。

保留中のリクエストは 5 分後に自動的に期限切れになります。

Tutorial.step

CLI ワークフロー(ヘッドレス環境に対応)

Bash
openclaw nodes pending
openclaw nodes approve '<requestId>'
openclaw nodes reject '<requestId>'
openclaw nodes status
openclaw nodes rename --node '<id|name|ip>' --name "Living Room iPad"

''nodes status'' は、ペアリング済み/接続済みのノードとその能力宣言を表示します。

Tutorial.step

API サーフェス(gateway protocol)

イベント:

- ''node.pair.requested'' — 新しい保留中のリクエストが作成されたときに発行されます。

- ''node.pair.resolved'' — リクエストが承認/拒否/期限切れになったときに発行されます。

メソッド:

- ''node.pair.request'' — 保留中のリクエストを作成または再利用します。

- ''node.pair.list'' — 保留中 + ペアリング済みノードを一覧表示します。

- ''node.pair.approve'' — 保留中のリクエストを承認します(トークンを発行)。

- ''node.pair.reject'' — 保留中のリクエストを拒否します。

- ''node.pair.verify'' — ''{ nodeId, token }'' を検証します。

Notes:

- ''node.pair.request'' はノードごとにべき等です:繰り返し呼び出すと同じ保留中のリクエストが返されます。

- 承認時は''常に''新しいトークンが生成されます。''node.pair.request'' はトークンを返しません。

- リクエストは「自動承認を試行できる」ヒントとして ''silent: true'' を含めることができます。

Tutorial.step

自動承認(macOS アプリ)

macOS アプリは条件が満たされたときに サイレント承認を試行できます:

- リクエストに ''silent'' がマークされており、

- アプリが同じユーザーとして SSH でゲートウェイホストに接続して検証できる場合。

サイレント承認が失敗した場合、通常の「承認/拒否」プロンプトにフォールバックします。

Tutorial.step

ストレージ(ローカル、プライベート)

ペアリング状態は Gateway ステートディレクトリ(デフォルト ''~/.openclaw'')に保存されます:

- ''~/.openclaw/nodes/paired.json''

- ''~/.openclaw/nodes/pending.json''

''OPENCLAW_STATE_DIR'' を上書きした場合、''nodes/'' はそれに従って移動します。

セキュリティメモ:

- トークンは機密情報です。''paired.json'' をシークレットファイルとして扱ってください。

- トークンのローテーションには再承認が必要です(またはノードレコードの削除)。

Tutorial.step

トランスポートの動作

- トランスポートはステートレスです。メンバーシップを保存しません。

- Gateway がオフラインまたはペアリングが無効な場合、ノードはペアリングを完了できません。

- Gateway がリモートモードの場合、ペアリングは引き続きリモート Gateway のストアを対象とします。