CLI commands

Gateway

Der Gateway ist der WebSocket-Server von OpenClaw (Kanäle, Nodes, Sitzungen, Hooks). Alle folgenden Unterbefehle befinden sich unter openclaw gateway ....

Gateway ausführen

bash
openclaw gatewayopenclaw gateway run   # gleichwertige, explizite Form
Startverhalten
  • Der Start wird verweigert, sofern gateway.mode=local nicht in ~/.openclaw/openclaw.json festgelegt ist. Verwenden Sie --allow-unconfigured für Ad-hoc-/Entwicklungsläufe; dies umgeht die Schutzprüfung, ohne die Konfiguration zu schreiben oder zu reparieren.
  • openclaw onboard --mode local und openclaw setup schreiben gateway.mode=local. Wenn die Konfigurationsdatei vorhanden ist, aber gateway.mode fehlt, wird dies als beschädigte oder überschriebene Konfiguration behandelt, und der Gateway nimmt nicht eigenständig local für Sie an — führen Sie das Onboarding erneut aus, legen Sie den Schlüssel manuell fest oder übergeben Sie --allow-unconfigured.
  • Eine Bindung über Loopback hinaus wird ohne Authentifizierung blockiert.
  • Die --bind-Werte lan, tailnet und custom werden derzeit ausschließlich über IPv4-Pfade aufgelöst; reine IPv6-Installationen mit eigenem Host benötigen einen IPv4-Sidecar oder Proxy vor dem Gateway.
  • SIGUSR1 löst bei entsprechender Autorisierung einen prozessinternen Neustart aus. commands.restart (Standard: aktiviert) steuert extern gesendete SIGUSR1-Signale; setzen Sie den Wert auf false, um manuelle Neustarts über Betriebssystemsignale zu blockieren, während Neustarts über den Befehl gateway restart, das Gateway-Tool sowie das Anwenden oder Aktualisieren der Konfiguration weiterhin möglich bleiben.
  • SIGINT/SIGTERM beenden den Prozess, stellen jedoch keinen benutzerdefinierten Terminalzustand wieder her — wenn Sie die CLI in eine TUI oder eine Eingabe im Rohmodus einbetten, stellen Sie das Terminal vor dem Beenden selbst wieder her.

Optionen

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA " type="number"> WebSocket-Port (Standardwert aus Konfiguration/Umgebung; üblicherweise 18789).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYmluZCA8bW9kZQ " type="string"> Bindungsmodus: loopback (Standard), lan, tailnet, auto, custom.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu " type="string"> Gemeinsames Token für connect.params.auth.token. Verwendet standardmäßig OPENCLAW_GATEWAY_TOKEN, falls gesetzt.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYXV0aCA8bW9kZQ " type="string"> Authentifizierungsmodus: none, token, password, trusted-proxy.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcGFzc3dvcmQgPHBhc3N3b3Jk " type="string"> Passwort für --auth password.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdGFpbHNjYWxlIDxtb2Rl " type="string"> Tailscale-Freigabe: off, serve, funnel.

--tailscale-reset-on-exitboolean

Tailscale-Serve-/Funnel-Konfiguration beim Herunterfahren zurücksetzen.

--allow-unconfiguredboolean

Ohne Erzwingung von gateway.mode=local starten. Nur für Ad-hoc-/Entwicklungsinitialisierung; speichert oder repariert die Konfiguration nicht.

--devboolean

Eine Entwicklungskonfiguration und einen Arbeitsbereich erstellen, falls diese fehlen (BOOTSTRAP.md wird übersprungen).

--resetboolean

Entwicklungskonfiguration, Anmeldedaten, Sitzungen und Arbeitsbereich zurücksetzen. Erfordert --dev.

--forceboolean

Vor dem Start jeden vorhandenen Listener am Zielport beenden.

--verboseboolean

Ausführliche Protokollierung nach stdout/stderr.

--cli-backend-logsboolean

