Il Gateway è il server WebSocket di OpenClaw (canali, nodi, sessioni, hook). I sottocomandi in questa pagina sono sottoDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw gateway ….
Rilevamento Bonjour
Configurazione mDNS locale + DNS-SD wide-area.
Panoramica del rilevamento
Come OpenClaw pubblicizza e trova i gateway.
Configurazione
Chiavi di configurazione del gateway di livello superiore.
Eseguire il Gateway
Esegui un processo Gateway locale:Comportamento all'avvio
Comportamento all'avvio
- Per impostazione predefinita, il Gateway rifiuta di avviarsi a meno che
gateway.mode=localsia impostato in~/.openclaw/openclaw.json. Usa--allow-unconfiguredper esecuzioni ad hoc/di sviluppo. openclaw onboard --mode localeopenclaw setupdovrebbero scriveregateway.mode=local. Se il file esiste magateway.modemanca, considerala una configurazione danneggiata o sovrascritta e riparala invece di presupporre implicitamente la modalità locale.- Se il file esiste e
gateway.modemanca, il Gateway tratta la situazione come un danno sospetto alla configurazione e rifiuta di “indovinare local” per te. - Il binding oltre il loopback senza autenticazione è bloccato (misura di sicurezza).
SIGUSR1attiva un riavvio nel processo quando autorizzato (commands.restartè abilitato per impostazione predefinita; impostacommands.restart: falseper bloccare il riavvio manuale, mentre l’applicazione/aggiornamento tramite strumento/config del gateway rimane consentita).- I gestori
SIGINT/SIGTERMarrestano il processo gateway, ma non ripristinano alcuno stato personalizzato del terminale. Se incapsuli la CLI con una TUI o input in raw mode, ripristina il terminale prima dell’uscita.
Opzioni
Porta WebSocket (il valore predefinito proviene da config/env; di solito
18789).Modalità di binding del listener.
Override della modalità di autenticazione.
Override del token (imposta anche
OPENCLAW_GATEWAY_TOKEN per il processo).Override della password.
Leggi la password del gateway da un file.
Esponi il Gateway tramite Tailscale.
Reimposta la configurazione serve/funnel di Tailscale allo spegnimento.
Consenti l’avvio del gateway senza
gateway.mode=local nella configurazione. Aggira la protezione di avvio solo per bootstrap ad hoc/di sviluppo; non scrive né ripara il file di configurazione.Crea una configurazione di sviluppo + workspace se mancanti (salta BOOTSTRAP.md).
Reimposta configurazione di sviluppo + credenziali + sessioni + workspace (richiede
--dev).Termina qualsiasi listener esistente sulla porta selezionata prima dell’avvio.
Log dettagliati.
Mostra nella console solo i log del backend CLI (e abilita stdout/stderr).
Stile dei log WebSocket.
Alias per
--ws-log compact.Registra gli eventi del flusso raw del modello in jsonl.
Percorso jsonl del flusso raw.
Riavviare il Gateway
openclaw gateway restart --safe chiede al Gateway in esecuzione di eseguire un preflight del lavoro OpenClaw attivo prima del riavvio. Se sono attive operazioni in coda, consegna delle risposte, esecuzioni incorporate o task run, il Gateway segnala i blocchi, accorpa le richieste duplicate di riavvio sicuro e riavvia quando il lavoro attivo si esaurisce. Il semplice restart mantiene il comportamento esistente del gestore del servizio per compatibilità. Usa --force solo quando vuoi esplicitamente il percorso di override immediato.
openclaw gateway restart --safe --skip-deferral esegue lo stesso riavvio coordinato e consapevole di OpenClaw di --safe, ma aggira il gate di rinvio del lavoro attivo, così il Gateway emette subito il riavvio anche quando vengono segnalati blocchi. Usalo come via di uscita per l’operatore quando un rinvio è stato bloccato da un task run incastrato e --safe da solo attenderebbe indefinitamente. --skip-deferral richiede --safe.
Profilazione dell’avvio
- Imposta
OPENCLAW_GATEWAY_STARTUP_TRACE=1per registrare i tempi delle fasi durante l’avvio del Gateway, inclusi il ritardoeventLoopMaxper fase e i tempi delle tabelle di lookup dei plugin per installed-index, registro dei manifest, pianificazione dell’avvio e lavoro owner-map. - Imposta
OPENCLAW_DIAGNOSTICS=timelineconOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>per scrivere una timeline diagnostica di avvio JSONL best-effort per harness QA esterni. Puoi anche abilitare il flag condiagnostics.flags: ["timeline"]nella configurazione; il percorso è comunque fornito tramite env. AggiungiOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1per includere campioni dell’event loop. - Esegui
pnpm test:startup:gateway -- --runs 5 --warmup 1per misurare le prestazioni dell’avvio del Gateway. Il benchmark registra il primo output del processo,/healthz,/readyz, i tempi della traccia di avvio, il ritardo dell’event loop e i dettagli sui tempi delle tabelle di lookup dei plugin.
Interrogare un Gateway in esecuzione
Tutti i comandi di query usano RPC WebSocket.- Modalità di output
- Opzioni condivise
- Predefinita: leggibile da persone (colorata in TTY).
--json: JSON leggibile da macchina (senza stile/spinner).--no-color(oNO_COLOR=1): disabilita ANSI mantenendo il layout umano.
Quando imposti
--url, la CLI non ripiega sulle credenziali di configurazione o ambiente. Passa --token o --password esplicitamente. La mancanza di credenziali esplicite è un errore.gateway health
/healthz è un probe di liveness: restituisce una risposta quando il server può rispondere via HTTP. L’endpoint HTTP /readyz è più rigoroso e resta rosso mentre sidecar dei plugin di avvio, canali o hook configurati si stanno ancora stabilizzando. Le risposte di readiness dettagliate locali o autenticate includono un blocco diagnostico eventLoop con ritardo dell’event loop, utilizzo dell’event loop, rapporto dei core CPU e un flag degraded.
gateway usage-cost
Recupera riepiloghi usage-cost dai log delle sessioni.
Numero di giorni da includere.
gateway stability
Recupera il recorder diagnostico di stabilità recente da un Gateway in esecuzione.
Numero massimo di eventi recenti da includere (max
1000).Filtra per tipo di evento diagnostico, come
payload.large o diagnostic.memory.pressure.Includi solo eventi successivi a un numero di sequenza diagnostica.
Leggi un bundle di stabilità persistito invece di chiamare il Gateway in esecuzione. Usa
--bundle latest (o solo --bundle) per il bundle più recente nella directory di stato, oppure passa direttamente un percorso JSON del bundle.Scrivi uno zip di diagnostica di supporto condivisibile invece di stampare i dettagli di stabilità.
Percorso di output per
--export.Privacy e comportamento dei bundle
Privacy e comportamento dei bundle
- I record mantengono metadati operativi: nomi degli eventi, conteggi, dimensioni in byte, letture della memoria, stato di code/sessioni, nomi di canali/plugin e riepiloghi delle sessioni redatti. Non mantengono testo delle chat, corpi webhook, output degli strumenti, corpi raw di richiesta o risposta, token, cookie, valori segreti, nomi host o ID sessione raw. Imposta
diagnostics.enabled: falseper disabilitare completamente il recorder. - In caso di uscite fatali del Gateway, timeout di spegnimento e fallimenti di avvio del riavvio, OpenClaw scrive lo stesso snapshot diagnostico in
~/.openclaw/logs/stability/openclaw-stability-*.jsonquando il recorder ha eventi. Ispeziona il bundle più recente conopenclaw gateway stability --bundle latest;--limit,--typee--since-seqsi applicano anche all’output del bundle.
gateway diagnostics export
Scrive uno zip di diagnostica locale progettato per essere allegato alle segnalazioni di bug. Per il modello di privacy e i contenuti del bundle, vedi Esportazione diagnostica.
Percorso dello zip di output. Per impostazione predefinita usa un’esportazione di supporto nella directory di stato.
Numero massimo di righe di log sanitizzate da includere.
Numero massimo di byte di log da ispezionare.
URL WebSocket del Gateway per lo snapshot di health.
Token del Gateway per lo snapshot di health.
Password del Gateway per lo snapshot di health.
Timeout dello snapshot di stato/health.
Salta la ricerca del bundle di stabilità persistito.
Stampa il percorso scritto, la dimensione e il manifest come JSON.
gateway status
gateway status mostra il servizio Gateway (launchd/systemd/schtasks) più un probe facoltativo della capacità di connettività/autenticazione.
Aggiunge una destinazione esplicita per il probe. Il remoto configurato + localhost vengono comunque sottoposti a probe.
Autenticazione tramite token per il probe.
Autenticazione tramite password per il probe.
Timeout del probe.
Salta il probe di connettività (vista solo servizio).
Analizza anche i servizi a livello di sistema.
Aggiorna il probe di connettività predefinito a un probe di lettura ed esce con codice diverso da zero quando quel probe di lettura fallisce. Non può essere combinato con
--no-probe.Semantica dello stato
Semantica dello stato
gateway statusresta disponibile per la diagnostica anche quando la configurazione della CLI locale è mancante o non valida.gateway statuspredefinito verifica lo stato del servizio, la connessione WebSocket e la capacità di autenticazione visibile al momento dell’handshake. Non verifica operazioni di lettura/scrittura/amministrazione.- I probe diagnostici non apportano modifiche per l’autenticazione iniziale del dispositivo: riutilizzano un token dispositivo esistente nella cache quando presente, ma non creano una nuova identità dispositivo CLI o un record di abbinamento dispositivo in sola lettura solo per controllare lo stato.
gateway statusrisolve i SecretRef di autenticazione configurati per l’autenticazione del probe quando possibile.- Se un SecretRef di autenticazione richiesto non viene risolto in questo percorso di comando,
gateway status --jsonsegnalarpc.authWarningquando la connettività/autenticazione del probe fallisce; passa--token/--passwordesplicitamente o risolvi prima la sorgente del segreto. - Se il probe riesce, gli avvisi sugli auth-ref non risolti vengono soppressi per evitare falsi positivi.
- Usa
--require-rpcnegli script e nell’automazione quando un servizio in ascolto non basta e hai bisogno che anche le chiamate RPC con ambito di lettura siano integre. --deepaggiunge un’analisi best-effort per installazioni aggiuntive launchd/systemd/schtasks. Quando vengono rilevati più servizi simili a Gateway, l’output umano stampa suggerimenti di pulizia e avvisa che la maggior parte delle configurazioni dovrebbe eseguire un solo Gateway per macchina.--deepsegnala anche un recente passaggio di riavvio del supervisore Gateway quando il processo del servizio è uscito correttamente per un riavvio da parte di un supervisore esterno.--deepesegue la convalida della configurazione in modalità consapevole dei Plugin (pluginValidation: "full") ed espone gli avvisi dei manifest Plugin configurati (per esempio metadati di configurazione del canale mancanti), così i controlli smoke di installazione e aggiornamento li intercettano.gateway statuspredefinito mantiene il percorso rapido in sola lettura che salta la convalida dei Plugin.- L’output umano include il percorso del log su file risolto più l’istantanea dei percorsi/validità della configurazione CLI-vs-servizio per aiutare a diagnosticare la deriva di profilo o state-dir.
Controlli di deriva dell'autenticazione systemd Linux
Controlli di deriva dell'autenticazione systemd Linux
- Nelle installazioni systemd Linux, i controlli di deriva dell’autenticazione del servizio leggono sia i valori
Environment=siaEnvironmentFile=dall’unità (inclusi%h, percorsi quotati, più file e file opzionali-). - I controlli di deriva risolvono i SecretRef
gateway.auth.tokenusando l’env di runtime unito (prima l’env del comando del servizio, poi il fallback dell’env di processo). - Se l’autenticazione tramite token non è effettivamente attiva (
gateway.auth.modeesplicito pari apassword/none/trusted-proxy, oppure modalità non impostata dove la password può prevalere e nessun candidato token può prevalere), i controlli di deriva del token saltano la risoluzione del token di configurazione.
gateway probe
gateway probe è il comando “debug di tutto”. Esegue sempre il probe di:
- il tuo Gateway remoto configurato (se impostato), e
- localhost (loopback) anche se il remoto è configurato.
--url, quella destinazione esplicita viene aggiunta prima di entrambe. L’output umano etichetta le destinazioni come:
URL (explicit)Remote (configured)oRemote (configured, inactive)Local loopback
Se sono raggiungibili più Gateway, li stampa tutti. Più Gateway sono supportati quando usi profili/porte isolati (ad esempio, un bot di soccorso), ma la maggior parte delle installazioni esegue comunque un solo Gateway.
Interpretazione
Interpretazione
Reachable: yessignifica che almeno una destinazione ha accettato una connessione WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlysegnala ciò che il probe ha potuto verificare sull’autenticazione. È separato dalla raggiungibilità.Read probe: oksignifica che anche le chiamate RPC di dettaglio con ambito di lettura (health/status/system-presence/config.get) sono riuscite.Read probe: limited - missing scope: operator.readsignifica che la connessione è riuscita, ma l’RPC con ambito di lettura è limitato. Questo viene segnalato come raggiungibilità degradata, non come fallimento completo.Read probe: faileddopoConnect: oksignifica che il Gateway ha accettato la connessione WebSocket, ma la diagnostica di lettura successiva è andata in timeout o è fallita. Anche questa è raggiungibilità degradata, non un Gateway non raggiungibile.- Come
gateway status, il probe riutilizza l’autenticazione dispositivo esistente nella cache ma non crea un’identità dispositivo iniziale o uno stato di abbinamento. - Il codice di uscita è diverso da zero solo quando nessuna destinazione sottoposta a probe è raggiungibile.
Output JSON
Output JSON
Livello superiore:
ok: almeno una destinazione è raggiungibile.degraded: almeno una destinazione ha accettato una connessione ma non ha completato la diagnostica RPC di dettaglio completa.capability: migliore capacità vista tra le destinazioni raggiungibili (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeounknown).primaryTargetId: migliore destinazione da trattare come vincitore attivo in questo ordine: URL esplicito, tunnel SSH, remoto configurato, quindi local loopback.warnings[]: record di avviso best-effort concode,messageetargetIdsopzionali.network: suggerimenti di URL local loopback/tailnet derivati dalla configurazione corrente e dalla rete dell’host.discovery.timeoutMsediscovery.count: il budget/numero di risultati di discovery effettivamente usato per questo passaggio di probe.
targets[].connect):ok: raggiungibilità dopo connessione + classificazione degradata.rpcOk: successo RPC di dettaglio completo.scopeLimited: RPC di dettaglio fallito a causa dell’ambito operatore mancante.
targets[].auth):role: ruolo di autenticazione segnalato inhello-okquando disponibile.scopes: ambiti concessi segnalati inhello-okquando disponibili.capability: classificazione della capacità di autenticazione esposta per quella destinazione.
Codici di avviso comuni
Codici di avviso comuni
ssh_tunnel_failed: configurazione del tunnel SSH fallita; il comando è tornato ai probe diretti.multiple_gateways: più di una destinazione era raggiungibile; è insolito a meno che tu non stia eseguendo intenzionalmente profili isolati, come un bot di soccorso.auth_secretref_unresolved: un SecretRef di autenticazione configurato non poteva essere risolto per una destinazione fallita.probe_scope_limited: connessione WebSocket riuscita, ma il probe di lettura era limitato dalla mancanza dioperator.read.
Remoto via SSH (parità app Mac)
La modalità “Remote over SSH” dell’app macOS usa un port-forward locale in modo che il Gateway remoto (che potrebbe essere associato solo a loopback) diventi raggiungibile suws://127.0.0.1:<port>.
Equivalente CLI:
user@host o user@host:port (la porta predefinita è 22).File di identità.
Sceglie il primo host Gateway rilevato come destinazione SSH dall’endpoint di discovery risolto (
local. più il dominio wide-area configurato, se presente). I suggerimenti solo TXT vengono ignorati.gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC di basso livello.
Stringa oggetto JSON per i parametri.
URL WebSocket del Gateway.
Token del Gateway.
Password del Gateway.
Budget di timeout.
Principalmente per RPC in stile agent che trasmettono eventi intermedi prima di un payload finale.
Output JSON leggibile dalla macchina.
--params deve essere JSON valido.Gestire il servizio Gateway
Installare con un wrapper
Usa--wrapper quando il servizio gestito deve avviarsi tramite un altro eseguibile, per esempio uno
shim di gestione dei segreti o un helper run-as. Il wrapper riceve gli argomenti normali del Gateway ed è
responsabile di eseguire infine openclaw o Node con quegli argomenti.
gateway install convalida che il percorso sia
un file eseguibile, scrive il wrapper in ProgramArguments del servizio e persiste
OPENCLAW_WRAPPER nell’ambiente del servizio per successive reinstallazioni forzate, aggiornamenti e
riparazioni tramite doctor.
OPENCLAW_WRAPPER durante la reinstallazione:
Opzioni dei comandi
Opzioni dei comandi
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--skip-deferral,--force,--wait <duration>,--jsongateway uninstall|start:--jsongateway stop:--disable,--json
Comportamento del ciclo di vita
Comportamento del ciclo di vita
- Usa
gateway restartper riavviare un servizio gestito. Non concatenaregateway stopegateway startcome sostituto del riavvio. - Su macOS,
gateway stopusalaunchctl bootoutper impostazione predefinita, che rimuove il LaunchAgent dalla sessione di avvio corrente senza rendere persistente una disabilitazione — il ripristino automatico KeepAlive rimane attivo per arresti anomali futuri egateway startlo riabilita in modo pulito senza unlaunchctl enablemanuale. Passa--disableper sopprimere in modo persistente KeepAlive e RunAtLoad affinché il Gateway non si riavvii fino al successivogateway startesplicito; usalo quando un arresto manuale deve sopravvivere a riavvii o riavvii del sistema. gateway restart --safechiede al Gateway in esecuzione di eseguire un controllo preliminare del lavoro OpenClaw attivo e di rinviare il riavvio finché la consegna delle risposte, le esecuzioni incorporate e le esecuzioni delle attività non si svuotano.--safenon può essere combinato con--forceo--wait.gateway restart --wait 30ssovrascrive il budget di svuotamento del riavvio configurato per quel riavvio. I numeri senza unità sono millisecondi; sono accettate unità comes,meh.--wait 0attende indefinitamente.gateway restart --safe --skip-deferralesegue il riavvio sicuro consapevole di OpenClaw ma aggira il gate di rinvio, quindi il Gateway emette immediatamente il riavvio anche quando vengono segnalati blocchi. Via d’uscita per l’operatore per rinvii di esecuzioni di attività bloccate; richiede--safe.gateway restart --forcesalta lo svuotamento del lavoro attivo e riavvia immediatamente. Usalo quando un operatore ha già ispezionato i blocchi di attività elencati e vuole ripristinare subito il gateway.- I comandi del ciclo di vita accettano
--jsonper lo scripting.
Auth e SecretRefs al momento dell'installazione
Auth e SecretRefs al momento dell'installazione
- Quando l’autenticazione tramite token richiede un token e
gateway.auth.tokenè gestito da SecretRef,gateway installverifica che il SecretRef sia risolvibile ma non persiste il token risolto nei metadati dell’ambiente del servizio. - Se l’autenticazione tramite token richiede un token e il SecretRef del token configurato non è risolto, l’installazione fallisce in modo chiuso invece di persistere testo normale di fallback.
- Per l’autenticazione tramite password su
gateway run, preferisciOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordsupportato da SecretRef rispetto a--passwordinline. - In modalità di autenticazione inferita,
OPENCLAW_GATEWAY_PASSWORDsolo shell non allenta i requisiti del token di installazione; usa una configurazione durevole (gateway.auth.passwordoenvdi configurazione) quando installi un servizio gestito. - Se sono configurati sia
gateway.auth.tokensiagateway.auth.passwordegateway.auth.modenon è impostato, l’installazione viene bloccata finché la modalità non viene impostata esplicitamente.
Rilevare gateway (Bonjour)
gateway discover esegue la scansione dei beacon del Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): scegli un dominio (esempio:
openclaw.internal.) e configura split DNS + un server DNS; vedi Bonjour.
role(suggerimento sul ruolo del gateway)transport(suggerimento sul trasporto, ad esempiogateway)gatewayPort(porta WebSocket, solitamente18789)sshPort(solo modalità di rilevamento completa; i client impostano per impostazione predefinita i target SSH su22quando è assente)tailnetDns(nome host MagicDNS, quando disponibile)gatewayTls/gatewayTlsSha256(TLS abilitato + impronta digitale del certificato)cliPath(solo modalità di rilevamento completa)
gateway discover
Timeout per comando (browse/resolve).
Output leggibile dalla macchina (disabilita anche stile/spinner).
- La CLI esegue la scansione di
local.più il dominio wide-area configurato quando ne è abilitato uno. wsUrlnell’output JSON deriva dall’endpoint del servizio risolto, non da suggerimenti solo TXT comelanHostotailnetDns.- Su mDNS
local.e DNS-SD wide-area,sshPortecliPathvengono pubblicati solo quandodiscovery.mdns.modeèfull.