Gateway
Gateway-Betriebshandbuch
Verwenden Sie diese Seite für den erstmaligen Start und den laufenden Betrieb des Gateway-Dienstes.
Symptombasierte Diagnose mit exakten Befehlsfolgen und Log-Signaturen.
Aufgabenorientierte Einrichtungsanleitung und vollständige Konfigurationsreferenz.
SecretRef-Vertrag, Verhalten des Laufzeit-Snapshots sowie Migrations- und Neuladevorgänge.
Exakte Ziel-/Pfadregeln für secrets apply und Verhalten von Authentifizierungsprofilen mit ausschließlichen Referenzen.
Lokaler Start in 5 Minuten
Gateway starten
openclaw gateway --port 18789# Debug-/Trace-Ausgaben werden auf stdio gespiegeltopenclaw gateway --port 18789 --verbose# Listener am ausgewählten Port zwangsweise beenden, dann startenopenclaw gateway --forceDienstzustand überprüfen
openclaw gateway statusopenclaw statusopenclaw logs --followGesunder Ausgangszustand: Runtime: running, Connectivity probe: ok und eine Capability-Zeile, die Ihren Erwartungen entspricht. Verwenden Sie openclaw gateway status --require-rpc als RPC-Nachweis mit Leseberechtigung, nicht nur als Erreichbarkeitsprüfung.
Bereitschaft der Kanäle prüfen
openclaw channels status --probeBei einem erreichbaren Gateway führt dies Live-Prüfungen und optionale Audits für die Kanäle jedes Kontos aus. Ist das Gateway nicht erreichbar, greift die CLI auf reine Konfigurationszusammenfassungen der Kanäle zurück.
Laufzeitmodell
- Ein ständig aktiver Prozess für Routing, Steuerungsebene und Kanalverbindungen.
- Ein einzelner multiplexierter Port für:
- WebSocket-Steuerung/RPC
- HTTP-APIs (
/v1/models,/v1/embeddings,/v1/chat/completions,/v1/responses,/tools/invoke) - HTTP-Routen von Plugins, etwa das optionale
/api/v1/admin/rpc - Control UI und Hooks
- Standard-Bindungsmodus:
loopback. Innerhalb einer erkannten Container-Umgebung ist der effektive Standardwertauto(wird für Portweiterleitungen zu0.0.0.0aufgelöst), sofern Tailscale Serve/Funnel nicht aktiv ist; in diesem Fall wird stetsloopbackerzwungen. - Authentifizierung ist standardmäßig erforderlich. Einrichtungen mit gemeinsamem Geheimnis verwenden
gateway.auth.token/gateway.auth.password(oderOPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD), und Reverse-Proxy-Einrichtungen ohne Loopback könnengateway.auth.mode: "trusted-proxy"verwenden.
OpenAI-kompatible Endpunkte
Die wirkungsvollste Kompatibilitätsschnittstelle von OpenClaw:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completionsPOST /v1/responses
Warum diese Auswahl wichtig ist:
- Die meisten Integrationen mit Open WebUI, LobeChat und LibreChat prüfen zuerst
/v1/models. - Viele RAG- und Speicher-Pipelines erwarten
/v1/embeddings. - Agentenorientierte Clients bevorzugen zunehmend
/v1/responses.
/v1/models ist agentenorientiert: Der Endpunkt gibt für jeden konfigurierten Agenten openclaw, openclaw/default und openclaw/<agentId> zurück. openclaw/default ist der stabile Alias, der stets dem konfigurierten Standardagenten zugeordnet ist. Senden Sie x-openclaw-model, wenn Sie Provider und Modell des Backends überschreiben möchten; andernfalls bleibt die normale Modell- und Embedding-Konfiguration des ausgewählten Agenten maßgeblich.
Alle diese Endpunkte laufen auf dem Hauptport des Gateways und verwenden dieselbe vertrauenswürdige Authentifizierungsgrenze für Operatoren wie die übrige HTTP-API des Gateways.
Admin-HTTP-RPC (POST /api/v1/admin/rpc) ist eine separate, standardmäßig deaktivierte Plugin-Route für Host-Werkzeuge, die WebSocket-RPC nicht verwenden können. Siehe Admin-HTTP-RPC.
Rangfolge von Port und Bindung
| Einstellung | Auflösungsreihenfolge |
|---|---|
| Gateway-Port | --port → OPENCLAW_GATEWAY_PORT → gateway.port → 18789 |
| Bindungsmodus | CLI/Überschreibung → gateway.bind → loopback (oder auto in Containern) |
Installierte Gateway-Dienste speichern den aufgelösten Wert von --port in den Supervisor-Metadaten. Führen Sie nach einer Änderung von gateway.port den Befehl openclaw doctor --fix oder openclaw gateway install --force aus, damit launchd/systemd/schtasks den Prozess am neuen Port startet.
Beim Start des Gateways werden derselbe effektive Port und dieselbe Bindung verwendet, um bei Bindungen ohne Loopback lokale Ursprünge für die Control UI vorzubelegen. Beispielsweise legt --bind lan --port 3000 vor der Laufzeitvalidierung http://localhost:3000 und http://127.0.0.1:3000 an. Fügen Sie alle Ursprünge entfernter Browser, etwa HTTPS-Proxy-URLs, explizit zu gateway.controlUi.allowedOrigins hinzu.
Hot-Reload-Modi
gateway.reload.mode |
Verhalten |
|---|---|
off |
Konfiguration nicht neu laden |
hot |
Nur Hot-Reload-sichere Änderungen anwenden |
restart |
Bei Änderungen, die ein Neuladen erfordern, neu starten |
hybrid (Standard) |
Wenn sicher, direkt anwenden; andernfalls neu starten |
Operator-Befehlssatz
openclaw gateway statusopenclaw gateway status --deep # fügt eine Dienstprüfung auf Systemebene hinzuopenclaw gateway status --jsonopenclaw gateway installopenclaw gateway restartopenclaw gateway stopopenclaw secrets reloadopenclaw logs --followopenclaw doctorgateway status --deep dient zur zusätzlichen Diensterkennung (LaunchDaemons/systemd-Systemeinheiten/schtasks), nicht für eine eingehendere RPC-Zustandsprüfung.
Mehrere Gateways (auf demselben Host)
Bei den meisten Installationen sollte ein Gateway pro Computer ausgeführt werden. Ein einzelnes Gateway kann mehrere Agenten und Kanäle hosten. Mehrere Gateways benötigen Sie nur, wenn Sie gezielt eine Isolation oder einen Rettungs-Bot wünschen.
Nützliche Prüfungen:
openclaw gateway status --deepopenclaw gateway probeWas Sie erwarten können:
gateway status --deepkannOther gateway-like services detected (best effort)melden und Bereinigungshinweise ausgeben, wenn noch veraltete launchd-/systemd-/schtasks-Installationen vorhanden sind.gateway probekann vormultiple reachable gateway identitieswarnen, wenn verschiedene Gateways antworten oder OpenClaw nicht nachweisen kann, dass die erreichbaren Ziele dasselbe Gateway sind. Ein SSH-Tunnel, eine Proxy-URL oder eine konfigurierte Remote-URL zum selben Gateway stellt ein Gateway mit mehreren Transportwegen dar, selbst wenn sich die Transportports unterscheiden.- Wenn dies beabsichtigt ist, isolieren Sie Ports, Konfiguration/Zustand und Workspace-Stammverzeichnisse für jedes Gateway.
Checkliste pro Instanz:
- Eindeutiger Wert für
gateway.port - Eindeutiger Wert für
OPENCLAW_CONFIG_PATH - Eindeutiger Wert für
OPENCLAW_STATE_DIR - Eindeutiger Wert für
agents.defaults.workspace
Beispiel:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002Ausführliche Einrichtung: /gateway/multiple-gateways.
Remote-Zugriff
Bevorzugt: Tailscale/VPN. Ausweichlösung: SSH-Tunnel.
ssh -N -L 18789:127.0.0.1:18789 user@gateway-hostVerbinden Sie Clients anschließend lokal mit ws://127.0.0.1:18789.
Siehe: Remote-Gateway, Authentifizierung, Tailscale.
Überwachung und Dienstlebenszyklus
Verwenden Sie für produktionsähnliche Zuverlässigkeit überwachte Ausführungen.
macOS (launchd)
openclaw gateway installopenclaw gateway statusopenclaw gateway restartopenclaw gateway stopVerwenden Sie für Neustarts openclaw gateway restart. Verketten Sie openclaw gateway stop und openclaw gateway start nicht 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 eine Deaktivierung dauerhaft zu speichern. Die automatische Wiederherstellung durch KeepAlive funktioniert daher weiterhin nach unerwarteten Abstürzen, und gateway start aktiviert den Dienst ordnungsgemäß erneut. Um den automatischen Neustart über Systemneustarts hinweg dauerhaft zu unterdrücken, übergeben Sie --disable: openclaw gateway stop --disable.
LaunchAgent-Bezeichnungen lauten ai.openclaw.gateway (Standard) oder ai.openclaw.<profile> (benanntes Profil). openclaw doctor prüft und korrigiert Abweichungen der Dienstkonfiguration.
Linux (systemd-Benutzerdienst)
openclaw gateway installsystemctl --user enable --now openclaw-gateway[-<profile>].serviceopenclaw gateway statusAktivieren Sie Lingering, damit der Dienst nach der Abmeldung weiterläuft:
sudo loginctl enable-linger $(whoami)Stellen Sie auf einem Headless-Server ohne Desktop-Sitzung außerdem sicher, dass XDG_RUNTIME_DIR gesetzt ist (export XDG_RUNTIME_DIR=/run/user/$(id -u)), bevor Sie systemctl --user-Befehle erneut ausführen.
Beispiel für eine manuelle Benutzereinheit, wenn Sie einen benutzerdefinierten Installationspfad benötigen:
[Unit]Description=OpenClaw GatewayAfter=network-online.targetWants=network-online.targetStartLimitBurst=5StartLimitIntervalSec=60 [Service]ExecStart=/usr/local/bin/openclaw gateway --port 18789Restart=alwaysRestartSec=5RestartPreventExitStatus=78TimeoutStopSec=30TimeoutStartSec=30SuccessExitStatus=0 143OOMPolicy=continueKillMode=control-group [Install]WantedBy=default.targetWindows (nativ)
openclaw gateway installopenclaw gateway status --jsonopenclaw gateway restartopenclaw gateway stopDer verwaltete native Windows-Start verwendet eine geplante Aufgabe mit dem Namen OpenClaw Gateway
(oder OpenClaw Gateway (<profile>) für benannte Profile). Wenn das Erstellen der geplanten Aufgabe
verweigert wird, greift OpenClaw auf ein Startprogramm im benutzerspezifischen Autostart-Ordner zurück,
das auf gateway.cmd im Zustandsverzeichnis verweist.
Linux (Systemdienst)
Verwenden Sie eine Systemeinheit für Hosts mit mehreren Benutzern oder dauerhaftem Betrieb.
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceVerwenden Sie dieselbe Dienstdefinition wie für die Benutzereinheit, installieren Sie sie jedoch unter
/etc/systemd/system/openclaw-gateway[-<profile>].service und passen Sie
ExecStart= an, falls sich Ihre openclaw-Binärdatei an einem anderen Ort befindet.
Lassen Sie nicht zusätzlich openclaw doctor --fix einen Gateway-Dienst auf Benutzerebene für dasselbe Profil und denselben Port installieren. Doctor verweigert diese automatische Installation, wenn ein OpenClaw-Gateway-Dienst auf Systemebene gefunden wird. Verwenden Sie OPENCLAW_SERVICE_REPAIR_POLICY=external, wenn die Systemeinheit den Lebenszyklus verwaltet.
Fehler aufgrund ungültiger Konfigurationen führen zum Beenden mit Code 78. Linux-systemd-Einheiten verwenden RestartPreventExitStatus=78, um weitere Neustarts zu verhindern, bis die Konfiguration korrigiert wurde. launchd und die Windows-Aufgabenplanung verfügen über keine entsprechende Regel zum Stoppen abhängig vom Beendigungscode. Daher speichert das Gateway zusätzlich den Verlauf schneller unsauberer Starts und unterdrückt nach wiederholten Startfehlern den automatischen Start von Kanal-/Provider-Konten. In diesem sicheren Modus startet die Steuerungsebene weiterhin zur Überprüfung und Reparatur, Hot Reloads der Konfiguration und secrets.reload verweigern automatische Kanalneustarts, und eine explizite Operator-Anfrage über channels.start kann die Unterdrückung außer Kraft setzen.
Schnellstart für das Entwicklungsprofil
openclaw --dev setupopenclaw --dev gateway --allow-unconfiguredopenclaw --dev statusZu den Standardwerten gehören isolierte Zustands-/Konfigurationsdaten und der Gateway-Basisport 19001.
Protokoll-Kurzreferenz (Operatoransicht)
- Der erste Client-Frame muss
connectsein. - Der Gateway gibt einen
hello-ok-Frame mit einemsnapshot(presence,health,stateVersion,uptimeMs) sowiepolicy-Limits (maxPayload,maxBufferedBytes,tickIntervalMs) zurück. hello-ok.features.methods/eventssind eine konservative Liste zur Ermittlung verfügbarer Funktionen und kein generierter Dump aller aufrufbaren Hilfsrouten.- Anfragen:
req(method, params)→res(ok/payload|error). - Zu den häufigen Ereignissen gehören
connect.challenge,agent,chat,session.message,session.operation,session.tool, das optional aktivierbaresession.approval,sessions.changed,presence,tick,health,heartbeat, Ereignisse im Lebenszyklus von Kopplung/Genehmigung undshutdown.
Agent-Ausführungen erfolgen in zwei Phasen:
- Sofortige Annahmebestätigung (
status:"accepted") - Abschließende Fertigstellungsantwort (
status:"ok"|"error"), dazwischen werdenagent-Ereignisse gestreamt.
Die vollständige Protokolldokumentation finden Sie unter Gateway-Protokoll.
Betriebsprüfungen
Erreichbarkeit
- Öffnen Sie eine WS-Verbindung und senden Sie
connect. - Erwarten Sie eine
hello-ok-Antwort mit einem Snapshot.
Bereitschaft
openclaw gateway statusopenclaw channels status --probeopenclaw healthWiederherstellung bei Lücken
Ereignisse werden nicht erneut wiedergegeben. Aktualisieren Sie bei Sequenzlücken den Zustand (health, system-presence), bevor Sie fortfahren.
Häufige Fehlermeldungen
| Meldung | Wahrscheinliche Ursache |
|---|---|
refusing to bind gateway ... without auth |
Bindung an eine Nicht-Loopback-Adresse ohne gültigen Gateway-Authentifizierungspfad |
another gateway instance is already listening / EADDRINUSE |
Portkonflikt |
Gateway start blocked: set gateway.mode=local |
Konfiguration ist auf den Remote-Modus eingestellt oder gateway.mode fehlt in einer beschädigten Konfiguration |
unauthorized during connect |
Nicht übereinstimmende Authentifizierung zwischen Client und Gateway |
Vollständige Diagnoseabläufe finden Sie unter Gateway-Fehlerbehebung.
Sicherheitsgarantien
- Gateway-Protokollclients brechen sofort mit einem Fehler ab, wenn der Gateway nicht verfügbar ist (kein impliziter Fallback auf einen direkten Kanal).
- Ungültige erste Frames sowie erste Frames, die keine Verbindungsherstellung anfordern, werden abgelehnt und geschlossen.
- Beim ordnungsgemäßen Herunterfahren wird vor dem Schließen des Sockets ein
shutdown-Ereignis ausgegeben.