Gateway CLI
Das Gateway ist der WebSocket-Server von OpenClaw (Kanäle, Knoten, Sitzungen, Hooks). Unterbefehle auf dieser Seite befinden sich unteropenclaw gateway ….
Verwandte Dokumentation:
Das Gateway ausführen
Einen lokalen Gateway-Prozess ausführen:- Standardmäßig verweigert das Gateway den Start, sofern
gateway.mode=localnicht in~/.openclaw/openclaw.jsongesetzt ist. Verwenden Sie--allow-unconfiguredfür Ad-hoc-/Entwicklungsläufe. openclaw onboard --mode localundopenclaw setupsollengateway.mode=localschreiben. Wenn die Datei existiert, abergateway.modefehlt, behandeln Sie das als beschädigte oder überschriebenen Konfiguration und reparieren Sie sie, statt den lokalen Modus implizit anzunehmen.- Wenn die Datei existiert und
gateway.modefehlt, behandelt das Gateway dies als verdächtige Konfigurationsbeschädigung und verweigert es, für Sie „lokal zu erraten“. - Bindung über loopback hinaus ohne Auth wird blockiert (Sicherheitsleitplanke).
SIGUSR1löst einen In-Process-Neustart aus, wenn dies autorisiert ist (commands.restartist standardmäßig aktiviert; setzen Siecommands.restart: false, um einen manuellen Neustart zu blockieren, während Gateway-Tool-/Konfigurationsanwenden/-aktualisieren weiterhin erlaubt bleiben).SIGINT-/SIGTERM-Handler stoppen den Gateway-Prozess, stellen aber keinen benutzerdefinierten Terminalstatus wieder her. Wenn Sie die CLI mit einer TUI oder Raw-Mode-Eingabe umhüllen, stellen Sie das Terminal vor dem Beenden wieder her.
Optionen
--port <port>: WebSocket-Port (Standard kommt aus Konfiguration/Env; normalerweise18789).--bind <loopback|lan|tailnet|auto|custom>: Listener-Bind-Modus.--auth <token|password>: Überschreibung für den Auth-Modus.--token <token>: Token-Überschreibung (setzt auchOPENCLAW_GATEWAY_TOKENfür den Prozess).--password <password>: Passwort-Überschreibung. Warnung: Inline-Passwörter können in lokalen Prozesslisten sichtbar werden.--password-file <path>: das Gateway-Passwort aus einer Datei lesen.--tailscale <off|serve|funnel>: das Gateway über Tailscale bereitstellen.--tailscale-reset-on-exit: die Tailscale-Serve-/Funnel-Konfiguration beim Herunterfahren zurücksetzen.--allow-unconfigured: Gateway-Start ohnegateway.mode=localin der Konfiguration erlauben. Dies umgeht die Startleitplanke nur für Ad-hoc-/Entwicklungs-Bootstrap und schreibt oder repariert die Konfigurationsdatei nicht.--dev: eine Entwicklungs-Konfiguration + Workspace erstellen, wenn sie fehlen (überspringtBOOTSTRAP.md).--reset: Entwicklungs-Konfiguration + Anmeldedaten + Sitzungen + Workspace zurücksetzen (erfordert--dev).--force: jeden vorhandenen Listener auf dem ausgewählten Port vor dem Start beenden.--verbose: ausführliche Logs.--cli-backend-logs: nur CLI-Backend-Logs in der Konsole anzeigen (und stdout/stderr aktivieren).--claude-cli-logs: veralteter Alias für--cli-backend-logs.--ws-log <auto|full|compact>: WebSocket-Logstil (Standardauto).--compact: Alias für--ws-log compact.--raw-stream: rohe Modell-Stream-Ereignisse in jsonl protokollieren.--raw-stream-path <path>: Pfad für rohe Stream-jsonl-Datei.
Ein laufendes Gateway abfragen
Alle Abfragebefehle verwenden WebSocket-RPC. Ausgabemodi:- Standard: menschenlesbar (farbig in TTY).
--json: maschinenlesbares JSON (ohne Styling/Spinner).--no-color(oderNO_COLOR=1): ANSI deaktivieren, aber menschenlesbares Layout beibehalten.
--url <url>: Gateway-WebSocket-URL.--token <token>: Gateway-Token.--password <password>: Gateway-Passwort.--timeout <ms>: Timeout/Budget (variiert je nach Befehl).--expect-final: auf eine „finale“ Antwort warten (Agent-Aufrufe).
--url setzen, greift die CLI nicht auf Anmeldedaten aus Konfiguration oder Umgebung zurück.
Übergeben Sie --token oder --password explizit. Fehlende explizite Anmeldedaten sind ein Fehler.
gateway health
gateway usage-cost
Zusammenfassungen der Nutzungskosten aus Sitzungsprotokollen abrufen.
--days <days>: Anzahl der einzubeziehenden Tage (Standard30).
gateway status
gateway status zeigt den Gateway-Dienst (launchd/systemd/schtasks) plus optionalen RPC-Probe.
--url <url>: ein explizites Probe-Ziel hinzufügen. Konfiguriertes Remote + localhost werden weiterhin geprüft.--token <token>: Token-Auth für den Probe.--password <password>: Passwort-Auth für den Probe.--timeout <ms>: Probe-Timeout (Standard10000).--no-probe: den RPC-Probe überspringen (nur Dienstansicht).--deep: auch Dienste auf Systemebene scannen.--require-rpc: mit Exit-Code ungleich null beenden, wenn der RPC-Probe fehlschlägt. Kann nicht mit--no-probekombiniert werden.
gateway statusbleibt für Diagnose verfügbar, auch wenn die lokale CLI-Konfiguration fehlt oder ungültig ist.gateway statuslöst konfigurierte Auth-SecretRefs für Probe-Auth nach Möglichkeit auf.- Wenn ein erforderlicher Auth-SecretRef in diesem Befehlsausführungspfad nicht aufgelöst ist, meldet
gateway status --jsonrpc.authWarning, wenn Probe-Konnektivität/Auth fehlschlägt; übergeben Sie--token/--passwordexplizit oder lösen Sie zuerst die Secret-Quelle auf. - Wenn der Probe erfolgreich ist, werden Warnungen zu nicht aufgelösten Auth-Referenzen unterdrückt, um Fehlalarme zu vermeiden.
- Verwenden Sie
--require-rpcin Skripten und Automatisierung, wenn ein lauschender Dienst allein nicht ausreicht und Sie möchten, dass das Gateway-RPC selbst gesund ist. --deepergänzt einen Best-Effort-Scan nach zusätzlichen launchd-/systemd-/schtasks-Installationen. Wenn mehrere gatewayähnliche Dienste erkannt werden, gibt die menschenlesbare Ausgabe Hinweise zur Bereinigung aus und warnt, dass die meisten Setups ein Gateway pro Maschine ausführen sollten.- Die menschenlesbare Ausgabe enthält den aufgelösten Dateilogpfad sowie den Snapshot der Konfigurationspfade/-gültigkeit von CLI vs. Dienst, um Profil- oder State-Dir-Drift zu diagnostizieren.
- Bei Linux-systemd-Installationen lesen Prüfungen auf Dienst-Auth-Drift sowohl
Environment=- als auchEnvironmentFile=-Werte aus der Unit (einschließlich%h, Anführungszeichen, mehrerer Dateien und optionaler--Dateien). - Drift-Prüfungen lösen
gateway.auth.token-SecretRefs mithilfe der zusammengeführten Laufzeitumgebung auf (zuerst Dienstbefehlsumgebung, dann Fallback auf Prozessumgebung). - Wenn Token-Auth effektiv nicht aktiv ist (expliziter
gateway.auth.modevonpassword/none/trusted-proxyoder nicht gesetzter Modus, bei dem Passwort gewinnen kann und kein Token-Kandidat gewinnen kann), überspringen Token-Drift-Prüfungen die Auflösung des Konfigurationstokens.
gateway probe
gateway probe ist der Befehl „alles debuggen“. Er prüft immer:
- Ihr konfiguriertes entferntes Gateway (falls gesetzt) und
- localhost (local loopback) auch dann, wenn Remote konfiguriert ist.
--url übergeben, wird dieses explizite Ziel vor beiden hinzugefügt. Die menschenlesbare Ausgabe beschriftet die
Ziele wie folgt:
URL (explicit)Remote (configured)oderRemote (configured, inactive)Local loopback
Reachable: yesbedeutet, dass mindestens ein Ziel eine WebSocket-Verbindung akzeptiert hat.RPC: okbedeutet, dass Detail-RPC-Aufrufe (health/status/system-presence/config.get) ebenfalls erfolgreich waren.RPC: limited - missing scope: operator.readbedeutet, dass die Verbindung erfolgreich war, Detail-RPC aber durch fehlenden Operator-Scope eingeschränkt war. Dies wird als degradierte Erreichbarkeit gemeldet, nicht als vollständiger Fehler.- Der Exit-Code ist nur dann ungleich null, wenn keines der geprüften Ziele erreichbar ist.
--json):
- Oberste Ebene:
ok: mindestens ein Ziel ist erreichbar.degraded: mindestens ein Ziel hatte scope-eingeschränktes Detail-RPC.primaryTargetId: bestes Ziel, das in dieser Reihenfolge als aktiver Gewinner behandelt werden soll: explizite URL, SSH-Tunnel, konfiguriertes Remote, dann lokales loopback.warnings[]: Best-Effort-Warnungsdatensätze mitcode,messageund optionalentargetIds.network: lokale loopback-/tailnet-URL-Hinweise, abgeleitet aus aktueller Konfiguration und Host-Netzwerk.discovery.timeoutMsunddiscovery.count: das tatsächliche Discovery-Budget/Ergebnisanzahl, die für diesen Probe-Durchlauf verwendet wurden.
- Pro Ziel (
targets[].connect):ok: Erreichbarkeit nach Verbindung + degradierter Klassifizierung.rpcOk: vollständiger Erfolg des Detail-RPC.scopeLimited: Detail-RPC ist wegen fehlendem Operator-Scope fehlgeschlagen.
ssh_tunnel_failed: Einrichtung des SSH-Tunnels ist fehlgeschlagen; der Befehl ist auf direkte Probes zurückgefallen.multiple_gateways: mehr als ein Ziel war erreichbar; das ist ungewöhnlich, außer wenn Sie absichtlich isolierte Profile ausführen, etwa einen Rescue-Bot.auth_secretref_unresolved: ein konfigurierter Auth-SecretRef konnte für ein fehlgeschlagenes Ziel nicht aufgelöst werden.probe_scope_limited: WebSocket-Verbindung war erfolgreich, aber Detail-RPC war durch fehlendenoperator.readeingeschränkt.
Remote über SSH (Parity zur Mac-App)
Der Modus „Remote over SSH“ der macOS-App verwendet einen lokalen Port-Forward, damit das entfernte Gateway (das möglicherweise nur an loopback gebunden ist) unterws://127.0.0.1:<port> erreichbar wird.
CLI-Äquivalent:
--ssh <target>:user@hostoderuser@host:port(Port ist standardmäßig22).--ssh-identity <path>: Identity-Datei.--ssh-auto: den zuerst erkannten Gateway-Host als SSH-Ziel vom aufgelösten Discovery-Endpunkt auswählen (local.plus die konfigurierte Wide-Area-Domain, falls vorhanden). Reine TXT-Hinweise werden ignoriert.
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Low-Level-RPC-Helfer.
--params <json>: JSON-Objekt-String für Parameter (Standard{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
--paramsmuss gültiges JSON sein.--expect-finalist hauptsächlich für Agenten-artige RPCs gedacht, die vor einer finalen Payload Zwischenereignisse streamen.
Den Gateway-Dienst verwalten
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--force,--jsongateway uninstall|start|stop|restart:--json
gateway installunterstützt--port,--runtime,--token,--force,--json.- Wenn Token-Auth ein Token erfordert und
gateway.auth.tokenüber SecretRef verwaltet wird, validiertgateway install, dass der SecretRef auflösbar ist, speichert das aufgelöste Token aber nicht in den Umgebungsmetadaten des Dienstes. - Wenn Token-Auth ein Token erfordert und der konfigurierte Token-SecretRef nicht aufgelöst ist, schlägt die Installation fail-closed fehl, statt Fallback-Klartext zu speichern.
- Für Passwort-Auth bei
gateway runsollten SieOPENCLAW_GATEWAY_PASSWORD,--password-fileoder ein SecretRef-gestütztesgateway.auth.passwordgegenüber Inline---passwordbevorzugen. - Im abgeleiteten Auth-Modus lockert ein nur in der Shell gesetztes
OPENCLAW_GATEWAY_PASSWORDdie Installationsanforderungen an Tokens nicht; verwenden Sie dauerhafte Konfiguration (gateway.auth.passwordoder Konfigurations-env), wenn Sie einen verwalteten Dienst installieren. - Wenn sowohl
gateway.auth.tokenals auchgateway.auth.passwordkonfiguriert sind undgateway.auth.modenicht gesetzt ist, wird die Installation blockiert, bis der Modus explizit gesetzt ist. - Lifecycle-Befehle akzeptieren
--jsonfür Skripting.
Gateways erkennen (Bonjour)
gateway discover scannt nach Gateway-Beacons (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): eine Domain wählen (Beispiel:
openclaw.internal.) und Split-DNS + einen DNS-Server einrichten; siehe /gateway/bonjour
role(Hinweis auf Gateway-Rolle)transport(Transporthinweis, z. B.gateway)gatewayPort(WebSocket-Port, normalerweise18789)sshPort(optional; Clients verwenden standardmäßig22für SSH-Ziele, wenn er fehlt)tailnetDns(MagicDNS-Hostname, wenn verfügbar)gatewayTls/gatewayTlsSha256(TLS aktiviert + Zertifikat-Fingerprint)cliPath(Hinweis zur Remote-Installation, in die Wide-Area-Zone geschrieben)
gateway discover
--timeout <ms>: Timeout pro Befehl (browse/resolve); Standard2000.--json: maschinenlesbare Ausgabe (deaktiviert auch Styling/Spinner).
- Die CLI scannt
local.plus die konfigurierte Wide-Area-Domain, wenn eine aktiviert ist. wsUrlin der JSON-Ausgabe wird vom aufgelösten Dienstendpunkt abgeleitet, nicht aus reinen TXT-Hinweisen wielanHostodertailnetDns.- Bei
local.-mDNS werdensshPortundcliPathnur gesendet, wenndiscovery.mdns.modeauffullsteht. Wide-Area DNS-SD schreibt weiterhincliPath;sshPortbleibt auch dort optional.