Gateway
OpenAI-Chatvervollständigungen
OpenClaws Gateway kann einen kleinen OpenAI-kompatiblen Chat-Completions-Endpunkt bereitstellen.
Dieser Endpunkt ist standardmäßig deaktiviert. Aktivieren Sie ihn zuerst in der Konfiguration.
POST /v1/chat/completions- Derselbe Port wie der Gateway (WS + HTTP-Multiplex):
http://<gateway-host>:<port>/v1/chat/completions
Wenn die OpenAI-kompatible HTTP-Oberfläche des Gateways aktiviert ist, stellt sie außerdem Folgendes bereit:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
Intern werden Anfragen als normaler Gateway-Agent-Lauf ausgeführt (derselbe Codepfad wie openclaw agent), sodass Routing/Berechtigungen/Konfiguration Ihrem Gateway entsprechen.
Authentifizierung
Verwendet die Authentifizierungskonfiguration des Gateways.
Gängige HTTP-Authentifizierungspfade:
- Shared-Secret-Authentifizierung (
gateway.auth.mode="token"oder"password"):Authorization: Bearer <token-or-password> - vertrauenswürdige, identitätstragende HTTP-Authentifizierung (
gateway.auth.mode="trusted-proxy"): Leiten Sie über den konfigurierten identitätsbewussten Proxy weiter und lassen Sie ihn die erforderlichen Identitäts-Header einfügen - offene Authentifizierung für privaten Eingang (
gateway.auth.mode="none"): kein Authentifizierungs-Header erforderlich
Hinweise:
- Wenn
gateway.auth.mode="token"gilt, verwenden Siegateway.auth.token(oderOPENCLAW_GATEWAY_TOKEN). - Wenn
gateway.auth.mode="password"gilt, verwenden Siegateway.auth.password(oderOPENCLAW_GATEWAY_PASSWORD). - Wenn
gateway.auth.mode="trusted-proxy"gilt, muss die HTTP-Anfrage von einer konfigurierten vertrauenswürdigen Proxy-Quelle kommen; Same-Host-loopback-Proxys erfordern explizitgateway.auth.trustedProxy.allowLoopback = true. - Wenn
gateway.auth.rateLimitkonfiguriert ist und zu viele Authentifizierungsfehler auftreten, gibt der Endpunkt429mitRetry-Afterzurück.
Sicherheitsgrenze (wichtig)
Behandeln Sie diesen Endpunkt als Oberfläche mit vollständigem Operator-Zugriff für die Gateway-Instanz.
- HTTP-Bearer-Authentifizierung ist hier kein enges Pro-Benutzer-Scope-Modell.
- Ein gültiges Gateway-Token/-Passwort für diesen Endpunkt sollte wie ein Owner-/Operator-Zugangsnachweis behandelt werden.
- Anfragen laufen über denselben Control-Plane-Agent-Pfad wie vertrauenswürdige Operator-Aktionen.
- Für diesen Endpunkt gibt es keine separate Nicht-Owner-/Pro-Benutzer-Tool-Grenze; sobald ein Aufrufer hier die Gateway-Authentifizierung besteht, behandelt OpenClaw diesen Aufrufer als vertrauenswürdigen Operator für diesen Gateway.
- Für Shared-Secret-Authentifizierungsmodi (
tokenundpassword) stellt der Endpunkt die normalen vollständigen Operator-Standardwerte wieder her, selbst wenn der Aufrufer einen engerenx-openclaw-scopes-Header sendet. - Vertrauenswürdige, identitätstragende HTTP-Modi (zum Beispiel vertrauenswürdige Proxy-Authentifizierung oder
gateway.auth.mode="none") berücksichtigenx-openclaw-scopes, wenn vorhanden, und fallen andernfalls auf den normalen Operator-Standard-Scope-Satz zurück. - Wenn die Ziel-Agent-Policy sensible Tools zulässt, kann dieser Endpunkt sie verwenden.
- Halten Sie diesen Endpunkt nur auf loopback/Tailnet/privatem Eingang; setzen Sie ihn nicht direkt dem öffentlichen Internet aus.
Authentifizierungsmatrix:
gateway.auth.mode="token"oder"password"+Authorization: Bearer ...- weist den Besitz des gemeinsamen Gateway-Operator-Secrets nach
- ignoriert engere
x-openclaw-scopes - stellt den vollständigen Standard-Operator-Scope-Satz wieder her:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - behandelt Chat-Turns auf diesem Endpunkt als Owner-Sender-Turns
- vertrauenswürdige, identitätstragende HTTP-Modi (zum Beispiel vertrauenswürdige Proxy-Authentifizierung oder
gateway.auth.mode="none"auf privatem Eingang)- authentifizieren eine äußere vertrauenswürdige Identität oder Bereitstellungsgrenze
- berücksichtigen
x-openclaw-scopes, wenn der Header vorhanden ist - fallen auf den normalen Operator-Standard-Scope-Satz zurück, wenn der Header fehlt
- verlieren Owner-Semantik nur, wenn der Aufrufer Scopes explizit verengt und
operator.adminauslässt
Siehe Sicherheit und Remote-Zugriff.
Agent-first-Modellvertrag
OpenClaw behandelt das OpenAI-Feld model als Agent-Ziel, nicht als rohe Provider-Modell-ID.
model: "openclaw"leitet an den konfigurierten Standard-Agent weiter.model: "openclaw/default"leitet ebenfalls an den konfigurierten Standard-Agent weiter.model: "openclaw/<agentId>"leitet an einen bestimmten Agent weiter.
Optionale Anfrage-Header:
x-openclaw-model: <provider/model-or-bare-id>überschreibt das Backend-Modell für den ausgewählten Agent.x-openclaw-agent-id: <agentId>wird weiterhin als Kompatibilitäts-Override unterstützt.x-openclaw-session-key: <sessionKey>steuert das Session-Routing vollständig.x-openclaw-message-channel: <channel>legt den synthetischen Eingangskanal-Kontext für kanalbewusste Prompts und Policies fest.
Weiterhin akzeptierte Kompatibilitätsaliasse:
model: "openclaw:<agentId>"model: "agent:<agentId>"
Endpunkt aktivieren
Setzen Sie gateway.http.endpoints.chatCompletions.enabled auf true:
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: true },
},
},
},
}
Endpunkt deaktivieren
Setzen Sie gateway.http.endpoints.chatCompletions.enabled auf false:
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: false },
},
},
},
}
Session-Verhalten
Standardmäßig ist der Endpunkt pro Anfrage zustandslos (bei jedem Aufruf wird ein neuer Session-Schlüssel generiert).
Wenn die Anfrage eine OpenAI-user-Zeichenfolge enthält, leitet der Gateway daraus einen stabilen Session-Schlüssel ab, sodass wiederholte Aufrufe eine Agent-Session teilen können.
Warum diese Oberfläche wichtig ist
Dies ist der Kompatibilitätssatz mit der größten Wirkung für selbst gehostete Frontends und Tooling:
- Die meisten Open WebUI-, LobeChat- und LibreChat-Setups erwarten
/v1/models. - Viele RAG-Systeme erwarten
/v1/embeddings. - Bestehende OpenAI-Chat-Clients können in der Regel mit
/v1/chat/completionsstarten. - Agent-nativere Clients bevorzugen zunehmend
/v1/responses.
Modellliste und Agent-Routing
Was gibt `/v1/models` zurück?
Eine OpenClaw-Agent-Zielliste.
Die zurückgegebenen IDs sind Einträge wie openclaw, openclaw/default und openclaw/<agentId>.
Verwenden Sie sie direkt als OpenAI-model-Werte.
Listet `/v1/models` Agents oder Sub-Agents auf?
Es listet Top-Level-Agent-Ziele auf, keine Backend-Provider-Modelle und keine Sub-Agents.
Sub-Agents bleiben interne Ausführungstopologie. Sie erscheinen nicht als Pseudomodelle.
Warum ist `openclaw/default` enthalten?
openclaw/default ist der stabile Alias für den konfigurierten Standard-Agent.
Das bedeutet, dass Clients weiterhin eine vorhersehbare ID verwenden können, auch wenn sich die tatsächliche Standard-Agent-ID zwischen Umgebungen ändert.
Wie überschreibe ich das Backend-Modell?
Verwenden Sie x-openclaw-model.
Beispiele:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5
Wenn Sie ihn auslassen, wird der ausgewählte Agent mit seiner normal konfigurierten Modellauswahl ausgeführt.
Wie passen Embeddings in diesen Vertrag?
/v1/embeddings verwendet dieselben Agent-Ziel-model-IDs.
Verwenden Sie model: "openclaw/default" oder model: "openclaw/<agentId>".
Wenn Sie ein bestimmtes Embedding-Modell benötigen, senden Sie es in x-openclaw-model.
Ohne diesen Header wird die Anfrage an die normale Embedding-Konfiguration des ausgewählten Agent weitergereicht.
Streaming (SSE)
Setzen Sie stream: true, um Server-Sent Events (SSE) zu empfangen:
Content-Type: text/event-stream- Jede Ereigniszeile ist
data: <json> - Der Stream endet mit
data: [DONE]
Schnelleinrichtung für Open WebUI
Für eine einfache Open WebUI-Verbindung:
- Basis-URL:
http://127.0.0.1:18789/v1 - Docker-Basis-URL unter macOS:
http://host.docker.internal:18789/v1 - API-Schlüssel: Ihr Gateway-Bearer-Token
- Modell:
openclaw/default
Erwartetes Verhalten:
GET /v1/modelssollteopenclaw/defaultauflisten- Open WebUI sollte
openclaw/defaultals Chat-Modell-ID verwenden - Wenn Sie ein bestimmtes Backend-Provider/-Modell für diesen Agent wünschen, legen Sie das normale Standardmodell des Agent fest oder senden Sie
x-openclaw-model
Schneller Smoke-Test:
curl -sS http://127.0.0.1:18789/v1/models \
-H 'Authorization: Bearer YOUR_TOKEN'
Wenn das openclaw/default zurückgibt, können die meisten Open WebUI-Setups mit derselben Basis-URL und demselben Token verbinden.
Beispiele
Ohne Streaming:
curl -sS http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"model": "openclaw/default",
"messages": [{"role":"user","content":"hi"}]
}'
Streaming:
curl -N http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-model: openai/gpt-5.4' \
-d '{
"model": "openclaw/research",
"stream": true,
"messages": [{"role":"user","content":"hi"}]
}'
Modelle auflisten:
curl -sS http://127.0.0.1:18789/v1/models \
-H 'Authorization: Bearer YOUR_TOKEN'
Ein Modell abrufen:
curl -sS http://127.0.0.1:18789/v1/models/openclaw%2Fdefault \
-H 'Authorization: Bearer YOUR_TOKEN'
Embeddings erstellen:
curl -sS http://127.0.0.1:18789/v1/embeddings \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-model: openai/text-embedding-3-small' \
-d '{
"model": "openclaw/default",
"input": ["alpha", "beta"]
}'
Hinweise:
/v1/modelsgibt OpenClaw-Agent-Ziele zurück, keine rohen Provider-Kataloge.openclaw/defaultist immer vorhanden, sodass eine stabile ID umgebungsübergreifend funktioniert.- Backend-Provider/-Modell-Overrides gehören in
x-openclaw-model, nicht in das OpenAI-Feldmodel. /v1/embeddingsunterstütztinputals Zeichenfolge oder als Array von Zeichenfolgen.