CLI commands
Gateway
Il Gateway è il server WebSocket di OpenClaw (canali, nodi, sessioni, hook). I sottocomandi in questa pagina si trovano sotto openclaw gateway ….
Configurazione mDNS locale + DNS-SD ad ampia area.
Come OpenClaw pubblicizza e trova i gateway.
Chiavi di configurazione gateway di livello superiore.
Eseguire il Gateway
Esegui un processo Gateway locale:
openclaw gateway
Alias in primo piano:
openclaw gateway run
Startup behavior
- 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 setupdevono scriveregateway.mode=local. Se il file esiste magateway.modemanca, trattalo come una configurazione rotta o sovrascritta e riparala invece di presumere implicitamente la modalità locale.- Se il file esiste e
gateway.modemanca, il Gateway lo considera un danno sospetto alla configurazione e rifiuta di "indovinare local" per te. - Il binding oltre il loopback senza autenticazione è bloccato (protezione di sicurezza).
SIGUSR1attiva un riavvio in-process quando autorizzato (commands.restartè abilitato per impostazione predefinita; impostacommands.restart: falseper bloccare il riavvio manuale, mentre applicazione/aggiornamento di strumenti/configurazione del gateway restano consentiti).- I gestori
SIGINT/SIGTERMarrestano il processo gateway, ma non ripristinano alcuno stato personalizzato del terminale. Se avvolgi 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 viene da configurazione/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 + workspace di sviluppo se mancano (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 solo i log del backend CLI nella console (e abilita stdout/stderr).
"--ws-log--compactbooleanAlias per --ws-log compact.
--raw-streambooleanRegistra gli eventi raw dello stream del modello in jsonl.
Riavviare il Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe chiede al Gateway in esecuzione di eseguire un controllo preliminare del lavoro OpenClaw attivo prima del riavvio. Se sono attive operazioni in coda, consegna delle risposte, esecuzioni incorporate o esecuzioni di attività, il Gateway segnala i blocchi, unisce le richieste duplicate di riavvio sicuro e riavvia quando il lavoro attivo si esaurisce. Il semplice restart mantiene il comportamento esistente del service manager per compatibilità. Usa --force solo quando vuoi esplicitamente il percorso di override immediato.
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, manifest registry, 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 da 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 dei tempi delle tabelle di lookup dei plugin.
Interrogare un Gateway in esecuzione
Tutti i comandi di query usano WebSocket RPC.
Output modes
- Predefinito: leggibile da persone (colorato in TTY).
--json: JSON leggibile da macchine (senza stile/spinner).--no-color(oNO_COLOR=1): disabilita ANSI mantenendo il layout per persone.
Shared options
--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:18789
L'endpoint HTTP /healthz è una sonda di liveness: restituisce una risposta quando il server può rispondere via HTTP. L'endpoint HTTP /readyz è più rigoroso e resta rosso mentre sidecar di plugin di avvio, canali o hook configurati si stanno ancora stabilizzando. Le risposte dettagliate di readiness 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 dei costi d'uso dai log di sessione.
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
Recupera il registratore diagnostico di stabilità recente da un Gateway in esecuzione.
openclaw gateway stability
openclaw gateway stability --type payload.large
openclaw gateway stability --bundle latest
openclaw gateway stability --bundle latest --export
openclaw gateway stability --json
OPENCLAW_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 and bundle behavior
- I record conservano metadati operativi: nomi evento, conteggi, dimensioni in byte, letture di memoria, stato di coda/sessione, nomi di canali/plugin e riepiloghi di sessione redatti. Non conservano testo di chat, corpi webhook, output di strumenti, corpi raw di richieste o risposte, token, cookie, valori segreti, nomi host o id raw di sessione. Imposta
diagnostics.enabled: falseper disabilitare completamente il registratore. - In caso di uscite fatali del Gateway, timeout di spegnimento e fallimenti di avvio dopo riavvio, OpenClaw scrive lo stesso snapshot diagnostico in
~/.openclaw/logs/stability/openclaw-stability-*.jsonquando il registratore 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
Scrivi uno zip di diagnostica locale progettato per essere allegato alle segnalazioni di bug. Per il modello di privacy e i contenuti del bundle, consulta Esportazione diagnostica.
openclaw gateway diagnostics export
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
openclaw 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, forma della configurazione, dettagli di configurazione sanificati, riepiloghi dei log sanificati, snapshot di stato/salute del Gateway sanificati e il bundle di stabilità più recente quando esiste.
È pensata per essere condivisa. Conserva dettagli operativi che aiutano il debug, come campi sicuri dei log OpenClaw, 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 di chat, corpi webhook, output di strumenti, credenziali, cookie, identificatori 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 conserva solo il fatto che un messaggio è stato omesso più il suo conteggio di byte.
gateway status
gateway status mostra il servizio Gateway (launchd/systemd/schtasks) più una sonda opzionale di capacità di connettività/autenticazione.
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanSalta la sonda di connettivita (vista solo del servizio).
--deepbooleanAnalizza anche i servizi a livello di sistema.
--require-rpcbooleanPromuove la sonda di connettivita predefinita a una sonda di lettura ed esce con codice diverso da zero quando tale sonda di lettura fallisce. Non puo essere combinato con --no-probe.
Status semantics
gateway statusresta disponibile per la diagnostica anche quando la configurazione della CLI locale manca o non e valida.gateway statuspredefinito verifica lo stato del servizio, la connessione WebSocket e la capacita di autenticazione visibile al momento dell'handshake. Non verifica le operazioni di lettura/scrittura/amministrazione.- Le sonde diagnostiche non modificano l'autenticazione del dispositivo al primo utilizzo: riutilizzano un token dispositivo memorizzato nella cache quando esiste, ma non creano una nuova identita dispositivo della CLI ne un record di associazione dispositivo in sola lettura solo per controllare lo stato.
gateway statusrisolve i SecretRef di autenticazione configurati per l'autenticazione della sonda quando possibile.- Se un SecretRef di autenticazione richiesto non viene risolto in questo percorso di comando,
gateway status --jsonriportarpc.authWarningquando connettivita/autenticazione della sonda fallisce; passa esplicitamente--token/--passwordoppure risolvi prima l'origine del segreto. - Se la sonda riesce, gli avvisi di riferimento di autenticazione non risolto vengono soppressi per evitare falsi positivi.
- Usa
--require-rpcin script e automazione quando un servizio in ascolto non basta e ti serve che anche le chiamate RPC con ambito di lettura siano integre. --deepaggiunge una scansione best-effort per installazioni aggiuntive launchd/systemd/schtasks. Quando vengono rilevati piu servizi simili al 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 consegne del riavvio del supervisore Gateway quando il processo del servizio e terminato correttamente per un riavvio del supervisore esterno.- L'output umano include il percorso risolto del file di log piu l'istantanea dei percorsi/validita della configurazione CLI rispetto al servizio per aiutare a diagnosticare divergenze di profilo o directory di stato.
Linux systemd auth-drift checks
- Nelle installazioni Linux systemd, i controlli di deriva dell'autenticazione del servizio leggono sia i valori
Environment=siaEnvironmentFile=dall'unita (inclusi%h, percorsi tra virgolette, file multipli e file opzionali-). - I controlli di deriva risolvono i SecretRef
gateway.auth.tokenusando l'ambiente di runtime unito (prima l'ambiente del comando del servizio, poi il fallback all'ambiente del processo). - Se l'autenticazione tramite token non e effettivamente attiva (
gateway.auth.modeesplicito dipassword/none/trusted-proxy, oppure modalita non impostata in cui la password puo prevalere e nessun candidato token puo prevalere), i controlli di deriva del token saltano la risoluzione del token di configurazione.
gateway probe
gateway probe e il comando "debug di tutto". Sonda sempre:
- il tuo gateway remoto configurato (se impostato), e
- localhost (loopback) anche se e configurato un remoto.
Se passi --url, quel target esplicito viene aggiunto prima di entrambi. L'output umano etichetta i target come:
URL (explicit)Remote (configured)oRemote (configured, inactive)Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretation
Reachable: yessignifica che almeno un target ha accettato una connessione WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyriporta cio che la sonda ha potuto verificare sull'autenticazione. E separato dalla raggiungibilita.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 e riuscita ma l'RPC con ambito di lettura e limitato. Questo viene riportato come raggiungibilita degradata, non come errore completo.Read probe: faileddopoConnect: oksignifica che il Gateway ha accettato la connessione WebSocket, ma la diagnostica di lettura successiva e scaduta o non e riuscita. Anche questa e raggiungibilita degradata, non un Gateway irraggiungibile.- Come
gateway status, la sonda riutilizza l'autenticazione dispositivo memorizzata nella cache esistente ma non crea identita dispositivo o stato di associazione al primo utilizzo. - Il codice di uscita e diverso da zero solo quando nessun target sondato e raggiungibile.
JSON output
Livello superiore:
ok: almeno un target e raggiungibile.degraded: almeno un target ha accettato una connessione ma non ha completato la diagnostica RPC dettagliata completa.capability: migliore capacita vista tra i target raggiungibili (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeounknown).primaryTargetId: miglior target 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 URL local loopback/tailnet derivati dalla configurazione corrente e dalla rete dell'host.discovery.timeoutMsediscovery.count: budget di scoperta effettivo/conteggio dei risultati usato per questo passaggio della sonda.
Per target (targets[].connect):
ok: raggiungibilita dopo connessione + classificazione degradata.rpcOk: successo RPC dettagliato completo.scopeLimited: RPC dettagliato fallito a causa dell'assenza dell'ambito operatore.
Per target (targets[].auth):
role: ruolo di autenticazione riportato inhello-okquando disponibile.scopes: ambiti concessi riportati inhello-okquando disponibili.capability: classificazione della capacita di autenticazione esposta per quel target.
Common warning codes
ssh_tunnel_failed: configurazione del tunnel SSH fallita; il comando e tornato alle sonde dirette.multiple_gateways: piu di un target era raggiungibile; e insolito a meno che tu non esegua intenzionalmente profili isolati, come un bot di soccorso.auth_secretref_unresolved: un SecretRef di autenticazione configurato non ha potuto essere risolto per un target fallito.probe_scope_limited: connessione WebSocket riuscita, ma la sonda di lettura e stata limitata dall'assenza dioperator.read.
Remoto via SSH (parita app Mac)
La modalita "Remote over SSH" dell'app macOS usa un port-forward locale affinche 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-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host o user@host:port (la porta predefinita e 22).
--ssh-autobooleanSceglie il primo host gateway scoperto come target SSH dall'endpoint di scoperta risolto (local. piu il dominio geografico configurato, se presente). I suggerimenti solo TXT vengono ignorati.
Configurazione (opzionale, usata come valori predefiniti):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC di basso livello.
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanPrincipalmente per RPC in stile agente che trasmettono eventi intermedi prima di un payload finale.
--jsonbooleanOutput JSON leggibile dalla macchina.
Gestire il servizio Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
Installare con un wrapper
Usa --wrapper quando il servizio gestito deve avviarsi tramite un altro eseguibile, ad esempio uno
shim di gestione dei segreti o un helper run-as. Il wrapper riceve i normali argomenti del Gateway ed e
responsabile di eseguire infine openclaw o Node con quegli argomenti.
cat > ~/.local/bin/openclaw-doppler <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
exec doppler run --project my-project --config production -- openclaw "$@"
EOF
chmod +x ~/.local/bin/openclaw-doppler
openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --force
openclaw gateway restart
Puoi impostare il wrapper anche tramite l'ambiente. gateway install verifica che il percorso sia
un file eseguibile, scrive il wrapper in ProgramArguments del servizio e persiste
OPENCLAW_WRAPPER nell'ambiente del servizio per reinstallazioni forzate, aggiornamenti e riparazioni
doctor successivi.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
Per rimuovere un wrapper persistito, svuota OPENCLAW_WRAPPER durante la reinstallazione:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
Command options
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--force,--wait <duration>,--jsongateway uninstall|start|stop:--json
Lifecycle behavior
- Usa
gateway restartper riavviare un servizio gestito. Non concatenaregateway stopegateway startcome sostituto del riavvio; su macOS,gateway stopdisabilita intenzionalmente il LaunchAgent prima di arrestarlo. gateway restart --safechiede al Gateway in esecuzione di eseguire il preflight del lavoro OpenClaw attivo e rimandare il riavvio fino allo svuotamento della consegna delle risposte, delle esecuzioni incorporate e delle esecuzioni dei task.--safenon puo essere combinato con--forceo--wait.gateway restart --wait 30ssostituisce il budget configurato di svuotamento del riavvio per quel riavvio. I numeri senza unita sono millisecondi; sono accettate unita comes,meh.--wait 0attende indefinitamente.gateway restart --forcesalta lo svuotamento del lavoro attivo e riavvia immediatamente. Usalo quando un operatore ha gia ispezionato i blocchi di task elencati e vuole ripristinare subito il gateway.- I comandi di ciclo di vita accettano
--jsonper gli script.
Autenticazione e SecretRefs al momento dell'installazione
- Quando l'autenticazione tramite token richiede un token e
gateway.auth.tokenè gestito da SecretRef,gateway installconvalida che il SecretRef sia risolvibile, ma non rende persistente 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 si blocca in modo sicuro invece di rendere persistente testo semplice di fallback.
- Per l'autenticazione tramite password su
gateway run, preferisciOPENCLAW_GATEWAY_PASSWORD,--password-fileogateway.auth.passwordsupportato da SecretRef rispetto a--passwordinline. - Nella modalità di autenticazione dedotta,
OPENCLAW_GATEWAY_PASSWORDsolo shell non allenta i requisiti del token di installazione; usa una configurazione durevole (gateway.auth.passwordoenvdella 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.
Individuare i gateway (Bonjour)
gateway discover esegue la scansione dei beacon Gateway (_openclaw-gw._tcp).
- DNS-SD multicast:
local. - DNS-SD unicast (Bonjour Wide-Area): scegli un dominio (esempio:
openclaw.internal.) e configura split DNS + un server DNS; vedi Bonjour.
Solo i gateway con individuazione Bonjour abilitata (impostazione predefinita) pubblicizzano il beacon.
I record di individuazione Wide-Area includono (TXT):
role(suggerimento sul ruolo del gateway)transport(suggerimento sul trasporto, ad es.gateway)gatewayPort(porta WebSocket, di solito18789)sshPort(facoltativo; i client usano per impostazione predefinita22come destinazione SSH quando è assente)tailnetDns(nome host MagicDNS, quando disponibile)gatewayTls/gatewayTlsSha256(TLS abilitato + fingerprint del certificato)cliPath(suggerimento di installazione remota scritto nella zona wide-area)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanOutput leggibile dalla macchina (disabilita anche stile/spinner).
Esempi:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'