CLI commands
QR
openclaw qr
Gere um código QR de pareamento móvel e um código de configuração usando a configuração atual do Gateway.
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --limitedopenclaw qr --url wss://gateway.example/wsOs aplicativos oficiais do OpenClaw para iOS e Android se conectam automaticamente quando os metadados do código de configuração correspondem. Se uma solicitação permanecer pendente (por exemplo, para um cliente não oficial ou com metadados incompatíveis), revise-a e aprove-a:
openclaw devices listopenclaw devices approve <requestId>Opções
--remote: dá preferência agateway.remote.url; usagateway.tailscale.mode=serve|funnelcomo alternativa se essa URL não estiver definida. Ignoradevice-pairdo PluginpublicUrl.--url <url>: substitui a URL do gateway usada na carga útil--public-url <url>: substitui a URL pública usada na carga útil--token <token>: substitui o token do gateway no qual o fluxo de bootstrap se autentica--password <password>: substitui a senha do gateway com a qual o fluxo de bootstrap se autentica--limited: omite o acesso administrativo ao Gateway do token de operador transferido--setup-code-only: exibe apenas o código de configuração--no-ascii: ignora a renderização do código QR em ASCII--json: emite JSON (setupCode,gatewayUrl,gatewayUrlsopcional,auth,access,accessDowngradedopcional,urlSource)
--token e --password são mutuamente exclusivos.
Conteúdo do código de configuração
O código de configuração contém um bootstrapToken opaco e de curta duração, não o token/senha compartilhado do gateway. Para um endpoint wss:// (ou loopback no mesmo host), o fluxo de bootstrap padrão emite:
- um token
nodeprimário comscopes: [] - um token de transferência
operatorcompleto para dispositivos móveis nativos comoperator.admin,operator.approvals,operator.read,operator.talk.secretseoperator.write
Use --limited para manter o mesmo token do nó, omitindo operator.admin da transferência para o operador. O escopo de mutação de pareamento nunca é transferido por um código de configuração.
A configuração de ws:// em texto simples na LAN continua disponível, mas o OpenClaw usa automaticamente
o perfil limitado porque um observador da rede poderia capturar o token de
bootstrap do portador e antecipar seu uso. Configure wss:// ou o Tailscale Serve e gere um novo código
para obter acesso completo.
Resolução da URL do Gateway
O pareamento móvel falha de forma segura para URLs de gateway ws:// públicas/do Tailscale: use o Tailscale Serve/Funnel ou uma URL de gateway wss:// nesses casos. Endereços privados de LAN e hosts Bonjour .local continuam compatíveis por ws:// simples, com acesso limitado do operador conforme descrito acima.
Quando a URL selecionada do Gateway vem de gateway.bind=lan, o OpenClaw também verifica rotas tailscale serve status --json persistentes. Qualquer raiz HTTPS do Serve que encaminhe por proxy para a porta de loopback do Gateway ativo é incluída como alternativa. O comando QR adiciona essa alternativa apenas para lan; custom e tailnet mantêm suas rotas anunciadas explicitamente. Os clientes iOS atuais testam as rotas anunciadas na ordem e salvam a primeira que estiver acessível; o campo legado url permanece inalterado para clientes mais antigos.
Com --remote, é obrigatório fornecer gateway.remote.url ou gateway.tailscale.mode=serve|funnel.
Resolução de autenticação (sem --remote)
Quando nenhuma substituição de autenticação da CLI é fornecida, as SecretRefs de autenticação do gateway local são resolvidas da seguinte forma:
| Condição | Resolve para |
|---|---|
gateway.auth.mode="token", ou modo inferido sem uma fonte de senha prevalecente |
gateway.auth.token |
gateway.auth.mode="password", ou modo inferido sem um token prevalecente da autenticação/do ambiente |
gateway.auth.password |
gateway.auth.token e gateway.auth.password estão configurados (incluindo SecretRefs) e gateway.auth.mode não está definido |
falha; defina gateway.auth.mode explicitamente |
Resolução de autenticação (--remote)
Se credenciais remotas efetivamente ativas estiverem configuradas como SecretRefs e nem --token nem --password forem fornecidos, o comando as resolverá a partir do snapshot ativo do gateway. Se o gateway estiver indisponível, o comando falhará imediatamente.