OpenClaw Gateway CLI: Lokalen WebSocket-Server starten
Das Gateway ist der WebSocket-Server von OpenClaw, der für die Verwaltung von Channels, Nodes, Sessions und Hooks zuständig ist. Mit dem Gateway CLI kannst du diese Komponenten direkt über dein Terminal steuern und überwachen.
Gateway CLI Übersicht
Abschnitt betitelt „Gateway CLI Übersicht“Das Gateway bildet das Herzstück der Kommunikation in OpenClaw und ermöglicht eine effiziente Echtzeit-Datenübertragung. Alle Befehle in diesem Abschnitt werden über das CLI unter dem Namespace openclaw gateway ausgeführt.
- Stelle sicher, dass du Node.js auf deinem System installiert hast, um die volle Funktionalität des Gateway zu nutzen.
- Du kannst die verfügbaren Befehle jederzeit mit folgendem Befehl einsehen:
openclaw gateway --helpGateway Installation und Setup
Abschnitt betitelt „Gateway Installation und Setup“Bevor du das Gateway starten kannst, musst du die notwendigen Abhängigkeiten in deinem Projekt bereitstellen. Dies stellt sicher, dass alle JSON-Konfigurationen korrekt verarbeitet werden.
- Installiere die erforderlichen Pakete über npm oder pnpm:
npm install @openclaw/gateway# oderpnpm add @openclaw/gateway- Überprüfe die Installation, indem du den Status des Gateway abfragst:
openclaw gateway statusGateway Konfiguration und Webhook Anbindung
Abschnitt betitelt „Gateway Konfiguration und Webhook Anbindung“Die Konfiguration des Gateway erfolgt über eine zentrale Datei, die festlegt, wie webhook-Ereignisse empfangen und weitergeleitet werden. Eine korrekte Einrichtung ist entscheidend für die Stabilität deiner API-Verbindungen.
- Erstelle eine Konfigurationsdatei, um dein Gateway mit deinem GitHub-Repository oder anderen Diensten zu verbinden:
{ "gateway": { "port": 8080, "webhook_secret": "your-secret-key", "enable_logging": true }}- Starte das Gateway mit deiner spezifischen Konfiguration:
openclaw gateway start --config gateway.jsonGateway Ausführung in Docker
Abschnitt betitelt „Gateway Ausführung in Docker“Für eine isolierte Umgebung kannst du das Gateway in einem Docker-Container betreiben. Dies ist der empfohlene Weg, um Abhängigkeiten sauber von deinem Host-System zu trennen.
- Nutze das offizielle Image, um das Gateway zu starten:
docker run -p 8080:8080 openclaw/gateway:latest- Überwache die Logs des Gateway innerhalb des Containers:
docker logs -f openclaw-gatewayVerwandte Dokumentation:
Gateway ausführen
Abschnitt betitelt „Gateway ausführen“Du kannst einen lokalen Gateway-Prozess mit dem folgenden Befehl starten:
openclaw gatewayFür den Vordergrund-Alias verwendest du diesen Befehl:
openclaw gateway runBeachte dabei folgende Hinweise:
- Standardmäßig verweigert der Gateway den Start, sofern nicht
gateway.mode=localin der Datei~/.openclaw/openclaw.jsongesetzt ist. Nutze--allow-unconfiguredfür Ad-hoc- oder Entwicklungs-Durchläufe. - Befehle wie
openclaw onboard --mode localundopenclaw setupsolltengateway.mode=localautomatisch in die Konfiguration schreiben. Falls die Datei existiert, abergateway.modefehlt, wird dies als beschädigte Konfiguration gewertet und muss repariert werden, anstatt den lokalen Modus implizit anzunehmen. - Wenn die Datei vorhanden ist, aber
gateway.modefehlt, stuft der Gateway dies als verdächtige Konfigurationsbeschädigung ein und weigert sich, den lokalen Modus für dich zu “erraten”. - Bindungen außerhalb des Loopbacks ohne Authentifizierung sind aus Sicherheitsgründen blockiert.
- SIGUSR1 löst einen Neustart innerhalb des Prozesses aus, sofern autorisiert (standardmäßig ist
commands.restartaktiviert; setzecommands.restart: false, um manuelle Neustarts zu blockieren, während Gateway-Tools sowie Konfigurationsanpassungen weiterhin erlaubt bleiben). - SIGINT/SIGTERM-Handler stoppen den Gateway-Prozess, stellen jedoch keinen benutzerdefinierten Terminalstatus wieder her. Falls du das CLI mit einem TUI oder Raw-Mode-Input ummantelst, stelle das Terminal vor dem Beenden wieder her.
Optionen
Abschnitt betitelt „Optionen“Hier findest du eine Übersicht der verfügbaren Optionen, um den Gateway-Start anzupassen:
--port <port>: WebSocket-Port (Standardwert stammt aus der Konfiguration/Umgebung; meist18789).--bind <loopback|lan|tailnet|auto|custom>: Bindungsmodus für den Listener.--auth <token|password>: Überschreiben des Authentifizierungsmodus.--token <token>: Token-Überschreibung (setzt zudemOPENCLAW_GATEWAY_TOKENfür den Prozess).--password <password>: Passwort-Überschreibung. Achtung: Inline-Passwörter können in lokalen Prozesslisten sichtbar sein.--password-file <path>: Liest das Gateway-Passwort aus einer Datei.--tailscale <off|serve|funnel>: Exponiert den Gateway über Tailscale.--tailscale-reset-on-exit: Setzt die Tailscale-Serve/Funnel-Konfiguration beim Herunterfahren zurück.--allow-unconfigured: Erlaubt den Gateway-Start ohnegateway.mode=localin der Konfiguration. Dies umgeht die Start-Sicherheitsprüfung nur für Ad-hoc/Dev-Bootstrapping; die Konfigurationsdatei wird dabei nicht geschrieben oder repariert.--dev: Erstellt eine Dev-Konfiguration sowie einen Workspace, falls diese fehlen (überspringt BOOTSTRAP.md).--reset: Setzt Dev-Konfiguration, Anmeldedaten, Sitzungen und Workspace zurück (erfordert--dev).--force: Beendet jeden bestehenden Listener auf dem gewählten Port vor dem Start.--verbose: Aktiviert ausführliche Protokolle.--cli-backend-logs: Zeigt nur CLI-Backend-Logs in der Konsole an (und aktiviert stdout/stderr).--ws-log <auto|full|compact>: Stil der WebSocket-Protokolle (Standard istauto).--compact: Alias für--ws-log compact.--raw-stream: Protokolliert rohe Modell-Stream-Ereignisse im JSON-Format (jsonl).--raw-stream-path <path>: Pfad für den rohen JSON-Stream.
Für das Startup-Profiling stehen dir folgende Möglichkeiten zur Verfügung:
- Setze
OPENCLAW_GATEWAY_STARTUP_TRACE=1, um die Phasen-Timings während des Gateway-Starts zu protokollieren. - Führe
pnpm test:startup:gateway -- --runs 5 --warmup 1aus, um den Gateway-Start zu benchen. Der Benchmark zeichnet die erste Prozessausgabe,/healthz,/readyzsowie die Startup-Trace-Timings auf.
Einen laufenden Gateway abfragen
Abschnitt betitelt „Einen laufenden Gateway abfragen“Alle Abfragebefehle verwenden WebSocket RPC.
Ausgabemodi:
- Standard: menschenlesbar (farbig im TTY).
--json: maschinenlesbares JSON (ohne Styling/Spinner).--no-color(oder NO_COLOR=1): deaktiviert ANSI, behält aber das menschenlesbare Layout bei.
Gemeinsame Optionen (sofern unterstützt):
--url <url>: Gateway WebSocket URL.--token <token>: Gateway Token.--password <password>: Gateway Passwort.--timeout <ms>: Timeout/Budget (variiert je nach Befehl).--expect-final: wartet auf eine „finale“ Antwort (Agenten-Aufrufe).
Hinweis: Wenn du --url setzt, greift die CLI nicht auf Konfigurations- oder Umgebungs-Anmeldedaten zurück. Übergebe --token oder --password explizit. Fehlende Anmeldedaten führen zu einem Fehler.
gateway health
Abschnitt betitelt „gateway health“Dieser Befehl prüft den Status deines Gateways.
openclaw gateway health --url ws://127.0.0.1:18789Der HTTP /healthz Endpunkt ist ein Liveness-Probe: Er antwortet, sobald der Server HTTP-Anfragen beantworten kann. Der HTTP /readyz Endpunkt ist strenger und bleibt rot, während Startup-Sidecars, Kanäle oder konfigurierte Hooks noch initialisiert werden.
gateway usage-cost
Abschnitt betitelt „gateway usage-cost“Rufe Zusammenfassungen der Nutzungskosten aus den Sitzungsprotokollen ab.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --jsonOptionen:
--days <days>: Anzahl der Tage, die einbezogen werden sollen (Standard30).
gateway status
Abschnitt betitelt „gateway status“gateway status zeigt den Gateway-Dienst (launchd/systemd/schtasks) sowie eine optionale Prüfung der Konnektivität und Authentifizierungsfähigkeit an.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpcOptionen:
--url <url>: fügt ein explizites Prüfziel hinzu. Konfigurierte Remote-Ziele + localhost werden weiterhin geprüft.--token <token>: Token-Authentifizierung für die Prüfung.--password <password>: Passwort-Authentifizierung für die Prüfung.--timeout <ms>: Prüf-Timeout (Standard10000).--no-probe: überspringt die Konnektivitätsprüfung (nur Dienst-Ansicht).--deep: scannt auch Dienste auf Systemebene.--require-rpc: wertet die Standard-Konnektivitätsprüfung zu einer Lese-Prüfung auf und beendet den Prozess mit einem Fehlercode, wenn diese fehlschlägt. Kann nicht mit--no-probekombiniert werden.
Hinweise:
gateway statusbleibt für Diagnosen verfügbar, selbst wenn die lokale CLI-Konfiguration fehlt oder ungültig ist.- Der Standard
gateway statusbelegt den Dienststatus, die WebSocket-Verbindung und die beim Handshake sichtbare Authentifizierungsfähigkeit. Er belegt keine Lese-/Schreib-/Admin-Operationen. gateway statuslöst konfigurierte Auth-SecretRefs für die Prüfung auf, wenn möglich.- Wenn eine erforderliche Auth-SecretRef in diesem Befehlspfad nicht aufgelöst werden kann, meldet
gateway status --jsoneinenrpc.authWarning, wenn die Konnektivität/Authentifizierung fehlschlägt; übergebe--token/--passwordexplizit oder löse die Secret-Quelle zuerst auf. - Wenn die Prüfung erfolgreich ist, werden Warnungen zu nicht aufgelösten Auth-Refs unterdrückt, um Fehlalarme zu vermeiden.
- Verwende
--require-rpcin Skripten und Automatisierungen, wenn ein laufender Dienst nicht ausreicht und du sicherstellen musst, dass auch Lese-RPC-Aufrufe funktionieren. --deepfügt einen Scan nach zusätzlichen launchd/systemd/schtasks-Installationen hinzu. Wenn mehrere Gateway-ähnliche Dienste erkannt werden, gibt die menschenlesbare Ausgabe Bereinigungshinweise aus und warnt, dass die meisten Setups nur ein Gateway pro Maschine ausführen sollten.- Die menschenlesbare Ausgabe enthält den aufgelösten Dateipfad zum Log sowie einen Snapshot der CLI- vs. Dienst-Konfigurationspfade, um bei der Diagnose von Profil- oder Zustandsverzeichnis-Abweichungen zu helfen.
- Bei Linux systemd-Installationen lesen Abweichungsprüfungen sowohl
Environment=als auchEnvironmentFile=Werte aus der Unit (einschließlich%h, Anführungszeichen, mehreren Dateien und optionalen-Dateien). - Abweichungsprüfungen lösen
gateway.auth.tokenSecretRefs unter Verwendung der zusammengeführten Laufzeitumgebung auf (zuerst Dienstbefehl-Umgebung, dann Prozess-Umgebung als Fallback). - Wenn die Token-Authentifizierung nicht effektiv aktiv ist (expliziter
gateway.auth.modevonpassword/none/trusted-proxyoder Modus nicht gesetzt, wobei Passwort gewinnen kann und kein Token-Kandidat gewinnen kann), überspringen Token-Abweichungsprüfungen die Konfigurations-Token-Auflösung.
gateway probe
Abschnitt betitelt „gateway probe“gateway probe ist der Befehl, um alles zu debuggen. Er prüft immer:
- dein konfiguriertes Remote-Gateway (falls gesetzt), und
- localhost (Loopback) auch wenn ein Remote-Gateway konfiguriert ist.
Wenn du --url übergibst, wird dieses explizite Ziel vor beiden anderen geprüft. Die menschenlesbare Ausgabe kennzeichnet die Ziele als:
URL (explicit)Remote (configured)oderRemote (configured, inactive)Local loopback
Wenn mehrere Gateways erreichbar sind, werden alle aufgelistet. Mehrere Gateways werden unterstützt, wenn du isolierte Profile/Ports verwendest (z. B. einen Rescue-Bot), aber die meisten Installationen führen nur ein Gateway aus.
openclaw gateway probeopenclaw gateway probe --jsonInterpretation:
Reachable: yesbedeutet, dass mindestens ein Ziel eine WebSocket-Verbindung akzeptiert hat.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyberichtet, was die Prüfung über die Authentifizierung belegen konnte. Dies ist unabhängig von der Erreichbarkeit.Read probe: okbedeutet, dass Detail-RPC-Aufrufe mit Lesezugriff (health/status/system-presence/config.get) ebenfalls erfolgreich waren.Read probe: limited - missing scope: operator.readbedeutet, dass die Verbindung erfolgreich war, aber der Lese-RPC eingeschränkt ist. Dies wird als degradierte Erreichbarkeit gemeldet, nicht als vollständiger Ausfall.
JSON-Hinweise (--json):
- Top-Level:
ok: mindestens ein Ziel ist erreichbar.degraded: mindestens ein Ziel hatte einen Detail-RPC mit eingeschränktem Umfang.capability: beste Fähigkeit, die über erreichbare Ziele hinweg gesehen wurde (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeoderunknown).primaryTargetId: bestes Ziel, das als aktiver Gewinner behandelt wird, in dieser Reihenfolge: explizite URL, SSH-Tunnel, konfiguriertes Remote-Ziel, dann lokaler Loopback.warnings[]: Warnungsdatensätze mitcode,messageund optionalentargetIds.network: Hinweise auf lokale Loopback/Tailnet-URLs, abgeleitet aus der aktuellen Konfiguration und dem Host-Netzwerk.discovery.timeoutMsunddiscovery.count: das tatsächliche Discovery-Budget/Ergebnisanzahl für diesen Prüfdurchlauf.
- Pro Ziel (
targets[].connect):ok: Erreichbarkeit nach Verbindung + degradierte Klassifizierung.rpcOk: vollständiger Detail-RPC-Erfolg.scopeLimited: Detail-RPC fehlgeschlagen aufgrund fehlenden Operator-Scopes.
- Pro Ziel (
targets[].auth):role: Auth-Rolle, die inhello-okgemeldet wurde (falls verfügbar).scopes: gewährte Scopes, die inhello-okgemeldet wurden (falls verfügbar).capability: die ermittelte Auth-Fähigkeitsklassifizierung für dieses Ziel.
Häufige Warncodes:
ssh_tunnel_failed: SSH-Tunnel-Einrichtung fehlgeschlagen; der Befehl ist auf direkte Prüfungen zurückgefallen.multiple_gateways: mehr als ein Ziel war erreichbar; dies ist ungewöhnlich, es sei denn, du betreibst absichtlich isolierte Profile, wie z. B. einen Rescue-Bot.auth_secretref_unresolved: eine konfigurierte Auth-SecretRef konnte für ein fehlgeschlagenes Ziel nicht aufgelöst werden.probe_scope_limited: WebSocket-Verbindung war erfolgreich, aber die Lese-Prüfung war durch fehlendesoperator.readeingeschränkt.
Remote über SSH (Mac App Parität)
Abschnitt betitelt „Remote über SSH (Mac App Parität)“Der “Remote über SSH”-Modus der macOS-App verwendet eine lokale Port-Weiterleitung, sodass das Remote-Gateway (das möglicherweise nur an Loopback gebunden ist) unter ws://127.0.0.1:<port> erreichbar wird.
CLI-Äquivalent:
openclaw gateway probe --ssh user@gateway-hostOptionen:
--ssh <target>:user@hostoderuser@host:port(Port standardmäßig22).--ssh-identity <path>: Identitätsdatei.--ssh-auto: wählt den ersten entdeckten Gateway-Host als SSH-Ziel aus dem aufgelösten Discovery-Endpunkt (local.plus die konfigurierte Wide-Area-Domain, falls vorhanden). TXT-only Hinweise werden ignoriert.
Konfiguration (optional, wird als Standard verwendet):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Abschnitt betitelt „gateway call <method>“Low-Level RPC-Helfer.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"sinceMs": 60000}'Optionen:
--params <json>: JSON-Objekt-String für Parameter (Standard{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
Hinweise:
--paramsmuss gültiges JSON sein.--expect-finalist hauptsächlich für RPCs im Agenten-Stil gedacht, die Zwischenereignisse streamen, bevor ein finales Payload gesendet wird.
Gateway-Dienst verwalten
Abschnitt betitelt „Gateway-Dienst verwalten“Du kannst den Gateway-Dienst direkt über die CLI steuern, um den Lebenszyklus deiner Instanz effizient zu verwalten. Nutze dazu die folgenden Befehle, um den Dienst auf deinem System zu konfigurieren und auszuführen:
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallGateway-Befehlsoptionen
Abschnitt betitelt „Gateway-Befehlsoptionen“Für die verschiedenen Gateway-Befehle stehen dir spezifische Optionen zur Verfügung, mit denen du das Verhalten der API und des Dienstes präzise steuern kannst. Hier ist eine Übersicht der verfügbaren Flags für die jeweiligen Aktionen:
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
Hinweise zur Konfiguration
Abschnitt betitelt „Hinweise zur Konfiguration“Wenn du OpenClaw einrichtest, solltest du die folgenden technischen Details beachten, um eine sichere und stabile Umgebung zu gewährleisten. Diese Punkte helfen dir dabei, den Gateway korrekt zu konfigurieren und Fehler bei der Bereitstellung zu vermeiden:
- Der Befehl
gateway installunterstützt die Optionen--port,--runtime,--token,--forceund--json. - Wenn die Token-Authentifizierung einen Token erfordert und
gateway.auth.tokenüber SecretRef verwaltet wird, validiertgateway install, ob der SecretRef auflösbar ist. Der aufgelöste Token wird jedoch nicht dauerhaft in den Metadaten der Dienstumgebung gespeichert. - Falls die Token-Authentifizierung einen Token benötigt und der konfigurierte SecretRef nicht aufgelöst werden kann, schlägt die Installation fehl, anstatt ein unsicheres Fallback im Klartext zu speichern.
- Für die Passwort-Authentifizierung bei
gateway runsolltest du bevorzugt OPENCLAW_GATEWAY_PASSWORD,--password-fileoder einen SecretRef-basiertengateway.auth.password-Eintrag verwenden, anstatt das Passwort direkt als--passwordeinzugeben. - Im abgeleiteten Authentifizierungsmodus lockert ein reines Shell-OPENCLAW_GATEWAY_PASSWORD die Token-Anforderungen für die Installation nicht auf; verwende stattdessen eine dauerhafte Konfiguration (
gateway.auth.passwordoder Konfigurations-env), wenn du einen verwalteten Dienst installierst. - Wenn sowohl
gateway.auth.tokenals auchgateway.auth.passwordkonfiguriert sind, abergateway.auth.modenicht gesetzt ist, wird die Installation blockiert, bis der Modus explizit definiert wurde. - Alle Lebenszyklus-Befehle akzeptieren das
--json-Flag, um die Automatisierung mittels Skripten zu erleichtern.
Gateways entdecken (Bonjour)
Abschnitt betitelt „Gateways entdecken (Bonjour)“Der Befehl gateway discover sucht aktiv nach Gateway-Beacons, die über das Protokoll _openclaw-gw._tcp ausgesendet werden.
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): Wähle eine Domain (zum Beispiel
openclaw.internal.) und richte Split DNS sowie einen DNS-Server ein; weitere Details findest du unter /gateway/bonjour.
Nur Gateways, bei denen die Bonjour-Erkennung aktiviert ist (Standardeinstellung), senden den Beacon aus.
Die Datensätze für die Wide-Area-Erkennung enthalten folgende Informationen (TXT):
role(Hinweis auf die Gateway-Rolle)transport(Hinweis auf den Transportweg, z. B.gateway)gatewayPort(WebSocket-Port, normalerweise18789)sshPort(optional; Clients verwenden standardmäßig22, wenn dieser Wert fehlt)tailnetDns(MagicDNS-Hostname, sofern verfügbar)gatewayTls/gatewayTlsSha256(TLS aktiviert + Zertifikats-Fingerprint)cliPath(Hinweis für die Remote-Installation, der in die Wide-Area-Zone geschrieben wird)
gateway discover verwenden
Abschnitt betitelt „gateway discover verwenden“Mit diesem Befehl kannst du OpenClaw Gateways in deinem Netzwerk finden und ihre Konfigurationsdetails abrufen.
openclaw gateway discoverOptionen:
--timeout <ms>: Timeout pro Befehl (Suche/Auflösung); Standardwert ist2000.--json: Ausgabe im maschinenlesbaren Format (deaktiviert zudem Styling und Spinner).
Beispiele:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'Hinweise:
- Das CLI scannt sowohl
local.als auch die konfigurierte Wide-Area-Domain, sofern eine solche aktiviert ist. - Die
wsUrlin der JSON-Ausgabe wird vom aufgelösten Service-Endpunkt abgeleitet und nicht aus reinen TXT-Hinweisen wielanHostodertailnetDns. - Bei
local.mDNS werdensshPortundcliPathnur übertragen, wenndiscovery.mdns.modeauffullgesetzt ist. Wide-Area DNS-SD schreibt weiterhincliPath;sshPortbleibt auch dort optional.
OpenClaw Expert
Noch festgefahren?
Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.