CLI Gateway
Il Gateway è il server WebSocket di OpenClaw (canali, nodi, sessioni, hook). I sottocomandi in questa pagina si trovano sottoopenclaw gateway ….
Documenti correlati:
Eseguire il Gateway
Esegui un processo Gateway locale:- Per impostazione predefinita, il Gateway rifiuta di avviarsi a meno che
gateway.mode=localnon sia 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, trattalo come una configurazione danneggiata o sovrascritta e riparalo 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 la modalità locale” per te. - Il binding oltre il local 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 gateway tool/config apply/update rimangono consentiti).- I gestori
SIGINT/SIGTERMarrestano il processo gateway, ma non ripristinano eventuali stati personalizzati del terminale. Se avvolgi la CLI con una TUI o un input raw-mode, ripristina il terminale prima dell’uscita.
Opzioni
--port <port>: porta WebSocket (il valore predefinito deriva da config/env; di solito18789).--bind <loopback|lan|tailnet|auto|custom>: modalità di bind del listener.--auth <token|password>: override della modalità di autenticazione.--token <token>: override del token (imposta ancheOPENCLAW_GATEWAY_TOKENper il processo).--password <password>: override della password. Avvertenza: le password inline possono essere esposte negli elenchi dei processi locali.--password-file <path>: legge la password del gateway da un file.--tailscale <off|serve|funnel>: espone il Gateway tramite Tailscale.--tailscale-reset-on-exit: ripristina la configurazione Tailscale serve/funnel all’arresto.--allow-unconfigured: consente l’avvio del gateway senzagateway.mode=localnella configurazione. Questo bypassa la protezione di avvio solo per bootstrap ad hoc/di sviluppo; non scrive né ripara il file di configurazione.--dev: crea una configurazione + workspace di sviluppo se mancano (salta BOOTSTRAP.md).--reset: reimposta configurazione di sviluppo + credenziali + sessioni + workspace (richiede--dev).--force: termina qualunque listener esistente sulla porta selezionata prima dell’avvio.--verbose: log verbosi.--cli-backend-logs: mostra nella console solo i log del backend CLI (e abilita stdout/stderr).--claude-cli-logs: alias deprecato di--cli-backend-logs.--ws-log <auto|full|compact>: stile dei log websocket (predefinitoauto).--compact: alias di--ws-log compact.--raw-stream: registra gli eventi raw del flusso del modello in jsonl.--raw-stream-path <path>: percorso jsonl del flusso raw.
Interrogare un Gateway in esecuzione
Tutti i comandi di interrogazione usano WebSocket RPC. Modalità di output:- Predefinita: leggibile da umani (colorata in TTY).
--json: JSON leggibile da macchina (senza styling/spinner).--no-color(oNO_COLOR=1): disabilita ANSI mantenendo il layout per umani.
--url <url>: URL WebSocket del Gateway.--token <token>: token del Gateway.--password <password>: password del Gateway.--timeout <ms>: timeout/budget (varia in base al comando).--expect-final: attende una risposta “final”.
--url, la CLI non usa fallback verso credenziali di configurazione o ambiente.
Passa esplicitamente --token o --password. L’assenza di credenziali esplicite è un errore.
gateway health
gateway usage-cost
Recupera riepiloghi dei costi di utilizzo dai log di sessione.
--days <days>: numero di giorni da includere (predefinito30).
gateway status
gateway status mostra il servizio Gateway (launchd/systemd/schtasks) più un probe RPC facoltativo.
--url <url>: aggiunge una destinazione di probe esplicita. Vengono comunque eseguiti probe del remoto configurato + localhost.--token <token>: autenticazione tramite token per il probe.--password <password>: autenticazione tramite password per il probe.--timeout <ms>: timeout del probe (predefinito10000).--no-probe: salta il probe RPC (vista solo servizio).--deep: esegue la scansione anche dei servizi a livello di sistema.--require-rpc: esce con valore non zero quando il probe RPC fallisce. Non può essere combinato con--no-probe.
gateway statusresta disponibile per la diagnostica anche quando la configurazione CLI locale manca o non è valida.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 --jsonriportarpc.authWarningquando la connettività/autenticazione del probe fallisce; passa esplicitamente--token/--passwordoppure risolvi prima l’origine del segreto. - Se il probe riesce, gli avvisi auth-ref non risolti vengono soppressi per evitare falsi positivi.
- Usa
--require-rpcnegli script e nell’automazione quando non basta che un servizio sia in ascolto e hai bisogno che anche l’RPC del Gateway sia integro. --deepaggiunge una scansione best-effort per ulteriori installazioni launchd/systemd/schtasks. Quando vengono rilevati più servizi simili a gateway, l’output per umani stampa suggerimenti di pulizia e avvisa che la maggior parte delle configurazioni dovrebbe eseguire un gateway per macchina.- L’output per umani include il percorso del log file risolto più l’istantanea dei percorsi/validità della configurazione CLI rispetto al servizio per aiutare a diagnosticare derive di profilo o state-dir.
- Nelle installazioni Linux systemd, i controlli di deriva dell’autenticazione del servizio leggono sia i valori
Environment=sia quelliEnvironmentFile=dall’unità (inclusi%h, percorsi tra virgolette, più file e file facoltativi-). - I controlli di deriva risolvono i SecretRef di
gateway.auth.tokenusando l’env di runtime unito (prima l’env del comando di servizio, poi il fallback all’env del processo). - Se l’autenticazione con token non è effettivamente attiva (esplicito
gateway.auth.modeimpostato supassword/none/trusted-proxy, oppure modalità non impostata dove può prevalere la password 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 “debugga tutto”. Esegue sempre probe su:
- il tuo gateway remoto configurato (se impostato), e
- localhost (loopback) anche se è configurato il remoto.
--url, quella destinazione esplicita viene aggiunta prima di entrambe. L’output per umani etichetta le
destinazioni come:
URL (explicit)Remote (configured)oRemote (configured, inactive)Local loopback
Reachable: yessignifica che almeno una destinazione ha accettato una connessione WebSocket.RPC: oksignifica che anche le chiamate RPC di dettaglio (health/status/system-presence/config.get) sono riuscite.RPC: limited - missing scope: operator.readsignifica che la connessione è riuscita ma le RPC di dettaglio sono limitate dagli scope. Questo viene segnalato come raggiungibilità degradata, non come errore completo.- Il codice di uscita è non zero solo quando nessuna destinazione sondata è raggiungibile.
--json):
- Livello superiore:
ok: almeno una destinazione è raggiungibile.degraded: almeno una destinazione aveva RPC di dettaglio limitate dagli scope.primaryTargetId: miglior destinazione da trattare come vincitore attivo in quest’ordine: URL esplicito, tunnel SSH, remoto configurato, poi local loopback.warnings[]: record di avviso best-effort concode,messageetargetIdsfacoltativi.network: suggerimenti di URL local loopback/tailnet derivati dalla configurazione corrente e dalla rete host.discovery.timeoutMsediscovery.count: budget/numero di risultati di discovery effettivamente usato per questo passaggio di probe.
- Per destinazione (
targets[].connect):ok: raggiungibilità dopo connect + classificazione degradata.rpcOk: successo completo delle RPC di dettaglio.scopeLimited: le RPC di dettaglio sono fallite per assenza dello scope operatore.
ssh_tunnel_failed: la 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 esegua intenzionalmente profili isolati, come un rescue bot.auth_secretref_unresolved: non è stato possibile risolvere un SecretRef di autenticazione configurato per una destinazione fallita.probe_scope_limited: la connessione WebSocket è riuscita, ma le RPC di dettaglio erano limitate dall’assenza dioperator.read.
Remoto tramite SSH (parità con app Mac)
La modalità “Remote over SSH” dell’app macOS usa un port-forward locale in modo che il gateway remoto (che può essere associato solo al loopback) diventi raggiungibile suws://127.0.0.1:<port>.
Equivalente CLI:
--ssh <target>:user@hostouser@host:port(la porta predefinita è22).--ssh-identity <path>: file di identità.--ssh-auto: sceglie come destinazione SSH il primo host gateway rilevato dall’endpoint di discovery risolto (local.più l’eventuale dominio wide-area configurato). I suggerimenti solo-TXT vengono ignorati.
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC di basso livello.
--params <json>: stringa oggetto JSON per i parametri (predefinito{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
--paramsdeve essere JSON valido.--expect-finalè pensato principalmente per RPC in stile agente che trasmettono eventi intermedi prima di un payload finale.
Gestire il servizio Gateway
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--force,--jsongateway uninstall|start|stop|restart:--json
gateway installsupporta--port,--runtime,--token,--force,--json.- 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 di servizio. - Se l’autenticazione tramite token richiede un token e il SecretRef del token configurato non è risolto, l’installazione fallisce in modalità chiusa invece di rendere persistente un fallback in chiaro.
- Per l’autenticazione tramite password su
gateway run, preferisciOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordsupportato da SecretRef invece di--passwordinline. - In modalità di autenticazione dedotta, il solo
OPENCLAW_GATEWAY_PASSWORDdi shell non allenta i requisiti del token per l’installazione; usa una configurazione durevole (gateway.auth.passwordo configenv) quando installi un servizio gestito. - Se sono configurati sia
gateway.auth.tokensiagateway.auth.passwordegateway.auth.modenon è impostato, l’installazione è bloccata finché la modalità non viene impostata esplicitamente. - I comandi del ciclo di vita accettano
--jsonper gli script.
Rilevare gateway (Bonjour)
gateway discover esegue una scansione dei beacon 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 /gateway/bonjour
role(suggerimento sul ruolo del gateway)transport(suggerimento sul trasporto, ad esempiogateway)gatewayPort(porta WebSocket, di solito18789)sshPort(facoltativa; i client usano22come destinazione SSH predefinita quando manca)tailnetDns(hostname MagicDNS, quando disponibile)gatewayTls/gatewayTlsSha256(TLS abilitato + fingerprint del certificato)cliPath(suggerimento di installazione remota scritto nella zona wide-area)
gateway discover
--timeout <ms>: timeout per comando (browse/resolve); predefinito2000.--json: output leggibile da macchina (disabilita anche styling/spinner).
- La CLI esegue la scansione di
local.più il dominio wide-area configurato quando è abilitato. wsUrlnell’output JSON deriva dall’endpoint di servizio risolto, non da suggerimenti solo-TXT comelanHostotailnetDns.- Su mDNS
local.,sshPortecliPathvengono trasmessi solo quandodiscovery.mdns.modeèfull. Il DNS-SD wide-area continua comunque a scriverecliPath;sshPortresta facoltativa anche lì.