Обзор платформ

Приложение для Android

Снимок поддержки

Управление системой

Управление системой (launchd/systemd) находится на хосте шлюза. См. Шлюз.

Ранбук подключения

Приложение узла Android ⇄ (mDNS/NSD + WebSocket) ⇄ Шлюз Android подключается напрямую к WebSocket шлюза (по умолчанию ws://<хост>:18789) и использует сопряжение устройств (role: node).

Предварительные требования

  • Вы можете запустить шлюз на «главной» машине.
  • Устройство/эмулятор Android может достичь WebSocket шлюза:
    • Та же локальная сеть с mDNS/NSD, или
    • Один Tailscale tailnet с использованием Wide-Area Bonjour / unicast DNS-SD (см. ниже), или
    • Ручное указание хоста/порта шлюза (резервный вариант)
  • Вы можете запустить CLI (openclaw) на машине шлюза (или через SSH).

1) Запустите шлюз

openclaw gateway --port 18789 --verbose

Подтвердите в логах наличие записей вида:

  • listening on ws://0.0.0.0:18789

Для настройки только в tailnet (рекомендуется для Вена ⇄ Лондон), привяжите шлюз к IP-адресу tailnet:

  • Установите gateway.bind: "tailnet" в файле ~/.openclaw/openclaw.json на хосте шлюза.
  • Перезапустите шлюз / приложение в строке меню macOS.

2) Проверьте обнаружение (опционально)

С машины шлюза:

dns-sd -B _openclaw-gw._tcp local.

Дополнительные заметки по отладке: Bonjour.

Обнаружение в Tailnet (Вена ⇄ Лондон) через unicast DNS-SD

Обнаружение через Android NSD/mDNS не работает между разными сетями. Если ваш узел Android и шлюз находятся в разных сетях, но соединены через Tailscale, используйте Wide-Area Bonjour / unicast DNS-SD:

  1. Настройте зону DNS-SD (например, openclaw.internal.) на хосте шлюза и опубликуйте записи _openclaw-gw._tcp.
  2. Настройте Split DNS в Tailscale для выбранного домена, указывающего на этот DNS-сервер.

Подробности и пример конфигурации CoreDNS: Bonjour.

3) Подключитесь с Android

В приложении Android:

  • Приложение поддерживает соединение со шлюзом через сервис переднего плана (постоянное уведомление).
  • Откройте вкладку Подключить.
  • Используйте режим Код настройки или Ручной.
  • Если обнаружение заблокировано, используйте ручной ввод хоста/порта (и TLS/токен/пароль, когда требуется) в Расширенных настройках.

После первого успешного сопряжения Android автоматически переподключается при запуске:

  • Ручная конечная точка (если включена), иначе
  • Последний обнаруженный шлюз (по возможности).

4) Подтвердите сопряжение (CLI)

На машине шлюза:

openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>

Подробности о сопряжении: Сопряжение.

5) Убедитесь, что узел подключен

  • Через статус узлов:

    Копировать

    openclaw nodes status
    
  • Через шлюз:

    Копировать

    openclaw gateway call node.list --params "{}"
    

6) Чат + история

Вкладка чата на Android поддерживает выбор сессии (по умолчанию main, плюс другие существующие сессии):

  • История: chat.history
  • Отправка: chat.send
  • Push-обновления (по возможности): chat.subscribeevent:"chat"

7) Холст + экран + камера

Хост холста на шлюзе (рекомендуется для веб-контента)

Если вы хотите, чтобы узел отображал реальный HTML/CSS/JS, который агент может редактировать на диске, укажите узлу на хост холста шлюза. Примечание: узлы загружают холст с HTTP-сервера шлюза (тот же порт, что и gateway.port, по умолчанию 18789).

  1. Создайте файл ~/.openclaw/workspace/canvas/index.html на хосте шлюза.
  2. Переведите узел на него (локальная сеть):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'

Tailnet (опционально): если оба устройства находятся в Tailscale, используйте имя MagicDNS или IP-адрес tailnet вместо .local, например, http://<gateway-magicdns>:18789/__openclaw__/canvas/. Этот сервер внедряет клиент live-reload в HTML и перезагружает страницу при изменении файлов. Хост A2UI находится по адресу http://<gateway-host>:18789/__openclaw__/a2ui/. Команды холста (только на переднем плане):

  • canvas.eval, canvas.snapshot, canvas.navigate (используйте {"url":""} или {"url":"/"} для возврата к стандартному шаблону). canvas.snapshot возвращает { format, base64 } (по умолчанию format="jpeg").
  • A2UI: canvas.a2ui.push, canvas.a2ui.reset (canvas.a2ui.pushJSONL устаревший алиас)

Команды камеры (только на переднем плане; требуют разрешений):

  • camera.snap (jpg)
  • camera.clip (mp4)

См. Узел камеры для параметров и вспомогательных команд CLI. Команды экрана:

  • screen.record (mp4; только на переднем плане)

8) Голос + расширенная поверхность команд Android

  • Голос: Android использует единый поток включения/выключения микрофона во вкладке Голос с захватом транскрипции и воспроизведением TTS (ElevenLabs при настройке, системный TTS в качестве запасного варианта).
  • Переключатели голосового пробуждения/режима разговора в настоящее время удалены из UX/среды выполнения Android.
  • Дополнительные семейства команд Android (доступность зависит от устройства + разрешений):
    • device.status, device.info, device.permissions, device.health
    • notifications.list, notifications.actions
    • photos.latest
    • contacts.search, contacts.add
    • calendar.events, calendar.add
    • motion.activity, motion.pedometer
    • app.update

Windows (WSL2)Приложение iOS