Nur CLI-Backend-Protokolle in der Konsole anzeigen (aktiviert auch stdout/stderr).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0td3MtbG9nIDxzdHlsZQ " type="string" default="auto"> WebSocket-Protokollstil: auto, full, compact.

--compactboolean

Alias für --ws-log compact.

--raw-streamboolean

Unverarbeitete Modellstream-Ereignisse in JSONL protokollieren.

--claude-cli-logs ist ein veralteter Alias für --cli-backend-logs.

Legen Sie für --bind custom gateway.customBindHost auf eine IPv4-Adresse fest. Jede andere Adresse als 127.0.0.1 oder 0.0.0.0 erfordert zusätzlich 127.0.0.1 am selben Port für Clients auf demselben Host; der Start schlägt fehl, wenn einer der beiden Listener keine Bindung herstellen kann. Der Platzhalter 0.0.0.0 fügt keinen separaten erforderlichen Alias hinzu. Reine IPv6-Installationen mit eigenem Host benötigen einen IPv4-Sidecar oder Proxy vor dem Gateway.

Gateway neu starten

bash
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --wait 30s

--safe weist den laufenden Gateway an, aktive Arbeiten vorab zu prüfen und einen zusammengefassten Neustart zu planen, nachdem diese Arbeiten abgeschlossen sind. Die Wartezeit wird durch gateway.reload.deferralTimeoutMs begrenzt (Standard: 5 Minuten / 300000); nach Ablauf des Zeitbudgets wird der Neustart erzwungen. Setzen Sie deferralTimeoutMs: 0, um unbegrenzt zu warten (mit regelmäßigen Warnungen über weiterhin ausstehende Arbeiten), anstatt den Neustart zu erzwingen. --safe kann nicht mit --force oder --wait kombiniert werden.

--skip-deferral umgeht bei einem sicheren Neustart die Aufschubsperre für aktive Arbeiten, sodass der Gateway auch bei gemeldeten Blockierungen sofort neu startet. Die Option erfordert --safe — verwenden Sie sie, wenn ein Aufschub wegen einer außer Kontrolle geratenen Aufgabe hängen bleibt.

--wait <duration> überschreibt das Zeitbudget für das Abschließen aktiver Arbeiten bei einem gewöhnlichen (nicht sicheren) Neustart. Akzeptiert Millisekunden ohne Einheit oder die Einheitssuffixe ms, s, m, h, d (z. B. 30s, 5m, 1h30m); --wait 0 wartet unbegrenzt. Nicht mit --force oder --safe kompatibel.

--force überspringt das Abschließen aktiver Arbeiten und startet sofort neu. Ein gewöhnlicher restart (ohne Optionen) behält das bestehende Neustartverhalten des Dienstmanagers bei.

Gateway-Profiling

  • OPENCLAW_GATEWAY_STARTUP_TRACE=1 protokolliert beim Start die Phasenzeiten, einschließlich der eventLoopMax-Verzögerung je Phase und der Zeiten für Plugin-Nachschlagetabellen (Installationsindex, Manifestregistrierung, Startplanung, Zuordnung zu Verantwortlichen).
  • OPENCLAW_GATEWAY_RESTART_TRACE=1 protokolliert neustartspezifische Zeilen mit restart trace:: Signalverarbeitung, Abschluss aktiver Arbeiten, Herunterfahrphasen, nächster Start, Bereitschaftszeit und Speicherkennzahlen.
  • OPENCLAW_DIAGNOSTICS=timeline schreibt zusammen mit OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path> nach bestem Bemühen eine JSONL-Diagnosezeitleiste des Starts für externe QA-Testsysteme (entspricht der Konfiguration diagnostics.flags: ["timeline"]; der Pfad ist weiterhin nur über eine Umgebungsvariable verfügbar). Fügen Sie OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 hinzu, um Ereignisschleifen-Messwerte einzubeziehen.
  • pnpm build und anschließend pnpm test:startup:gateway -- --runs 5 --warmup 1 messen den Gateway-Start anhand des erstellten CLI-Einstiegspunkts: erste Prozessausgabe, /healthz, /readyz, Zeiten der Startablaufverfolgung, Ereignisschleifen-Verzögerung und Zeit der Plugin-Nachschlagetabelle.
  • pnpm build und anschließend pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5 messen den prozessinternen Neustart unter macOS oder Linux (unter Windows nicht unterstützt; der Neustart erfordert SIGUSR1). Der Test verwendet SIGUSR1, aktiviert beide Ablaufverfolgungen im untergeordneten Prozess und zeichnet das nächste /healthz, das nächste /readyz, die Ausfallzeit, die Bereitschaftszeit, CPU, RSS und Neustart-Ablaufverfolgungskennzahlen auf.
  • /healthz zeigt die Betriebsfähigkeit an; /readyz zeigt die Nutzungsbereitschaft an. Behandeln Sie Ablaufverfolgungszeilen und Benchmark-Ausgaben als Hinweise für die Zuordnung zu Verantwortlichen, nicht als vollständige Leistungsbewertung auf Grundlage eines einzelnen Zeitabschnitts oder Messwerts.

