admin-http-rpc Plugin は、Gateway WebSocket 接続を開いたままにできない信頼されたホスト自動化向けに、許可リストに登録された Gateway コントロールプレーンメソッドを HTTP 経由で公開します。
これは OpenClaw に同梱されていますが、デフォルトでは無効です。無効な場合、ルートは登録されません。有効にすると、Gateway と同じリスナー(http://<gateway-host>:<port>/api/v1/admin/rpc)に POST /api/v1/admin/rpc が追加されます。
プライベートなホストツール、tailnet 自動化、または信頼された内部 ingress にのみ有効化してください。このルートを公開インターネットに直接公開しないでください。
有効化する前に
管理 HTTP RPC は、完全なオペレーターコントロールプレーンのサーフェスです。Gateway HTTP 認証を通過した呼び出し元は、以下の許可リストに登録されたメソッドを呼び出せます。次のすべての条件を満たす場合にのみ有効化してください。- 呼び出し元が Gateway の操作を任せられる信頼された主体である。
- 呼び出し元が WebSocket RPC クライアントを使用できない。
- ルートには、loopback、tailnet、または認証済みのプライベート ingress からのみ到達できる。
- 許可されたメソッドを確認済みであり、実行予定の自動化に適合している。
有効化
バンドルされた Plugin を有効化します。- CLI
- 設定
ルートの確認
最小限で安全なリクエストとしてhealth を使用します。
ok: true が含まれます。
404 が返されます。
認証
Plugin のルートは Gateway HTTP 認証を使用します。 一般的な認証経路:- 共有シークレット認証(
gateway.auth.mode="token"または"password"):Authorization: Bearer <token-or-password> - 信頼された ID 付き HTTP 認証(
gateway.auth.mode="trusted-proxy"):設定済みの ID 対応プロキシを経由させ、必要な ID ヘッダーを挿入させます - プライベート ingress のオープン認証(
gateway.auth.mode="none"):認証ヘッダーは不要です
セキュリティモデル
この Plugin は、完全な Gateway オペレーターサーフェスとして扱ってください。- Plugin を有効化すると、
/api/v1/admin/rpcで許可リストに登録された管理 RPC メソッドへのアクセスが意図的に提供されます。 - Plugin は予約済みの
contracts.gatewayMethodDispatch: ["authenticated-request"]マニフェスト契約を宣言します。これにより、Gateway 認証済みの HTTP ルートからコントロールプレーンメソッドをプロセス内でディスパッチできます。これはサンドボックスではありません。この契約は予約済み SDK ヘルパーの誤使用を防ぎますが、信頼された Plugin は引き続き Gateway プロセス内で実行されます。 - 共有シークレットの Bearer 認証(
token/passwordモード)は、Gateway オペレーターシークレットを保持していることを証明します。この経路では、より限定的なx-openclaw-scopesヘッダーは無視され、通常の完全なオペレーターのデフォルト設定が復元されます。 - 信頼された ID 付き HTTP 認証(
trusted-proxyモード)では、x-openclaw-scopesが存在する場合、それが適用されます。 gateway.auth.mode="none"は、Plugin が有効な場合にこのルートが未認証になることを意味します。完全に信頼できるプライベート ingress の背後でのみ使用してください。- リクエストは、Plugin ルートの認証を通過した後、WebSocket RPC と同じ Gateway メソッドハンドラーおよびスコープチェックを通じてディスパッチされます。
- このルートは、準備済みの一時停止リース中も到達可能な状態を維持します。制限付きのリクエスト検証とローカルの
commands.list検出レスポンスは引き続き利用できます。Gateway にディスパッチされるメソッドのうち、受け入れが閉じられている間に実行できるのはgateway.suspend.prepare、gateway.suspend.status、gateway.suspend.resumeのみです。その他の許可リスト登録済みメソッドは、通常の再試行可能な GatewayUNAVAILABLEレスポンスを返します。 - このルートは loopback、tailnet、または信頼されたプライベート ingress 上に置いてください。公開インターネットに直接公開しないでください。呼び出し元が信頼境界をまたぐ場合は、別々の Gateway を使用してください。
リクエスト
id(文字列、省略可能):レスポンスにコピーされます。省略した場合は UUID が生成されます。method(文字列、必須):許可された Gateway メソッド名。params(任意、省略可能):メソッド固有のパラメーター。
レスポンス
成功レスポンスは Gateway RPC 形式を使用します。許可されたメソッド
- 検出:
commands.listこの Plugin で許可されている HTTP RPC メソッド名を返します。 - Gateway:
health、status、logs.tail、usage.status、usage.cost、gateway.restart.request、gateway.suspend.prepare、gateway.suspend.status、gateway.suspend.resume - 設定:
config.get、config.schema、config.schema.lookup、config.set、config.patch、config.apply - チャンネル:
channels.status、channels.start、channels.stop、channels.logout - Web:
web.login.start、web.login.wait - モデル:
models.list、models.authStatus - エージェント:
agents.list、agents.create、agents.update、agents.delete - 承認:
exec.approvals.get、exec.approvals.set、exec.approvals.node.get、exec.approvals.node.set - Cron:
cron.status、cron.list、cron.get、cron.runs、cron.add、cron.update、cron.remove、cron.run - デバイス:
device.pair.list、device.pair.approve、device.pair.reject、device.pair.remove - Node:
node.list、node.describe、node.pair.list、node.pair.approve、node.pair.reject、node.pair.remove、node.rename - タスク:
tasks.list、tasks.get、tasks.cancel - 診断:
doctor.memory.status、update.status
WebSocket との比較
通常の Gateway WebSocket RPC 経路は、OpenClaw クライアント向けの推奨コントロールプレーン API です。管理 HTTP RPC は、リクエスト/レスポンス型の HTTP サーフェスを必要とするホストツールにのみ使用してください。 信頼されたデバイス ID を持たない共有トークンの WebSocket クライアントは、接続時に管理スコープを自己申告できません。管理 HTTP RPC は、既存の信頼された HTTP オペレーターモデルに意図的に従います。Plugin が有効な場合、共有シークレットの Bearer 認証は、この管理サーフェスに対する完全なオペレーターアクセスとして扱われます。トラブルシューティング
404 Not Found
: Plugin が無効になっている、Plugin を有効化してから Gateway が再起動されていない、またはリクエストが別の Gateway プロセスに送信されています。
401 Unauthorized
: リクエストが Gateway HTTP 認証を満たしていません。Bearer トークンまたは信頼されたプロキシの ID ヘッダーを確認してください。
405 Method Not Allowed
: リクエストで POST 以外が使用されました。
413 Payload Too Large
: リクエストボディが 1 MB の制限を超えました。
400 INVALID_REQUEST
: リクエストボディが有効な JSON ではない、method フィールドがない、メソッドが Plugin の許可リストに含まれていない、または一時停止の再開 ID がアクティブなリースと一致していません。
503 UNAVAILABLE
: Gateway メソッドが起動中、レート制限中、一時停止中、または競合する一時停止/再開操作を待機中です。error.details が存在する場合は確認し、再試行する前に error.retryAfterMs に従ってください。