CLI commands
QR
openclaw qr
Genera un codice QR di associazione per dispositivi mobili e un codice di configurazione dalla configurazione corrente del Gateway.
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --limitedopenclaw qr --url wss://gateway.example/wsLe app ufficiali OpenClaw per iOS e Android si connettono automaticamente quando i relativi metadati del codice di configurazione corrispondono. Se una richiesta rimane in sospeso (ad esempio, per un client non ufficiale o metadati non corrispondenti), esaminarla e approvarla:
openclaw devices listopenclaw devices approve <requestId>Opzioni
--remote: preferiscegateway.remote.url; ripiega sugateway.tailscale.mode=serve|funnelse tale URL non è impostato. Ignora il Plugindevice-pairpublicUrl.--url <url>: sostituisce l'URL del gateway utilizzato nel payload--public-url <url>: sostituisce l'URL pubblico utilizzato nel payload--token <token>: sostituisce il token del gateway rispetto al quale si autentica il flusso di bootstrap--password <password>: sostituisce la password del gateway rispetto alla quale si autentica il flusso di bootstrap--limited: omette l'accesso amministrativo al Gateway dal token dell'operatore trasferito--setup-code-only: stampa solo il codice di configurazione--no-ascii: ignora il rendering ASCII del codice QR--json: emette JSON (setupCode,gatewayUrl,gatewayUrlsfacoltativo,auth,access,accessDowngradedfacoltativo,urlSource)
--token e --password si escludono a vicenda.
Contenuto del codice di configurazione
Il codice di configurazione contiene un bootstrapToken opaco e di breve durata, non il token o la password condivisi del gateway. Per un endpoint wss:// (o un loopback sullo stesso host), il flusso di bootstrap predefinito emette:
- un token
nodeprincipale conscopes: [] - un token di trasferimento
operatorcompleto per dispositivi mobili nativi conoperator.admin,operator.approvals,operator.read,operator.talk.secretseoperator.write
Utilizzare --limited per mantenere lo stesso token del nodo omettendo operator.admin dal trasferimento all'operatore. L'ambito di modifica dell'associazione non viene mai trasferito tramite un codice di configurazione.
La configurazione ws:// in testo non crittografato sulla LAN rimane disponibile, ma OpenClaw utilizza automaticamente
il profilo limitato perché un osservatore della rete potrebbe acquisire il token
bearer di bootstrap e anticiparne l'uso. Configurare wss:// o Tailscale Serve, quindi generare un nuovo codice
per ottenere l'accesso completo.
Risoluzione dell'URL del Gateway
L'associazione per dispositivi mobili si interrompe in modo sicuro per gli URL del gateway ws:// Tailscale/pubblici: per tali URL, utilizzare Tailscale Serve/Funnel o un URL del gateway wss://. Gli indirizzi LAN privati e gli host Bonjour .local rimangono supportati tramite ws:// non crittografato, con accesso limitato per l'operatore come descritto sopra.
Quando l'URL del Gateway selezionato proviene da gateway.bind=lan, OpenClaw verifica anche le route tailscale serve status --json persistenti. Qualsiasi root HTTPS Serve che inoltri tramite proxy la porta di loopback del Gateway attivo viene inclusa come fallback. Il comando QR aggiunge questo fallback solo per lan; custom e tailnet mantengono le route pubblicizzate esplicitamente. I client iOS correnti verificano le route pubblicizzate nell'ordine indicato e salvano la prima raggiungibile; il campo legacy url rimane invariato per i client meno recenti.
Con --remote, è richiesto uno tra gateway.remote.url e gateway.tailscale.mode=serve|funnel.
Risoluzione dell'autenticazione (senza --remote)
Quando non viene specificata alcuna sostituzione dell'autenticazione tramite CLI, i SecretRef dell'autenticazione del gateway locale vengono risolti come segue:
| Condizione | Risoluzione |
|---|---|
gateway.auth.mode="token" oppure modalità dedotta senza alcuna origine della password prevalente |
gateway.auth.token |
gateway.auth.mode="password" oppure modalità dedotta senza alcun token prevalente dall'autenticazione o dall'ambiente |
gateway.auth.password |
Sono configurati sia gateway.auth.token sia gateway.auth.password (inclusi i SecretRef) e gateway.auth.mode non è impostato |
non riesce; impostare esplicitamente gateway.auth.mode |
Risoluzione dell'autenticazione (--remote)
Se le credenziali remote effettivamente attive sono configurate come SecretRef e non viene specificato né --token né --password, il comando le risolve dallo snapshot del gateway attivo. Se il gateway non è disponibile, il comando termina immediatamente con un errore.