Einen laufenden Gateway abfragen

Alle Abfragebefehle verwenden WebSocket-RPC.

Ausgabemodi

  • Standard: menschenlesbar (in einer TTY farbig).
  • --json: maschinenlesbares JSON (ohne Gestaltung/Fortschrittsanzeige).
  • --no-color (oder NO_COLOR=1): ANSI deaktivieren und dabei das menschenlesbare Layout beibehalten.

Gemeinsame Optionen

  • --url <url>: WebSocket-URL des Gateways.
  • --token <token>: Gateway-Token.
  • --password <password>: Gateway-Passwort.
  • --timeout <ms>: Zeitüberschreitung/Zeitbudget (Standardwert variiert je Befehl; siehe die einzelnen Befehle unten).
  • --expect-final: auf eine „final“-Antwort warten (Agent-Aufrufe).

gateway health

bash
openclaw gateway health --url ws://127.0.0.1:18789openclaw gateway health --port 18789

/healthz ist eine Betriebsfähigkeitsprüfung: Sie antwortet, sobald der Server HTTP-Anfragen beantworten kann. /readyz ist strenger und bleibt rot, solange beim Start Plugin-Sidecars, Kanäle oder konfigurierte Hooks noch nicht vollständig bereit sind. Lokale oder authentifizierte ausführliche /readyz-Antworten enthalten einen eventLoop-Diagnoseblock (Verzögerung, Auslastung, CPU-Kern-Verhältnis, Kennzeichen degraded).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA " type="number"> Einen lokalen Gateway über local loopback an diesem Port ansprechen. Überschreibt für diesen Aufruf OPENCLAW_GATEWAY_URL und OPENCLAW_GATEWAY_PORT.

gateway usage-cost

Zusammenfassungen der Nutzungskosten aus Sitzungsprotokollen abrufen.

bash
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --agent work --jsonopenclaw gateway usage-cost --all-agentsopenclaw gateway usage-cost --json
"--days
"--agent
--all-agentsboolean

Über alle konfigurierten Agents aggregieren. Kann nicht mit --agent kombiniert werden.

gateway stability

Die aktuelle diagnostische Stabilitätsaufzeichnung von einem laufenden Gateway abrufen.

bash
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --json

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0 " type="number" default="25"> Maximale Anzahl einzubeziehender aktueller Ereignisse (höchstens 1000).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ " type="string"> Nach diagnostischem Ereignistyp filtern, z. B. payload.large oder diagnostic.memory.pressure.

"--since-seq
--bundle [path]string

Ein gespeichertes Stabilitätspaket lesen, anstatt den laufenden Gateway aufzurufen. --bundle latest (oder nur --bundle) wählt das neueste Paket im Zustandsverzeichnis aus; Sie können auch direkt einen JSON-Pfad zu einem Paket übergeben.

