CLI commands
QR
openclaw qr
Genera un código QR de vinculación móvil y un código de configuración a partir de la configuración actual del Gateway.
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --limitedopenclaw qr --url wss://gateway.example/wsLas aplicaciones oficiales de OpenClaw para iOS y Android se conectan automáticamente cuando coinciden los metadatos de sus códigos de configuración. Si una solicitud sigue pendiente (por ejemplo, para un cliente no oficial o debido a metadatos que no coinciden), revísala y apruébala:
openclaw devices listopenclaw devices approve <requestId>Opciones
--remote: da preferencia agateway.remote.url; recurre agateway.tailscale.mode=serve|funnelsi esa URL no está definida. Ignoradevice-pairdel pluginpublicUrl.--url <url>: reemplaza la URL del gateway utilizada en la carga útil--public-url <url>: reemplaza la URL pública utilizada en la carga útil--token <token>: reemplaza el token del gateway con el que se autentica el flujo de arranque--password <password>: reemplaza la contraseña del gateway con la que se autentica el flujo de arranque--limited: omite el acceso administrativo al Gateway del token de operador transferido--setup-code-only: imprime únicamente el código de configuración--no-ascii: omite la representación del código QR en ASCII--json: emite JSON (setupCode,gatewayUrl,gatewayUrlsopcional,auth,access,accessDowngradedopcional,urlSource)
--token y --password son mutuamente excluyentes.
Contenido del código de configuración
El código de configuración contiene un bootstrapToken opaco y de corta duración, no el token ni la contraseña compartidos del gateway. Para un punto de conexión wss:// (o un bucle invertido en el mismo host), el flujo de arranque predeterminado emite:
- un token
nodeprincipal conscopes: [] - un token de transferencia
operatorcompleto para dispositivos móviles nativos conoperator.admin,operator.approvals,operator.read,operator.talk.secretsyoperator.write
Utiliza --limited para conservar el mismo token de nodo y omitir operator.admin de la transferencia al operador. El ámbito de modificación de vinculaciones nunca se transfiere mediante un código de configuración.
La configuración de ws:// en texto sin formato a través de la LAN sigue disponible, pero OpenClaw utiliza automáticamente el perfil limitado porque un observador de la red podría capturar el token de portador de arranque y adelantarse en su uso. Configura wss:// o Tailscale Serve y, después, genera un código nuevo para obtener acceso completo.
Resolución de la URL del Gateway
La vinculación móvil aplica un cierre seguro para las URL de gateway ws:// de Tailscale o públicas: utiliza Tailscale Serve/Funnel o una URL de gateway wss:// para ellas. Las direcciones LAN privadas y los hosts Bonjour .local siguen siendo compatibles mediante ws:// sin cifrar, con acceso limitado del operador como se describe anteriormente.
Cuando la URL seleccionada del Gateway procede de gateway.bind=lan, OpenClaw también comprueba las rutas tailscale serve status --json persistentes. Cualquier raíz HTTPS de Serve que actúe como proxy del puerto de bucle invertido del Gateway activo se incluye como alternativa. El comando QR añade esta alternativa únicamente para lan; custom y tailnet conservan sus rutas anunciadas explícitamente. Los clientes actuales de iOS prueban las rutas anunciadas en orden y guardan la primera que sea accesible; el campo heredado url permanece sin cambios para los clientes antiguos.
Con --remote, se requiere gateway.remote.url o gateway.tailscale.mode=serve|funnel.
Resolución de autenticación (sin --remote)
Cuando no se proporciona ninguna sustitución de autenticación mediante la CLI, las SecretRefs de autenticación del gateway local se resuelven de la siguiente manera:
| Condición | Se resuelve como |
|---|---|
gateway.auth.mode="token", o modo inferido sin una fuente de contraseña prevalente |
gateway.auth.token |
gateway.auth.mode="password", o modo inferido sin un token prevalente de la autenticación o del entorno |
gateway.auth.password |
Tanto gateway.auth.token como gateway.auth.password están configurados (incluidas las SecretRefs) y gateway.auth.mode no está definido |
falla; define gateway.auth.mode explícitamente |
Resolución de autenticación (--remote)
Si las credenciales remotas efectivamente activas están configuradas como SecretRefs y no se proporciona ni --token ni --password, el comando las resuelve a partir de la instantánea del gateway activo. Si el gateway no está disponible, el comando falla de inmediato.