admin-http-rpc Plugin は、Gateway WebSocket 接続を開いたままにできない信頼済みホスト自動化向けに、許可リスト化された Gateway コントロールプレーンメソッドのセットを HTTP 経由で公開します。
これは OpenClaw に同梱されていますが、デフォルトでは無効です。無効な場合、ルートは登録されません。有効にすると、Gateway と同じリスナーに POST /api/v1/admin/rpc が追加されます (http://<gateway-host>:<port>/api/v1/admin/rpc)。
プライベートホストツール、tailnet 自動化、または信頼済み内部 ingress に限って有効にしてください。このルートを公開インターネットへ直接公開しないでください。
有効にする前に
Admin HTTP RPC は完全なオペレーター向けコントロールプレーン surface です。Gateway HTTP 認証を通過した呼び出し元は、以下の許可リスト化されたメソッドを呼び出せます。次のすべてが真の場合にのみ有効にしてください。- 呼び出し元が Gateway の運用を信頼されている。
- 呼び出し元が WebSocket RPC クライアントを使用できない。
- ルートが loopback、tailnet、またはプライベートな認証済み ingress からのみ到達可能である。
- 許可されたメソッドを確認済みであり、実行予定の自動化に一致している。
有効化
バンドルされた Plugin を有効にします。- CLI
- Config
ルートを検証する
最小限で安全なリクエストとして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 オペレーター surface として扱ってください。- Plugin を有効にすると、
/api/v1/admin/rpcで許可リスト化された admin RPC メソッドへのアクセスを意図的に提供します。 - Plugin は予約済みの
contracts.gatewayMethodDispatch: ["authenticated-request"]manifest contract を宣言します。これにより、Gateway 認証済みの HTTP ルートがプロセス内でコントロールプレーンメソッドをディスパッチできます。これはサンドボックスではありません。この contract は予約済み 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 メソッドハンドラーおよび scope チェックを経由してディスパッチされます。
- このルートは loopback、tailnet、またはプライベートな信頼済み ingress 上に保持してください。公開インターネットへ直接公開しないでください。呼び出し元が信頼境界をまたぐ場合は、別々の Gateway を使用してください。
リクエスト
id(string, optional): レスポンスにコピーされます。省略時は UUID が生成されます。method(string, required): 許可された Gateway メソッド名。params(any, optional): メソッド固有の params。
レスポンス
成功レスポンスは Gateway RPC 形式を使用します。| エラーコード | HTTP ステータス |
|---|---|
INVALID_REQUEST | 400 |
APPROVAL_NOT_FOUND | 404 |
NOT_LINKED, NOT_PAIRED | 409 |
UNAVAILABLE | 503 |
AGENT_TIMEOUT | 504 |
| その他のコード | 500 |
許可されたメソッド
- 検出:
commands.listこの Plugin で許可されている HTTP RPC メソッド名を返します。 - Gateway:
health,status,logs.tail,usage.status,usage.cost,gateway.restart.request - 設定:
config.get,config.schema,config.schema.lookup,config.set,config.patch,config.apply - チャンネル:
channels.status,channels.start,channels.stop,channels.logout - ウェブ:
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.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 のままです。Admin HTTP RPC は、リクエスト/レスポンス型の HTTP surface が必要なホストツールにのみ使用してください。 信頼済みデバイス ID を持たない共有トークン WebSocket クライアントは、接続時に admin scope を自己宣言できません。Admin HTTP RPC は、既存の信頼済み HTTP オペレーターモデルに意図的に従います。Plugin が有効な場合、共有シークレット bearer 認証は、この admin surface に対する完全なオペレーターアクセスとして扱われます。トラブルシューティング
404 Not Found
: Plugin が無効である、Plugin を有効にしてから Gateway を再起動していない、またはリクエストが別の Gateway プロセスに送信されています。
401 Unauthorized
: リクエストが Gateway HTTP 認証を満たしていません。bearer トークンまたは trusted-proxy ID ヘッダーを確認してください。
405 Method Not Allowed
: リクエストが POST 以外を使用しました。
413 Payload Too Large
: リクエスト本文が 1 MB 制限を超えました。
400 INVALID_REQUEST
: リクエスト本文が有効な JSON ではない、method フィールドが欠落している、またはメソッドが Plugin の許可リストに含まれていません。
503 UNAVAILABLE
: Gateway メソッドハンドラーが利用できません。Gateway ログを確認し、Gateway の起動完了後に再試行してください。