Web interfaces
Web
O Gateway serve uma pequena UI de controle no navegador (Vite + Lit) na mesma porta que o WebSocket do Gateway:
- padrão:
http://<host>:18789/ - com
gateway.tls.enabled: true:https://<host>:18789/ - prefixo opcional: defina
gateway.controlUi.basePath(por exemplo,/openclaw)
Os recursos estão em UI de controle. O restante desta página se concentra em modos de vinculação, segurança e superfícies expostas à web.
Webhooks
Quando hooks.enabled=true, o Gateway também expõe um pequeno endpoint de webhook no mesmo servidor HTTP.
Consulte Configuração do Gateway → hooks para autenticação + payloads.
RPC HTTP de administração
O RPC HTTP de administração expõe métodos selecionados do plano de controle do Gateway em POST /api/v1/admin/rpc.
Ele fica desativado por padrão e é registrado somente quando o plugin admin-http-rpc está habilitado.
Consulte RPC HTTP de administração para o modelo de autenticação, os métodos permitidos e a comparação com WebSocket.
Configuração (ativada por padrão)
A UI de controle é habilitada por padrão quando os assets estão presentes (dist/control-ui).
Você pode controlá-la via configuração:
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional },}Acesso via Tailscale
Serve integrado (recomendado)
Mantenha o Gateway no loopback e deixe o Tailscale Serve fazer proxy dele:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Depois inicie o gateway:
openclaw gatewayAbra:
https://<magicdns>/(ou seugateway.controlUi.basePathconfigurado)
Vínculo de Tailnet + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Depois inicie o gateway (este exemplo sem loopback usa autenticação por token de segredo compartilhado):
openclaw gatewayAbra:
http://<tailscale-ip>:18789/(ou seugateway.controlUi.basePathconfigurado)
Internet pública (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD },}Observações de segurança
- A autenticação do Gateway é exigida por padrão (token, senha, proxy confiável ou cabeçalhos de identidade do Tailscale Serve quando habilitados).
- Vínculos sem loopback ainda exigem autenticação do gateway. Na prática, isso significa autenticação por token/senha ou um proxy reverso com reconhecimento de identidade usando
gateway.auth.mode: "trusted-proxy". - O assistente cria autenticação por segredo compartilhado por padrão e geralmente gera um token do gateway (mesmo em loopback).
- No modo de segredo compartilhado, a UI envia
connect.params.auth.tokenouconnect.params.auth.password. - Quando
gateway.tls.enabled: true, o dashboard local e os auxiliares de status renderizam URLs do dashboard comhttps://e URLs de WebSocket comwss://. - Em modos com identidade, como Tailscale Serve ou
trusted-proxy, a verificação de autenticação do WebSocket é satisfeita pelos cabeçalhos da requisição. - Para implantações públicas sem loopback da UI de controle, defina
gateway.controlUi.allowedOriginsexplicitamente (origens completas). Carregamentos privados de LAN/Tailnet na mesma origem são aceitos para loopback, RFC1918/link-local,.local,.ts.nete hosts CGNAT do Tailscale. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truehabilita o modo de fallback de origem por cabeçalho Host, mas é uma degradação de segurança perigosa.- Com Serve, os cabeçalhos de identidade do Tailscale podem satisfazer a autenticação da UI de controle/WebSocket quando
gateway.auth.allowTailscaleétrue(sem necessidade de token/senha). Endpoints de API HTTP não usam esses cabeçalhos de identidade do Tailscale; eles seguem o modo normal de autenticação HTTP do gateway. Definagateway.auth.allowTailscale: falsepara exigir credenciais explícitas. Consulte Tailscale e Segurança. Este fluxo sem token pressupõe que o host do gateway é confiável. gateway.tailscale.mode: "funnel"exigegateway.auth.mode: "password"(senha compartilhada).
Como criar a UI
O Gateway serve arquivos estáticos de dist/control-ui. Crie-os com:
pnpm ui:build