--exportboolean

Eine teilbare ZIP-Datei mit Supportdiagnosen schreiben, anstatt Stabilitätsdetails auszugeben.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo " type="string"> Ausgabepfad für --export.

Datenschutz und Paketverhalten
  • Aufzeichnungen bewahren betriebliche Metadaten auf: Ereignisnamen, Anzahlen, Bytegrößen, Speicherwerte, Warteschlangen-/Sitzungsstatus, Genehmigungs-IDs, Kanal-/Plugin-Namen und redigierte Sitzungszusammenfassungen. Ausgeschlossen sind Chattexte, Webhook-Inhalte, Tool-Ausgaben, unverarbeitete Anfrage-/Antwortinhalte, Tokens, Cookies, geheime Werte, Hostnamen und unverarbeitete Sitzungs-IDs. Setzen Sie diagnostics.enabled: false, um die Aufzeichnung vollständig zu deaktivieren.
  • Schwerwiegende Gateway-Beendigungen, Zeitüberschreitungen beim Herunterfahren und Startfehler nach Neustarts schreiben denselben Diagnose-Snapshot nach ~/.openclaw/logs/stability/openclaw-stability-*.json, wenn die Aufzeichnung Ereignisse enthält. Untersuchen Sie das neueste Paket mit openclaw gateway stability --bundle latest; --limit, --type und --since-seq gelten auch für die Paketausgabe.

gateway diagnostics export

Eine lokale Diagnose-ZIP-Datei für Fehlerberichte schreiben. Informationen zum Datenschutzmodell und zum Paketinhalt finden Sie unter Diagnoseexport.

bash
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --json
"--log-lines
"--log-bytes
"--url
"--token
"--password
"--timeout
--no-stability-bundleboolean

Suche nach einem persistent gespeicherten Stabilitätspaket überspringen.

--jsonboolean

Den geschriebenen Pfad, die Größe und das Manifest als JSON ausgeben.

Der Export bündelt: manifest.json (Dateiinventar), summary.md (Markdown-Zusammenfassung), diagnostics.json (übergeordnete Zusammenfassung von Konfiguration, Protokollen, Erkennung, Stabilität, Status und Integrität), config/sanitized.json, status/gateway-status.json, health/gateway-health.json, logs/openclaw-sanitized.jsonl sowie stability/latest.json, wenn ein Paket vorhanden ist.

Er ist für die Weitergabe konzipiert. Er behält für die Fehlerdiagnose nützliche Betriebsdetails bei – sichere Protokollfelder, Subsystemnamen, Statuscodes, Zeitdauern, konfigurierte Modi, Ports, Plugin-/Provider-IDs, nicht geheime Funktionseinstellungen und redigierte betriebliche Protokollmeldungen – und lässt Chattexte, Webhook-Inhalte, Werkzeugausgaben, Anmeldedaten, Cookies, Konto-/Nachrichtenkennungen, Prompt-/Anweisungstexte, Hostnamen und geheime Werte weg oder redigiert sie. Wenn eine Protokollmeldung wie Nutzungsdaten aus Benutzer-, Chat- oder Werkzeuginteraktionen aussieht (z. B. „Benutzer sagte“, „Chattext“, „Werkzeugausgabe“, „Webhook-Inhalt“), behält der Export nur die Information bei, dass eine Nachricht ausgelassen wurde, sowie deren Byteanzahl.

gateway status

Zeigt den Gateway-Dienst (launchd/systemd/schtasks) sowie eine optionale Verbindungs-/Authentifizierungsprüfung an.

bash
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc
"--url
"--token
"--password
"--timeout
--no-probeboolean

Verbindungsprüfung überspringen (nur Dienstansicht).

--deepboolean

Auch systemweite Dienste durchsuchen.

--require-rpcboolean

