Web interfaces
Painel
O painel do Gateway é a Interface de Controle no navegador servida em / por padrão
(substitua com gateway.controlUi.basePath).
Abertura rápida (Gateway local):
- http://127.0.0.1:18789/ (ou http://localhost:18789/)
- Com
gateway.tls.enabled: true, usehttps://127.0.0.1:18789/ewss://127.0.0.1:18789para o endpoint WebSocket.
Referências principais:
- Interface de Controle para uso e recursos da UI.
- Tailscale para automação de Serve/Funnel.
- Superfícies Web para modos de bind e notas de segurança.
A autenticação é aplicada no handshake WebSocket pelo caminho de autenticação do gateway configurado:
connect.params.auth.tokenconnect.params.auth.password- cabeçalhos de identidade do Tailscale Serve quando
gateway.auth.allowTailscale: true - cabeçalhos de identidade de proxy confiável quando
gateway.auth.mode: "trusted-proxy"
Veja gateway.auth em Configuração do Gateway.
Nota de segurança: a Interface de Controle é uma superfície de administração (chat, configuração, aprovações de execução). Não a exponha publicamente. A UI mantém tokens de URL do painel em sessionStorage para a sessão atual da aba do navegador e a URL do gateway selecionada, e os remove da URL após o carregamento. Prefira localhost, Tailscale Serve ou um túnel SSH.
Caminho rápido (recomendado)
- Após a integração inicial, a CLI abre automaticamente o painel e imprime um link limpo (sem token).
- Reabra a qualquer momento:
openclaw dashboard(copia o link, abre o navegador se possível, mostra dica de SSH se estiver sem interface gráfica). - Se a entrega por área de transferência e navegador falhar,
openclaw dashboardainda imprime a URL limpa e informa para usar o token deOPENCLAW_GATEWAY_TOKENougateway.auth.tokencomo a chave de fragmento de URLtoken; ele não imprime valores de token nos logs. - Se a UI solicitar autenticação por segredo compartilhado, cole o token ou a senha configurados nas configurações da Interface de Controle.
Noções básicas de autenticação (local vs remoto)
- Localhost: abra
http://127.0.0.1:18789/. - TLS do Gateway: quando
gateway.tls.enabled: true, links de painel/status usamhttps://e links WebSocket da Interface de Controle usamwss://. - Origem do token de segredo compartilhado:
gateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN);openclaw dashboardpode passá-lo via fragmento de URL para bootstrap único, e a Interface de Controle o mantém em sessionStorage para a sessão atual da aba do navegador e a URL do gateway selecionada em vez de localStorage. - Se
gateway.auth.tokenfor gerenciado por SecretRef,openclaw dashboardimprime/copia/abre uma URL sem token por design. Isso evita expor tokens gerenciados externamente em logs do shell, histórico da área de transferência ou argumentos de inicialização do navegador. - Se
gateway.auth.tokenestiver configurado como SecretRef e não for resolvido no seu shell atual,openclaw dashboardainda imprime uma URL sem token mais orientações acionáveis de configuração de autenticação. - Senha de segredo compartilhado: use o
gateway.auth.passwordconfigurado (ouOPENCLAW_GATEWAY_PASSWORD). O painel não persiste senhas entre recarregamentos. - Modos com identidade: Tailscale Serve pode satisfazer a autenticação da Interface de Controle/WebSocket
via cabeçalhos de identidade quando
gateway.auth.allowTailscale: true, e um proxy reverso com reconhecimento de identidade que não seja loopback pode satisfazergateway.auth.mode: "trusted-proxy". Nesses modos, o painel não precisa de um segredo compartilhado colado para o WebSocket. - Não localhost: use Tailscale Serve, um bind de segredo compartilhado que não seja loopback, um
proxy reverso com reconhecimento de identidade que não seja loopback com
gateway.auth.mode: "trusted-proxy"ou um túnel SSH. APIs HTTP ainda usam autenticação por segredo compartilhado, a menos que você execute intencionalmentegateway.auth.mode: "none"com private-ingress ou autenticação HTTP por proxy confiável. Veja Superfícies Web.
Se você vir "unauthorized" / 1008
- Garanta que o gateway esteja acessível (local:
openclaw status; remoto: túnel SSHssh -N -L 18789:127.0.0.1:18789 user@hoste então abrahttp://127.0.0.1:18789/). - Para
AUTH_TOKEN_MISMATCH, clientes podem fazer uma nova tentativa confiável com um token de dispositivo em cache quando o gateway retorna dicas de nova tentativa. Essa nova tentativa com token em cache reutiliza os escopos aprovados em cache do token; chamadores comdeviceTokenexplícito /scopesexplícitos mantêm o conjunto de escopos solicitado. Se a autenticação ainda falhar após essa nova tentativa, resolva a divergência de token manualmente. - Fora desse caminho de nova tentativa, a precedência de autenticação de conexão é primeiro token/senha compartilhados explícitos, depois
deviceTokenexplícito, depois token de dispositivo armazenado, depois token de bootstrap. - No caminho assíncrono da Interface de Controle via Tailscale Serve, tentativas com falha para o mesmo
{scope, ip}são serializadas antes que o limitador de autenticação com falha as registre, então a segunda nova tentativa incorreta simultânea já pode mostrarretry later. - Para etapas de reparo de divergência de token, siga a lista de verificação de recuperação de divergência de token.
- Recupere ou forneça o segredo compartilhado a partir do host do gateway:
- Token:
openclaw config get gateway.auth.token - Senha: resolva o
gateway.auth.passwordconfigurado ouOPENCLAW_GATEWAY_PASSWORD - Token gerenciado por SecretRef: resolva o provedor de segredo externo ou exporte
OPENCLAW_GATEWAY_TOKENneste shell, então execute novamenteopenclaw dashboard - Nenhum segredo compartilhado configurado:
openclaw doctor --generate-gateway-token
- Token:
- Nas configurações do painel, cole o token ou a senha no campo de autenticação, então conecte.
- O seletor de idioma da UI fica em Visão geral -> Acesso ao Gateway -> Idioma. Ele faz parte do cartão de acesso, não da seção Aparência.