CLI commands

Gateway

Il Gateway è il server WebSocket di OpenClaw (canali, nodi, sessioni, hook). I sottocomandi in questa pagina si trovano sotto openclaw gateway ….

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=local sia impostato in ~/.openclaw/openclaw.json. Usa --allow-unconfigured per esecuzioni ad hoc/di sviluppo.
  • openclaw onboard --mode local e openclaw setup devono scrivere gateway.mode=local. Se il file esiste ma gateway.mode manca, trattalo come una configurazione rotta o sovrascritta e riparala invece di presumere implicitamente la modalità locale.
  • Se il file esiste e gateway.mode manca, 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).
  • SIGUSR1 attiva un riavvio in-process quando autorizzato (commands.restart è abilitato per impostazione predefinita; imposta commands.restart: false per bloccare il riavvio manuale, mentre applicazione/aggiornamento di strumenti/configurazione del gateway restano consentiti).
  • I gestori SIGINT/SIGTERM arrestano 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
"--auth

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu " type="string"> Override del token (imposta anche OPENCLAW_GATEWAY_TOKEN per il processo).

"--password
"--tailscale
--tailscale-reset-on-exitboolean

Reimposta la configurazione serve/funnel di Tailscale allo spegnimento.

--allow-unconfiguredboolean

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.

--devboolean

Crea una configurazione + workspace di sviluppo se mancano (salta BOOTSTRAP.md).

--resetboolean

Reimposta configurazione di sviluppo + credenziali + sessioni + workspace (richiede --dev).

--forceboolean

Termina qualsiasi listener esistente sulla porta selezionata prima dell'avvio.

--verboseboolean

Log dettagliati.

--cli-backend-logsboolean

Mostra solo i log del backend CLI nella console (e abilita stdout/stderr).

"--ws-log
--compactboolean

Alias per --ws-log compact.

--raw-streamboolean

Registra 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=1 per registrare i tempi delle fasi durante l'avvio del Gateway, inclusi il ritardo eventLoopMax per 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=timeline con OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path> per scrivere una timeline diagnostica di avvio JSONL best-effort per harness QA esterni. Puoi anche abilitare il flag con diagnostics.flags: ["timeline"] nella configurazione; il percorso è comunque fornito da env. Aggiungi OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 per includere campioni dell'event-loop.
  • Esegui pnpm test:startup:gateway -- --runs 5 --warmup 1 per 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 (o NO_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]string

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.

--exportboolean

Scrivi 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: false per 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-*.json quando il registratore ha eventi. Ispeziona il bundle più recente con openclaw gateway stability --bundle latest; --limit, --type e --since-seq si 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-bundleboolean

Salta la ricerca del bundle di stabilità persistito.

--jsonboolean

Stampa 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-probeboolean

Salta la sonda di connettivita (vista solo del servizio).

--deepboolean

Analizza anche i servizi a livello di sistema.

--require-rpcboolean

Promuove 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 status resta disponibile per la diagnostica anche quando la configurazione della CLI locale manca o non e valida.
  • gateway status predefinito 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 status risolve 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 --json riporta rpc.authWarning quando connettivita/autenticazione della sonda fallisce; passa esplicitamente --token/--password oppure 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-rpc in script e automazione quando un servizio in ascolto non basta e ti serve che anche le chiamate RPC con ambito di lettura siano integre.
  • --deep aggiunge 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.
  • --deep segnala 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= sia EnvironmentFile= dall'unita (inclusi %h, percorsi tra virgolette, file multipli e file opzionali -).
  • I controlli di deriva risolvono i SecretRef gateway.auth.token usando 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.mode esplicito di password/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) o Remote (configured, inactive)
  • Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretation
  • Reachable: yes significa che almeno un target ha accettato una connessione WebSocket.
  • Capability: read-only|write-capable|admin-capable|pairing-pending|connect-only riporta cio che la sonda ha potuto verificare sull'autenticazione. E separato dalla raggiungibilita.
  • Read probe: ok significa 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.read significa 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: failed dopo Connect: ok significa 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_scope o unknown).
  • 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 con code, message e targetIds opzionali.
  • network: suggerimenti URL local loopback/tailnet derivati dalla configurazione corrente e dalla rete dell'host.
  • discovery.timeoutMs e discovery.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 in hello-ok quando disponibile.
  • scopes: ambiti concessi riportati in hello-ok quando 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 di operator.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-autoboolean

Sceglie 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.sshTarget
  • gateway.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-finalboolean

Principalmente per RPC in stile agente che trasmettono eventi intermedi prima di un payload finale.

--jsonboolean

Output 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, --json
  • gateway install: --port, --runtime <node|bun>, --token, --wrapper <path>, --force, --json
  • gateway restart: --safe, --force, --wait <duration>, --json
  • gateway uninstall|start|stop: --json
Lifecycle behavior
  • Usa gateway restart per riavviare un servizio gestito. Non concatenare gateway stop e gateway start come sostituto del riavvio; su macOS, gateway stop disabilita intenzionalmente il LaunchAgent prima di arrestarlo.
  • gateway restart --safe chiede 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. --safe non puo essere combinato con --force o --wait.
  • gateway restart --wait 30s sostituisce il budget configurato di svuotamento del riavvio per quel riavvio. I numeri senza unita sono millisecondi; sono accettate unita come s, m e h. --wait 0 attende indefinitamente.
  • gateway restart --force salta 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 --json per 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 install convalida 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, preferisci OPENCLAW_GATEWAY_PASSWORD, --password-file o gateway.auth.password supportato da SecretRef rispetto a --password inline.
  • Nella modalità di autenticazione dedotta, OPENCLAW_GATEWAY_PASSWORD solo shell non allenta i requisiti del token di installazione; usa una configurazione durevole (gateway.auth.password o env della configurazione) quando installi un servizio gestito.
  • Se sono configurati sia gateway.auth.token sia gateway.auth.password e gateway.auth.mode non è 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 solito 18789)
  • sshPort (facoltativo; i client usano per impostazione predefinita 22 come 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
--jsonboolean

Output leggibile dalla macchina (disabilita anche stile/spinner).

Esempi:

openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'

Correlati