Die Verbindungsprüfung zu einer Leseprüfung erweitern und bei einem Fehlschlag mit einem von null verschiedenen Code beenden. Nicht mit --no-probe kombinierbar.

Statussemantik
  • Bleibt für Diagnosezwecke verfügbar, auch wenn die lokale CLI-Konfiguration fehlt oder ungültig ist.
  • Die Standardausgabe weist den Dienststatus, die WebSocket-Verbindung und die beim Handshake sichtbare Authentifizierungsberechtigung nach – nicht Lese-, Schreib- oder Administratorvorgänge.
  • Prüfungen verändern bei der erstmaligen Geräteauthentifizierung nichts: Sie verwenden ein vorhandenes zwischengespeichertes Geräte-Token erneut, erstellen jedoch niemals nur zur Statusprüfung eine neue CLI-Geräteidentität oder einen schreibgeschützten Kopplungsdatensatz.
  • Löst konfigurierte SecretRefs für die Authentifizierung nach Möglichkeit für die Prüfauthentifizierung auf. Wenn ein erforderlicher SecretRef nicht aufgelöst ist, meldet --json rpc.authWarning, falls die Verbindung oder Authentifizierung der Prüfung fehlschlägt. Übergeben Sie --token/--password explizit oder korrigieren Sie die Secret-Quelle. Warnungen wegen nicht aufgelöster Authentifizierung werden unterdrückt, sobald die Prüfung erfolgreich ist.
  • Die JSON-Ausgabe enthält gateway.version, wenn das laufende Gateway diese meldet. --require-rpc kann auf die RPC-Nutzlast status.runtimeVersion zurückgreifen, wenn die Handshake-Prüfung keine Versionsmetadaten liefern kann.
  • Verwenden Sie --require-rpc in Skripten und Automatisierungen, wenn ein lauschender Dienst nicht ausreicht und auch RPC mit Leseberechtigung funktionsfähig sein muss.
  • --deep sucht nach zusätzlichen launchd-/systemd-/schtasks-Installationen. Wenn mehrere Gateway-ähnliche Dienste gefunden werden, gibt die menschenlesbare Ausgabe Bereinigungshinweise aus (normalerweise sollte pro Computer ein Gateway ausgeführt werden) und meldet gegebenenfalls eine kürzlich erfolgte Neustartübergabe durch den Supervisor.
  • --deep führt außerdem die Konfigurationsvalidierung in einem Plugin-kompatiblen Modus (pluginValidation: "full") aus und zeigt Warnungen zu Plugin-Manifesten an (z. B. fehlende Metadaten zur Kanalkonfiguration). Der standardmäßige Befehl gateway status behält den schnellen schreibgeschützten Pfad bei, der die Plugin-Validierung überspringt.
  • Die menschenlesbare Ausgabe enthält den aufgelösten Pfad der Protokolldatei sowie die Konfigurationspfade und deren Gültigkeit für CLI und Dienst, um Abweichungen bei Profilen oder Zustandsverzeichnissen leichter zu diagnostizieren.
Prüfungen auf Authentifizierungsabweichungen unter Linux systemd
  • Prüfungen auf Abweichungen bei der Dienstauthentifizierung lesen sowohl Environment= als auch EnvironmentFile= aus der Unit (einschließlich %h, Pfaden in Anführungszeichen, mehreren Dateien und optionalen Dateien mit -).
  • Löst SecretRefs für gateway.auth.token mithilfe der zusammengeführten Laufzeitumgebung auf (zuerst die Befehlsumgebung des Dienstes, anschließend ersatzweise die Prozessumgebung).
  • Prüfungen auf Token-Abweichungen überspringen die Auflösung des Konfigurations-Tokens, wenn die Token-Authentifizierung faktisch nicht aktiv ist (gateway.auth.mode ist explizit password/none/trusted-proxy, oder der Modus ist nicht festgelegt, wobei das Passwort Vorrang haben kann und kein Token-Kandidat Vorrang erhalten kann).

gateway probe

