Panel (Control UI)
El panel del Gateway es la Control UI en el navegador servida en/ por defecto
(se sobrescribe con gateway.controlUi.basePath).
Apertura rápida (Gateway local):
Referencias clave:
- Control UI para el uso y las capacidades de la IU.
- Tailscale para la automatización de Serve/Funnel.
- Superficies web para los modos de enlace y las notas de seguridad.
connect.params.auth.tokenconnect.params.auth.password- encabezados de identidad de Tailscale Serve cuando
gateway.auth.allowTailscale: true - encabezados de identidad de proxy de confianza cuando
gateway.auth.mode: "trusted-proxy"
gateway.auth en Configuración del Gateway.
Nota de seguridad: la Control UI es una superficie de administración (chat, configuración, aprobaciones de exec).
No la expongas públicamente. La IU mantiene los tokens de URL del panel en sessionStorage
para la sesión actual de la pestaña del navegador y la URL del gateway seleccionada, y los elimina de la URL después de la carga.
Prefiere localhost, Tailscale Serve o un túnel SSH.
Ruta rápida (recomendada)
- Después del onboarding, la CLI abre automáticamente el panel e imprime un enlace limpio (sin token).
- Vuelve a abrirlo en cualquier momento:
openclaw dashboard(copia el enlace, abre el navegador si es posible y muestra una pista de SSH si no hay interfaz). - Si la IU solicita autenticación por secreto compartido, pega el token o la contraseña configurados en la configuración de Control UI.
Aspectos básicos de autenticación (local frente a remoto)
- Localhost: abre
http://127.0.0.1:18789/. - Origen del token de secreto compartido:
gateway.auth.token(oOPENCLAW_GATEWAY_TOKEN);openclaw dashboardpuede pasarlo mediante un fragmento de URL para un bootstrap de una sola vez, y la Control UI lo mantiene ensessionStoragepara la sesión actual de la pestaña del navegador y la URL del gateway seleccionada en lugar delocalStorage. - Si
gateway.auth.tokenestá gestionado por SecretRef,openclaw dashboardimprime/copia/abre por diseño una URL sin token. Esto evita exponer tokens gestionados externamente en logs del shell, historial del portapapeles o argumentos de lanzamiento del navegador. - Si
gateway.auth.tokenestá configurado como un SecretRef y no está resuelto en tu shell actual,openclaw dashboardsigue imprimiendo una URL sin token junto con instrucciones útiles para configurar la autenticación. - Contraseña de secreto compartido: usa la
gateway.auth.passwordconfigurada (oOPENCLAW_GATEWAY_PASSWORD). El panel no conserva contraseñas entre recargas. - Modos con identidad: Tailscale Serve puede satisfacer la autenticación de Control UI/WebSocket
mediante encabezados de identidad cuando
gateway.auth.allowTailscale: true, y un proxy inverso con reconocimiento de identidad no loopback puede satisfacergateway.auth.mode: "trusted-proxy". En esos modos, el panel no necesita que pegues un secreto compartido para el WebSocket. - No localhost: usa Tailscale Serve, un enlace no loopback con secreto compartido, un
proxy inverso no loopback con reconocimiento de identidad con
gateway.auth.mode: "trusted-proxy"o un túnel SSH. Las API HTTP siguen usando autenticación por secreto compartido a menos que ejecutes intencionadamentegateway.auth.mode: "none"para ingreso privado o autenticación HTTP de proxy de confianza. Consulta Superficies web.
Si ves “unauthorized” / 1008
- Asegúrate de que el gateway sea accesible (local:
openclaw status; remoto: túnel SSHssh -N -L 18789:127.0.0.1:18789 user@hosty luego abrehttp://127.0.0.1:18789/). - Para
AUTH_TOKEN_MISMATCH, los clientes pueden hacer un único reintento de confianza con un token de dispositivo en caché cuando el gateway devuelve pistas de reintento. Ese reintento con token en caché reutiliza los ámbitos aprobados almacenados en caché del token; los llamadores condeviceTokenexplícito /scopesexplícitos conservan el conjunto de ámbitos solicitado. Si la autenticación sigue fallando después de ese reintento, resuelve manualmente la desviación del token. - Fuera de esa ruta de reintento, la precedencia de autenticación de conexión es: primero token/contraseña compartidos explícitos, luego
deviceTokenexplícito, luego token de dispositivo almacenado y, por último, token de bootstrap. - En la ruta asíncrona de Control UI de Tailscale Serve, los intentos fallidos para el mismo
{scope, ip}se serializan antes de que el limitador de autenticación fallida los registre, por lo que el segundo reintento incorrecto concurrente ya puede mostrarretry later. - Para los pasos de reparación de la desviación del token, sigue la Lista de comprobación para la recuperación de desviación del token.
- Recupera o proporciona el secreto compartido desde el host del gateway:
- Token:
openclaw config get gateway.auth.token - Contraseña: resuelve la
gateway.auth.passwordconfigurada oOPENCLAW_GATEWAY_PASSWORD - Token gestionado por SecretRef: resuelve el proveedor de secretos externo o exporta
OPENCLAW_GATEWAY_TOKENen este shell y luego vuelve a ejecutaropenclaw dashboard - No hay secreto compartido configurado:
openclaw doctor --generate-gateway-token
- Token:
- En la configuración del panel, pega el token o la contraseña en el campo de autenticación y luego conecta.