Gateway

Gateway 運用手順書

このページは、Gateway サービスの初日起動と2日目以降の運用に使用します。

5分でのローカル起動

  • Start the Gateway

    openclaw gateway --port 18789
    # debug/trace mirrored to stdio
    openclaw gateway --port 18789 --verbose
    # force-kill listener on selected port, then start
    openclaw gateway --force
    
  • Verify service health

    openclaw gateway status
    openclaw status
    openclaw logs --follow
    

    正常なベースライン: 期待どおりの Runtime: runningConnectivity probe: okCapability: ...。単なる到達性ではなく read スコープの RPC 証明が必要な場合は、openclaw gateway status --require-rpc を使用します。

  • Validate channel readiness

    openclaw channels status --probe
    

    到達可能な gateway がある場合、これはアカウントごとのチャンネルプローブと任意の監査をライブで実行します。 gateway に到達できない場合、CLI はライブプローブ出力ではなく、設定のみのチャンネル概要にフォールバックします。

  • ランタイムモデル

    • ルーティング、コントロールプレーン、チャンネル接続のための常時稼働プロセス1つ。
    • 単一の多重化ポート:
      • WebSocket コントロール/RPC
      • HTTP API、OpenAI 互換(/v1/models/v1/embeddings/v1/chat/completions/v1/responses/tools/invoke
      • コントロール UI とフック
    • デフォルトのバインドモード: loopback
    • Auth はデフォルトで必須です。共有シークレットのセットアップでは gateway.auth.token / gateway.auth.password(または OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD)を使用し、非 loopback の リバースプロキシセットアップでは gateway.auth.mode: "trusted-proxy" を使用できます。

    OpenAI 互換エンドポイント

    OpenClaw の最も効果の高い互換サーフェスは現在、次のとおりです。

    • GET /v1/models
    • GET /v1/models/{id}
    • POST /v1/embeddings
    • POST /v1/chat/completions
    • POST /v1/responses

    このセットが重要な理由:

    • ほとんどの Open WebUI、LobeChat、LibreChat 統合は、最初に /v1/models をプローブします。
    • 多くの RAG とメモリパイプラインは /v1/embeddings を想定しています。
    • エージェントネイティブのクライアントは、ますます /v1/responses を好むようになっています。

    計画メモ:

    • /v1/models はエージェントファーストです。openclawopenclaw/defaultopenclaw/<agentId> を返します。
    • openclaw/default は、常に設定済みのデフォルトエージェントにマップされる安定したエイリアスです。
    • バックエンド provider/model の上書きが必要な場合は x-openclaw-model を使用します。それ以外の場合、選択されたエージェントの通常のモデルと埋め込み設定が制御を維持します。

    これらはすべてメインの Gateway ポートで実行され、Gateway HTTP API の残りと同じ信頼済みオペレーター auth 境界を使用します。

    ポートとバインドの優先順位

    設定 解決順序
    Gateway ポート --portOPENCLAW_GATEWAY_PORTgateway.port18789
    バインドモード CLI/override → gateway.bindloopback

    インストール済みの gateway サービスは、解決済みの --port を supervisor メタデータに記録します。gateway.port を変更した後は、launchd/systemd/schtasks が新しいポートでプロセスを開始するように、openclaw doctor --fix または openclaw gateway install --force を実行します。

    Gateway の起動は、非 loopback バインド向けにローカルのコントロール UI オリジンをシードするとき、同じ有効ポートとバインドを使用します。たとえば、--bind lan --port 3000 は、ランタイム検証が実行される前に http://localhost:3000http://127.0.0.1:3000 をシードします。HTTPS プロキシ URL など、リモートブラウザのオリジンは gateway.controlUi.allowedOrigins に明示的に追加します。

    ホットリロードモード

    gateway.reload.mode 動作
    off 設定を再読み込みしない
    hot ホットセーフな変更のみ適用
    restart 再起動が必要な変更で再起動
    hybrid(デフォルト) 安全な場合はホット適用し、必要な場合は再起動

    オペレーターコマンドセット

    openclaw gateway status
    openclaw gateway status --deep   # adds a system-level service scan
    openclaw gateway status --json
    openclaw gateway install
    openclaw gateway restart
    openclaw gateway stop
    openclaw secrets reload
    openclaw logs --follow
    openclaw doctor
    

    gateway status --deep は追加のサービス検出(LaunchDaemons/systemd system units/schtasks)用であり、より深い RPC ヘルスプローブではありません。

    複数の gateway(同一ホスト)

    ほとんどのインストールでは、1台のマシンにつき1つの gateway を実行するべきです。単一の gateway で複数のエージェントとチャンネルをホストできます。

    意図的に分離したい場合、またはレスキューボットが必要な場合にのみ、複数の gateway が必要です。

    有用なチェック:

    openclaw gateway status --deep
    openclaw gateway probe
    

    想定される内容:

    • gateway status --deep は、古い launchd/systemd/schtasks インストールがまだ残っている場合に Other gateway-like services detected (best effort) を報告し、クリーンアップのヒントを出力することがあります。
    • 複数のターゲットが応答する場合、gateway probemultiple reachable gateways について警告することがあります。
    • それが意図的な場合は、gateway ごとにポート、設定/状態、ワークスペースルートを分離します。

    インスタンスごとのチェックリスト:

    • 一意の gateway.port
    • 一意の OPENCLAW_CONFIG_PATH
    • 一意の OPENCLAW_STATE_DIR
    • 一意の agents.defaults.workspace

    例:

    OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001
    OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002
    

    詳細なセットアップ: /gateway/multiple-gateways

    リモートアクセス

    推奨: Tailscale/VPN。 フォールバック: SSH トンネル。

    ssh -N -L 18789:127.0.0.1:18789 user@host
    

    その後、クライアントをローカルで ws://127.0.0.1:18789 に接続します。

    参照: Remote GatewayAuthenticationTailscale

    監視とサービスライフサイクル

    本番に近い信頼性には、監視付き実行を使用します。

    macOS (launchd)

    openclaw gateway install
    openclaw gateway status
    openclaw gateway restart
    openclaw gateway stop
    

    再起動には openclaw gateway restart を使用します。openclaw gateway stopopenclaw gateway start を連結しないでください。macOS では、gateway stop は停止前に意図的に LaunchAgent を無効化します。

    LaunchAgent ラベルは ai.openclaw.gateway(デフォルト)または ai.openclaw.<profile>(名前付きプロファイル)です。openclaw doctor はサービス設定のドリフトを監査し、修復します。

    Linux (systemd user)

    openclaw gateway install
    systemctl --user enable --now openclaw-gateway[-<profile>].service
    openclaw gateway status
    

    ログアウト後も永続化するには、lingering を有効にします。

    sudo loginctl enable-linger <user>
    

    カスタムインストールパスが必要な場合の手動ユーザーユニット例:

    [Unit]
    Description=OpenClaw Gateway
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStart=/usr/local/bin/openclaw gateway --port 18789
    Restart=always
    RestartSec=5
    TimeoutStopSec=30
    TimeoutStartSec=30
    SuccessExitStatus=0 143
    KillMode=control-group
    
    [Install]
    WantedBy=default.target
    

    Windows (native)

    openclaw gateway install
    openclaw gateway status --json
    openclaw gateway restart
    openclaw gateway stop
    

    ネイティブ Windows の管理付き起動では、OpenClaw Gateway という名前の Scheduled Task(名前付きプロファイルの場合は OpenClaw Gateway (<profile>))を使用します。Scheduled Task の作成が拒否された場合、OpenClaw は状態ディレクトリ内の gateway.cmd を指すユーザーごとの Startup フォルダーランチャーにフォールバックします。

    Linux (system service)

    マルチユーザー/常時稼働ホストには system unit を使用します。

    sudo systemctl daemon-reload
    sudo systemctl enable --now openclaw-gateway[-<profile>].service
    

    ユーザーユニットと同じサービス本文を使用しますが、/etc/systemd/system/openclaw-gateway[-<profile>].service の下にインストールし、openclaw バイナリが別の場所にある場合は ExecStart= を調整します。

    同じプロファイル/ポートについて、openclaw doctor --fix にユーザーレベルの gateway サービスもインストールさせないでください。Doctor は system-level の OpenClaw gateway サービスを検出すると、その自動インストールを拒否します。system unit がライフサイクルを所有している場合は、OPENCLAW_SERVICE_REPAIR_POLICY=external を使用します。

    開発プロファイルのクイックパス

    openclaw --dev setup
    openclaw --dev gateway --allow-unconfigured
    openclaw --dev status
    

    デフォルトには、分離された状態/設定とベース gateway ポート 19001 が含まれます。

    プロトコルクイックリファレンス(オペレーター視点)

    • 最初のクライアントフレームは connect である必要があります。
    • Gateway は hello-ok スナップショット(presencehealthstateVersionuptimeMs、limits/policy)を返します。
    • hello-ok.features.methods / events は保守的な検出リストであり、呼び出し可能なすべてのヘルパールートを生成したダンプではありません。
    • リクエスト: req(method, params)res(ok/payload|error)
    • 一般的なイベントには、connect.challengeagentchatsession.messagesession.toolsessions.changedpresencetickhealthheartbeat、pairing/approval ライフサイクルイベント、shutdown が含まれます。

    エージェント実行は2段階です。

    1. 即時の accepted ack(status:"accepted"
    2. 最終完了レスポンス(status:"ok"|"error")。その間に agent イベントがストリーミングされます。

    完全なプロトコルドキュメントを参照: Gateway Protocol

    運用チェック

    Liveness

    • WS を開き、connect を送信します。
    • スナップショットを含む hello-ok レスポンスを期待します。

    Readiness

    openclaw gateway status
    openclaw channels status --probe
    openclaw health
    

    ギャップリカバリ

    イベントは再生されません。シーケンスギャップがある場合は、続行する前に状態(healthsystem-presence)を更新します。

    一般的な失敗シグネチャ

    シグネチャ 考えられる問題
    refusing to bind gateway ... without auth 有効な gateway auth パスなしの非 loopback バインド
    another gateway instance is already listening / EADDRINUSE ポート競合
    Gateway start blocked: set gateway.mode=local 設定がリモートモードに設定されている、または破損した設定から local-mode スタンプが欠落している
    unauthorized during connect クライアントと gateway の間の auth 不一致

    完全な診断手順については、Gateway Troubleshooting を使用してください。

    安全性保証

    • Gateway プロトコルクライアントは、Gateway が利用できない場合に即座に失敗します(暗黙の直接チャネルフォールバックはありません)。
    • 無効な、または connect ではない最初のフレームは拒否され、クローズされます。
    • 正常なシャットダウンでは、ソケットをクローズする前に shutdown イベントが発行されます。

    関連:

    関連