Control UI 是 Gateway 提供的浏览器单页应用(Vite + Lit),默认地址:http://<host>:18789/。
快速访问
本地 Gateway:http://127.0.0.1:18789/
认证通过 WebSocket 握手传递:
connect.params.auth.tokenconnect.params.auth.password- Tailscale Serve 身份头(
gateway.auth.allowTailscale: true) - trusted-proxy 身份头(
gateway.auth.mode: "trusted-proxy")
设备配对(首次连接)
新浏览器/设备连接时通常需要一次性配对审批:
openclaw devices list
openclaw devices approve <requestId>本地 loopback(127.0.0.1/localhost)自动审批。每个浏览器 profile 生成唯一设备 ID。
主要功能
| 功能区 | 能力 |
|---|---|
| Chat & Talk | 聊天、历史、中止、实时语音(WebRTC/relay) |
| Channels/Sessions | 频道状态、会话列表、Dreams 管理 |
| Cron/Skills/Nodes | 定时任务、技能管理、节点列表、Exec 审批 |
| Config | 查看/编辑 openclaw.json,带 schema 表单渲染 |
| Debug/Logs | 状态快照、事件日志、日志实时追踪 |
PWA 与 Web Push
Control UI 支持安装为 PWA,Gateway 可通过 Web Push 唤醒已安装的 PWA:
- VAPID 密钥对自动生成,存储在
push/vapid-keys.json - 通过
OPENCLAW_VAPID_PUBLIC_KEY/OPENCLAW_VAPID_PRIVATE_KEY覆盖
Tailnet 访问(推荐)
# 集成 Tailscale Serve(首选)
openclaw gateway --tailscale serve
# 绑定到 tailnet + token
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"安全注意事项
- 非 loopback 部署必须显式设置
gateway.controlUi.allowedOrigins - 不安全 HTTP 下浏览器阻断 WebCrypto,默认拒绝无设备身份的连接
dangerouslyDisableDeviceAuth: true是紧急破玻璃选项,用后立即恢复- CSP 策略:
img-src仅允许同源、data:和本地blob:URL
构建
pnpm ui:build
pnpm ui:dev # 本地开发服务器相关页面
- web-dashboard — Gateway 仪表板
- web-webchat — WebChat 聊天界面
- web-tui — 终端用户界面(TUI)