Control UI — веб-интерфейс для управления OpenClaw. Это одностраничное приложение (Vite + Lit), которое Gateway отдаёт с того же порта, что и WebSocket.
http://:18789/ https://:18789/ gateway.controlUi.basePath (например /openclaw)Быстрый старт
openclaw dashboard
Копирует ссылку, открывает браузер (если возможно), показывает SSH-подсказку для headless-серверов.
Или вручную: http://127.0.0.1:18789/
Если страница не загружается — Gateway не запущен. Запустите: openclaw gateway.
Авторизация
Control UI подключается к Gateway через WebSocket. Авторизация происходит при подключении:
| Способ | Как работает |
|---|---|
| Token | gateway.auth.token — вставьте в настройки UI |
| Password | gateway.auth.password — вставьте в настройки UI |
| Tailscale Serve | Заголовки идентичности, если gateway.auth.allowTailscale: true |
| Trusted Proxy | Заголовки reverse proxy, если gateway.auth.mode: "trusted-proxy" |
Важно:
127.0.0.1 / localhost) — автоматическое одобрениеПервое подключение (Device Pairing)
При первом подключении с нового браузера Gateway требует одобрение:
disconnected (1008): pairing required
openclaw devices list
openclaw devices approve
Если браузер переподключается с другими параметрами — старый requestId становится невалидным. Запустите devices list заново.
Каждый браузерный профиль генерирует уникальный device ID. Смена браузера = повторный pairing.
Что умеет
Чат и Talk
chat.send, chat.history, chat.abort)/stop в чате. Частичный ответ сохраняется в историиКаналы и сессии
Конфигурация
openclaw.jsonCron, ноды, инструменты
Debug и логи
update.run + restart, проверка версии после reconnectPWA и Web Push
Control UI можно установить как PWA (manifest + service worker). Web Push позволяет будить установленное PWA уведомлениями даже когда вкладка закрыта.
| Компонент | Назначение |
|---|---|
manifest.webmanifest |
PWA манифест — браузер предложит «Установить приложение» |
sw.js |
Service worker для push-событий и кликов по уведомлениям |
push/vapid-keys.json |
Автогенерированная VAPID-ключи для подписи Web Push |
Настройка VAPID-ключей (для multi-host или ротации):
export OPENCLAW_VAPID_PUBLIC_KEY="..."
export OPENCLAW_VAPID_PRIVATE_KEY="..."
export OPENCLAW_VAPID_SUBJECT="mailto:you@example.com"
Встроенный контент (Embeds)
Сообщения агента могут содержать встроенный веб-контент через :
| Режим `gateway.controlUi.embedSandbox` | Что разрешено |
|---|---|
strict |
Скрипты заблокированы |
scripts (по умолчанию) |
Интерактивные виджеты, изоляция по origin |
trusted |
+ allow-same-origin для same-site документов |
Внешние http(s) URL заблокированы по умолчанию. Разрешить: gateway.controlUi.allowExternalEmbedUrls: true.
Удалённый доступ
SSH-туннель (простой способ)
ssh -N -L 18789:127.0.0.1:18789 user@server
Открыть: http://127.0.0.1:18789/
Tailscale Serve (рекомендуется)
openclaw gateway --tailscale serve
Открыть: https://
При gateway.auth.allowTailscale: true — Tailscale Serve автоматически авторизует через заголовки идентичности (без token/password). Browser device identity при этом пропускает pairing round trip.
Tailscale Funnel (публичный доступ)
{
"gateway": {
"bind": "loopback",
"tailscale": { "mode": "funnel" },
"auth": { "mode": "password" }
}
}
⚠️ Funnel требует gateway.auth.mode: "password".
Язык интерфейса
Control UI автоматически определяет язык браузера. Сменить: Overview → Gateway Access → Language.
Поддерживаемые языки: en, zh-CN, zh-TW, pt-BR, de, es, ja-JP, ko, fr, tr, uk, id, pl, th.
Безопасность
gateway.controlUi.allowedOrigins (полные origins)