Мобильные устройства (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.healthnotifications.list, notifications.actionsphotos.latestcontacts.search, contacts.addcalendar.events, calendar.addcallLog.searchsms.searchmotion.activity, motion.pedometerБыстрый старт: подключение ноды
1. Запустить Gateway
На основной машине:
openclaw gateway --port 18789
Для удалённого доступа через Tailscale (рекомендуется — даёт wss://):
openclaw gateway --tailscale serve
2. Подключить телефон
Обнаружение (одинаково для iOS и Android):
_openclaw-gw._tcp)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)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)
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 — выдайте разрешение в настройках устройства.