Der Befehl zur umfassenden Fehlerdiagnose. Er prüft immer:

  • Ihr konfiguriertes entferntes Gateway (falls festgelegt) und
  • localhost (local loopback), selbst wenn ein entferntes Gateway konfiguriert ist.

Durch Übergabe von --url wird dieses explizite Ziel vor den beiden anderen hinzugefügt. Die menschenlesbare Ausgabe kennzeichnet die Ziele als URL (explicit), Remote (configured) / Remote (configured, inactive) und Local loopback.

bash
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --port 18789

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA " type="number"> Diesen Port für das lokale local-loopback-Prüfziel und den Remote-Port des SSH-Tunnels verwenden. Ohne --url wird dadurch ausschließlich das lokale local-loopback-Ziel ausgewählt und nicht die konfigurierte Gateway-Umgebungs-URL, der Umgebungsport oder entfernte Ziele.

Interpretation
  • Reachable: yes bedeutet, dass mindestens ein Ziel eine WebSocket-Verbindung akzeptiert hat.
  • Capability: read-only|write-capable|admin-capable|pairing-pending|connect-only gibt unabhängig von der Erreichbarkeit an, welche Authentifizierungsberechtigung die Prüfung nachweisen konnte.
  • Read probe: ok bedeutet, dass auch RPC-Aufrufe mit Leseberechtigung für Detailinformationen (health/status/system-presence/config.get) erfolgreich waren.
  • Read probe: limited - missing scope: operator.read bedeutet, dass die Verbindung erfolgreich war, RPC mit Leseberechtigung jedoch eingeschränkt ist. Dies wird als beeinträchtigte Erreichbarkeit und nicht als vollständiger Ausfall gemeldet.
  • Read probe: failed nach Connect: ok bedeutet, dass die WebSocket-Verbindung hergestellt wurde, die anschließende Lesediagnose jedoch das Zeitlimit überschritten hat oder fehlgeschlagen ist – ebenfalls beeinträchtigt, nicht unerreichbar.
  • Wie gateway status verwendet die Prüfung eine vorhandene zwischengespeicherte Geräteauthentifizierung erneut, erstellt jedoch keine erstmalige Geräteidentität oder keinen Kopplungsstatus.
  • Der Exit-Code ist nur dann von null verschieden, wenn kein geprüftes Ziel erreichbar ist.
JSON-Ausgabe

Oberste Ebene:

  • ok: Mindestens ein Ziel ist erreichbar.
  • degraded: Mindestens ein Ziel hat eine Verbindung akzeptiert, aber die vollständige RPC-Detaildiagnose nicht abgeschlossen.
  • capability: Beste bei den erreichbaren Zielen festgestellte Berechtigung (read_only, write_capable, admin_capable, pairing_pending, connected_no_operator_scope oder unknown).
  • primaryTargetId: Bestes Ziel, das als aktiver Gewinner behandelt werden soll, in folgender Reihenfolge: explizite URL, SSH-Tunnel, konfiguriertes entferntes Ziel, local loopback.
  • warnings[]: Nach bestem Bemühen erstellte Warnungsdatensätze mit code, message und optional targetIds.
  • network: URL-Hinweise für local loopback/Tailnet, die aus der aktuellen Konfiguration und der Hostnetzwerkkonfiguration abgeleitet werden.
  • discovery.timeoutMs / discovery.count: Das tatsächlich für diesen Prüfdurchlauf verwendete Erkennungsbudget bzw. die Ergebnisanzahl.

Pro Ziel (targets[].connect): ok (Erreichbarkeit und Einstufung der Beeinträchtigung), rpcOk (vollständiger Erfolg der RPC-Detaildiagnose), scopeLimited (Detail-RPC ist aufgrund fehlender Operator-Berechtigung fehlgeschlagen).

Pro Ziel (targets[].auth): role und scopes, wie in hello-ok gemeldet, sofern verfügbar, sowie die ausgegebene capability-Einstufung.

