CLI commands
Gateway
Il Gateway è il server WebSocket di OpenClaw (canali, nodi, sessioni, hook). I sottocomandi in questa pagina sono sotto openclaw gateway ….
Configurazione mDNS locale + DNS-SD wide-area.
Come OpenClaw pubblicizza e trova i gateway.
Chiavi di configurazione del gateway di livello superiore.
Eseguire il Gateway
Esegui un processo Gateway locale:
openclaw gatewayAlias in primo piano:
openclaw gateway runComportamento 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
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Porta WebSocket (il valore predefinito proviene da config/env; di solito 18789).
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Override del token (imposta anche OPENCLAW_GATEWAY_TOKEN per il processo).
"--password"--tailscale--tailscale-reset-on-exitbooleanReimposta la configurazione serve/funnel di Tailscale allo spegnimento.
--allow-unconfiguredbooleanConsenti 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.
--devbooleanCrea una configurazione di sviluppo + workspace se mancanti (salta BOOTSTRAP.md).
--resetbooleanReimposta configurazione di sviluppo + credenziali + sessioni + workspace (richiede --dev).
--forcebooleanTermina qualsiasi listener esistente sulla porta selezionata prima dell'avvio.
--verbosebooleanLog dettagliati.
--cli-backend-logsbooleanMostra nella console solo i log del backend CLI (e abilita stdout/stderr).
"--ws-log--compactbooleanAlias per --ws-log compact.
--raw-streambooleanRegistra gli eventi del flusso raw del modello in jsonl.
Riavviare il Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw 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
- 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.
Opzioni condivise
--url <url>: URL WebSocket del Gateway.--token <token>: token del Gateway.--password <password>: password del Gateway.--timeout <ms>: timeout/budget (varia per comando).--expect-final: attendi una risposta "final" (chiamate agente).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789L'endpoint HTTP /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.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --json"--daysgateway stability
Recupera il recorder diagnostico di stabilità recente da un Gateway in esecuzione.
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
Numero massimo di eventi recenti da includere (max 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Filtra per tipo di evento diagnostico, come payload.large o diagnostic.memory.pressure.
"--since-seq--bundle [path]stringLeggi 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.
--exportbooleanScrivi uno zip di diagnostica di supporto condivisibile invece di stampare i dettagli di stabilità.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Percorso di output per --export.
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.
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-bundlebooleanSalta la ricerca del bundle di stabilità persistito.
--jsonbooleanStampa il percorso scritto, la dimensione e il manifest come JSON.
L'esportazione contiene un manifest, un riepilogo Markdown, la forma della configurazione, dettagli di configurazione sanitizzati, riepiloghi dei log sanitizzati, snapshot sanitizzati di stato/health del Gateway e il bundle di stabilità più recente quando esiste.
È pensata per essere condivisa. Mantiene dettagli operativi che aiutano il debug, come campi di log OpenClaw sicuri, nomi dei sottosistemi, codici di stato, durate, modalità configurate, porte, ID plugin, ID provider, impostazioni di funzionalità non segrete e messaggi di log operativi redatti. Omette o redige testo delle chat, corpi webhook, output degli strumenti, credenziali, cookie, identificatori di account/messaggio, testo di prompt/istruzioni, nomi host e valori segreti. Quando un messaggio in stile LogTape sembra testo di payload utente/chat/strumento, l'esportazione mantiene solo l'indicazione che un messaggio è stato omesso più il relativo conteggio di byte.
gateway status
gateway status mostra il servizio Gateway (launchd/systemd/schtasks) più un probe facoltativo della capacità di connettività/autenticazione.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc"--url"--token"--password"--timeout--no-probebooleanSalta il probe di connettività (vista solo servizio).
--deepbooleanAnalizza anche i servizi a livello di sistema.
--require-rpcbooleanAggiorna 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
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
- 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.
Se passi --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
openclaw gateway probeopenclaw gateway probe --jsonInterpretazione
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
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.
Per destinazione (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.
Per destinazione (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
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 su ws://127.0.0.1:<port>.
Equivalente CLI:
openclaw gateway probe --ssh user@gateway-hostOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host o user@host:port (la porta predefinita è 22).
--ssh-autobooleanSceglie 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.
Configurazione (opzionale, usata come predefinita):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC di basso livello.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"sinceMs": 60000}'"--params"--url"--token"--password"--timeout--expect-finalbooleanPrincipalmente per RPC in stile agent che trasmettono eventi intermedi prima di un payload finale.
--jsonbooleanOutput JSON leggibile dalla macchina.
Gestire il servizio Gateway
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallInstallare 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.
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 restartPuoi impostare il wrapper anche tramite l'ambiente. 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="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctorPer rimuovere un wrapper persistito, svuota OPENCLAW_WRAPPER durante la reinstallazione:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restartOpzioni 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
- 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
- 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.
Solo i gateway con rilevamento Bonjour abilitato (impostazione predefinita) pubblicizzano il beacon.
I record di rilevamento wide-area possono includere questi suggerimenti TXT:
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
openclaw gateway discover"--timeout--jsonbooleanOutput leggibile dalla macchina (disabilita anche stile/spinner).
Esempi:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'