Мобильные ноды: iOS и Android

Мобильные устройства (iPhone, iPad, Android) подключаются к Gateway как ноды — companion-устройства, которые дают агенту доступ к камере, геолокации, уведомлениям и Canvas. Ни iOS, ни Android не запускают Gateway — только подключаются к нему.

Статус приложений

Платформа Статус Установка
iOS Internal preview (не в App Store) Сборка из исходников или TestFlight
Android Не выпущен публично Сборка из исходников (./gradlew :app:assemblePlayDebug)

Оба приложения требуют запущенный Gateway на другой машине (macOS, Linux или Windows через WSL2).

Что даёт нода

Подключённый телефон становится периферией для агента:

Возможность Команда Что делает
Камера camera.snap, camera.clip Фото (jpg) и видео (mp4, до 60 сек)
Экран screen.record Запись экрана (mp4, до 60 сек)
Геолокация location.get Координаты GPS с точностью
Canvas canvas.navigate, canvas.eval, canvas.snapshot HTML/CSS/JS панель на экране
Уведомления notifications.list, notifications.actions Чтение и управление push (Android)
Голос Talk Mode, Voice wake Голосовое управление (iOS — best-effort в фоне)
Данные устройства device.status, contacts.*, calendar.*, sms.* Контакты, календарь, SMS (Android)
Полный список Android-команд