Häufige Warncodes
  • ssh_tunnel_failed: Die Einrichtung des SSH-Tunnels ist fehlgeschlagen; der Befehl ist auf direkte Prüfungen zurückgefallen.
  • multiple_gateways: Unterschiedliche Gateway-Identitäten waren erreichbar oder OpenClaw konnte nicht nachweisen, dass die erreichbaren Ziele dasselbe Gateway sind. Ein SSH-Tunnel, eine Proxy-URL oder eine konfigurierte Remote-URL zu demselben Gateway löst dies nicht aus.
  • auth_secretref_unresolved: Ein konfigurierter SecretRef für die Authentifizierung konnte für ein fehlgeschlagenes Ziel nicht aufgelöst werden.
  • probe_scope_limited: Die WebSocket-Verbindung war erfolgreich, die Leseprüfung war jedoch durch das fehlende operator.read eingeschränkt.
  • local_tls_runtime_unavailable: Lokales Gateway-TLS ist aktiviert, OpenClaw konnte jedoch den Fingerabdruck des lokalen Zertifikats nicht laden.

Entfernt über SSH (Funktionsgleichheit mit der Mac-App)

Der Modus „Remote over SSH“ der macOS-App verwendet eine lokale Portweiterleitung, damit ein ausschließlich über local loopback zugängliches entferntes Gateway unter ws://127.0.0.1:<port> erreichbar wird.

CLI-Entsprechung:

bash
openclaw gateway probe --ssh user@gateway-host

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ " type="string"> user@host oder user@host:port (der Port ist standardmäßig 22).

--ssh-autoboolean

Den zuerst erkannten Gateway-Host aus dem aufgelösten Erkennungsendpunkt (local. sowie gegebenenfalls die konfigurierte Weitverkehrsdomäne) als SSH-Ziel auswählen. Hinweise, die ausschließlich aus TXT-Einträgen bestehen, werden ignoriert.

Konfigurationsstandardwerte (optional): gateway.remote.sshTarget, gateway.remote.sshIdentity.

gateway call <method>

RPC-Hilfsbefehl auf niedriger Ebene.

bash
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"limit": 200}'
"--params
"--url
"--token
"--password
"--timeout
--expect-finalboolean

Hauptsächlich für agentenartige RPCs, die vor einer abschließenden Nutzlast Zwischenereignisse streamen.

--jsonboolean

Maschinenlesbare JSON-Ausgabe.

Gateway-Dienst verwalten

bash
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstall

Mit einem Wrapper installieren

Verwenden Sie --wrapper, wenn der verwaltete Dienst über eine andere ausführbare Datei gestartet werden muss, beispielsweise über einen Shim für die Secret-Verwaltung oder einen Hilfsbefehl zur Ausführung unter einem bestimmten Benutzerkonto. Der Wrapper erhält die normalen Gateway-Argumente und ist dafür verantwortlich, schließlich openclaw oder Node mit diesen Argumenten per exec auszuführen.

bash
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restart

Sie können den Wrapper auch über die Umgebung festlegen. gateway install prüft, ob der Pfad eine ausführbare Datei ist, schreibt den Wrapper in die ProgramArguments des Dienstes und speichert OPENCLAW_WRAPPER in der Dienstumgebung für spätere erzwungene Neuinstallationen, Aktualisierungen und Reparaturen durch Doctor.

bash
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctor

Um einen gespeicherten Wrapper zu entfernen, leeren Sie OPENCLAW_WRAPPER während der Neuinstallation:

bash
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restart
Befehlsoptionen
  • gateway status: --url, --token, --password, --timeout, --no-probe, --require-rpc, --deep, --json
  • gateway install: --port, --runtime <node|bun> (Standardwert: node), --token, --wrapper <path>, --force, --json
  • gateway restart: --safe, --skip-deferral, --force, --wait <duration>, --json
  • gateway uninstall|start: --json
  • gateway stop: --disable, --json
Lebenszyklusverhalten
  • Verwenden Sie gateway restart, um einen verwalteten Dienst neu zu starten. Verketten Sie nicht gateway stop und gateway start als Ersatz für einen Neustart.
  • Unter macOS verwendet gateway stop standardmäßig launchctl bootout. Dadurch wird der LaunchAgent aus der aktuellen Startsitzung entfernt, ohne dauerhaft deaktiviert zu werden – die automatische Wiederherstellung durch KeepAlive bleibt für zukünftige Abstürze aktiv, und gateway start aktiviert den Dienst ordnungsgemäß wieder, ohne dass ein manuelles launchctl enable erforderlich ist. Übergeben Sie --disable, um KeepAlive und RunAtLoad dauerhaft zu unterdrücken, sodass der Gateway erst nach dem nächsten expliziten gateway start erneut gestartet wird. Verwenden Sie diese Option, wenn ein manueller Stopp Neustarts des Systems überdauern soll.
  • Lebenszyklusbefehle akzeptieren --json zur Verwendung in Skripten.
Authentifizierung und SecretRefs bei der Installation
  • Wenn die Token-Authentifizierung ein Token erfordert und gateway.auth.token über eine SecretRef verwaltet wird, prüft gateway install, ob die SecretRef aufgelöst werden kann, speichert das aufgelöste Token jedoch nicht in den Umgebungsmetadaten des Dienstes.
  • Wenn die Token-Authentifizierung ein Token erfordert und die konfigurierte Token-SecretRef nicht aufgelöst werden kann, schlägt die Installation sicher fehl, anstatt ersatzweise Klartext zu speichern.
  • Bevorzugen Sie für die Passwortauthentifizierung bei gateway run OPENCLAW_GATEWAY_PASSWORD, --password-file oder ein durch eine SecretRef gestütztes gateway.auth.password gegenüber einem direkt angegebenen --password.
  • Im abgeleiteten Authentifizierungsmodus lockert ein nur in der Shell gesetztes OPENCLAW_GATEWAY_PASSWORD die Token-Anforderungen für die Installation nicht. Verwenden Sie bei der Installation eines verwalteten Dienstes eine dauerhafte Konfiguration (gateway.auth.password oder env in der Konfiguration).
  • Wenn sowohl gateway.auth.token als auch gateway.auth.password konfiguriert sind und gateway.auth.mode nicht festgelegt ist, wird die Installation blockiert, bis der Modus explizit festgelegt wurde.

Gateways ermitteln (Bonjour)

gateway discover sucht nach Gateway-Beacons (_openclaw-gw._tcp).

  • Multicast-DNS-SD: local.
  • Unicast-DNS-SD (Bonjour für Weitverkehrsnetze): Wählen Sie eine Domain (Beispiel: openclaw.internal.) und richten Sie Split-DNS sowie einen DNS-Server ein; siehe Bonjour.

Nur Gateways mit aktivierter Bonjour-Ermittlung (Standard) kündigen den Beacon an.

TXT-Hinweise in jedem Beacon: role (Hinweis auf die Gateway-Rolle), transport (Hinweis auf den Transport, z. B. gateway), gatewayPort (WebSocket-Port, normalerweise 18789), tailnetDns (MagicDNS-Hostname, sofern verfügbar), gatewayTls / gatewayTlsSha256 (TLS aktiviert und Zertifikat-Fingerabdruck). sshPort und cliPath werden nur im vollständigen Ermittlungsmodus veröffentlicht (discovery.mdns.mode: "full"; Standardwert ist "minimal", wodurch sie ausgelassen werden – Clients verwenden dann standardmäßig Port 22 für SSH-Ziele).

gateway discover

bash
openclaw gateway discover
"--timeout
--jsonboolean

Maschinenlesbare Ausgabe (deaktiviert außerdem Formatierung und Fortschrittsanzeige).

Beispiele:

bash
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'

Verwandte Themen

Was this useful?
On this page

On this page