Зависит от модели и разрешений:

  • device.status, device.info, device.permissions, device.health
  • notifications.list, notifications.actions
  • photos.latest
  • contacts.search, contacts.add
  • calendar.events, calendar.add
  • callLog.search
  • sms.search
  • motion.activity, motion.pedometer
  • Быстрый старт: подключение ноды

    1. Запустить Gateway

    На основной машине:

    
    openclaw gateway --port 18789
    

    Для удалённого доступа через Tailscale (рекомендуется — даёт wss://):

    
    openclaw gateway --tailscale serve
    

    2. Подключить телефон

    Обнаружение (одинаково для iOS и Android):

  • Одна сеть (LAN): приложение автоматически находит Gateway через Bonjour/mDNS (_openclaw-gw._tcp)
  • Tailscale (разные сети): Wide-Area Bonjour / unicast DNS-SD — нужно настроить DNS-SD зону на Gateway. Подробности: Bonjour
  • Вручную: в настройках приложения ввести host + порт (по умолчанию 18789)
  • Для Tailscale/публичных адресов — обязательно wss:// (Tailscale Serve). Обычный ws:// работает только в локальной сети.

    3. Одобрить подключение

    На машине с Gateway:

    
    openclaw devices list          # найти requestId
    openclaw devices approve 
    

    Если нода переподключается с новыми параметрами — старый requestId становится невалидным. Запустите devices list заново перед одобрением.

    4. Проверить

    
    openclaw nodes status
    openclaw gateway call node.list --params "{}"
    
    Автоодобрение для доверенных сетей

    Если нода всегда подключается из контролируемой подсети:

    
    {
      "gateway": {
        "nodes": {
          "pairing": {
            "autoApproveCidrs": ["192.168.1.0/24"]
          }
        }
      }
    }
    

    Работает только для первого подключения (role: node) без запрошенных scope. Смена роли, scope или публичного ключа — всегда ручное одобрение.

    Камера

    Агент может сделать фото или записать видео с камеры телефона.

    
    # Фото (обе камеры по умолчанию — 2 файла)
    openclaw nodes camera snap --node 
    
    # Фото с фронтальной камеры
    openclaw nodes camera snap --node  --facing front
    
    # Видео 5 секунд без звука
    openclaw nodes camera clip --node  --duration 5s --no-audio
    

    Важно:

  • Приложение должно быть на переднем плане (иначе NODE_BACKGROUND_UNAVAILABLE)
  • Фото пережимаются до 5 МБ base64
  • Видео — максимум 60 секунд
  • Android требует разрешения CAMERA и RECORD_AUDIO (для видео со звуком)
  • Технические параметры camera.snap
    Параметр По умолчанию Описание
    facing front front или back
    maxWidth 1600 (iOS) Максимальная ширина в пикселях
    quality 0.9 Качество JPEG (0–1)
    format jpg Только jpg
    delayMs 0 (iOS), 2000 (macOS) Задержка перед снимком

    Canvas

    Canvas — HTML/CSS/JS панель, которая рендерится на экране телефона. Агент может управлять ею через node.invoke.

    
    # Показать веб-страницу
    openclaw nodes canvas present --node  --target https://example.com
    
    # Выполнить JavaScript
    openclaw nodes canvas eval --node  --js "document.title"
    
    # Сделать скриншот Canvas
    openclaw nodes canvas snapshot --node  --format png
    
    # Сбросить к стандартному scaffold
    openclaw nodes canvas navigate --node  --url ""
    

    Canvas загружается с Gateway HTTP-сервера (тот же порт, что gateway.port):

    
    http://:18789/__openclaw__/canvas/
    http://:18789/__openclaw__/a2ui/
    

    A2UI рендерится внутри Canvas. При подключении нода автоматически переходит на A2UI, если Gateway передаёт canvas host URL.

    Геолокация

    По умолчанию выключена. Включите в настройках приложения.

    
    openclaw nodes location get --node 
    openclaw nodes location get --node  --accuracy precise --max-age 15000
    

    Возвращает: широту, долготу, точность (метры), временную метку.

    iOS: требует разрешения «При использовании» или «Всегда». Фоновый доступ — best-effort.

    Уведомления (Android)

    Android может пересылать уведомления телефона на Gateway. Агент видит что пришло и может реагировать.

    Настройка в приложении:

    
    {
      "notifications": {
        "allowPackages": ["com.slack", "com.whatsapp"],
        "denyPackages": ["com.android.systemui"],
        "quietHours": { "start": "22:00", "end": "07:00" },
        "rateLimit": 5
      }
    }
    

    Требует разрешения Notification Listener на устройстве.

    Голос (Talk Mode)

  • iOS: Talk Mode и Voice Wake доступны в настройках. В фоне — best-effort (iOS может приостановить аудио).
  • Android: два режима — Mic (ручная запись, пауза = отправка) и Talk (непрерывное прослушивание). Требует FOREGROUND_SERVICE_MICROPHONE и RECORD_AUDIO на Android 14+.
  • Голосовые ответы идут через talk.speak (настроенный на Gateway провайдер). Локальный TTS — только если talk.speak недоступен.

    Запуск команд на ноде (system.run)

    Если Gateway на одном компьютере, а нужно выполнять команды на другом — используйте headless node host:

    
    # На машине-ноде
    openclaw node run --host  --port 18789 --display-name "Build Node"
    
    # Или установить как сервис
    openclaw node install --host  --port 18789 --display-name "Build Node"
    openclaw node start
    

    Потом направить exec на ноду:

    
    openclaw config set tools.exec.host node
    openclaw config set tools.exec.node ""
    

    Exec approvals живут на ноде в ~/.openclaw/exec-approvals.json.

    Типичные ошибки

    Ошибка Причина Решение
    NODE_BACKGROUND_UNAVAILABLE Приложение свёрнуто Откройте приложение на передний план
    CAMERA_DISABLED Камера выключена в настройках Включите Camera → Allow Camera
    *_PERMISSION_REQUIRED Нет разрешения OS Дайте разрешение в настройках устройства
    A2UI_HOST_NOT_CONFIGURED Gateway не передал canvas host URL Проверьте canvasHost в конфиге Gateway
    SYSTEM_RUN_DENIED Exec approval не одобрен Настройте exec-approvals на ноде
    Пинг не появляется Проблема с pairing openclaw devices list → approve вручную
    Не переподключается после переустановки Keychain очищен Повторите pairing
    🔧 Диагностика нод (openclaw doctor)

    Когда нода видна в статусе, но инструменты не работают — выполните по порядку:

    openclaw status
    openclaw nodes status
    openclaw nodes describe --node 
    openclaw doctor
    openclaw logs --follow

    Требования переднего плана: canvas.*, camera.* и screen.* работают только когда приложение ноды на переднем плане. Ошибка NODE_BACKGROUND_UNAVAILABLE = выведите приложение на экран.

    Матрица разрешений:

    • camera.snap/clip — требуется разрешение Камера (+ микрофон)
    • screen.record — требуется разрешение Запись экрана
    • location.get — iOS: «При использовании» или «Всегда»; Android: передний план

    Типичный код ошибки: *_PERMISSION_REQUIRED — выдайте разрешение в настройках устройства.

    Что дальше

  • macOS — приложение для Mac (menu bar, Canvas, камера, запись экрана)
  • Конфигурация Gateway — настройка сервера
  • Агенты: обзор — как агент работает с нодами
  • Установка OpenClaw — установка Gateway