Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Застосунок для Android ще не було публічно випущено. Вихідний код доступний у репозиторії OpenClaw у
apps/android. Ви можете зібрати його самостійно за допомогою Java 17 та Android SDK (./gradlew :app:assemblePlayDebug). Інструкції зі збирання див. у apps/android/README.md.Знімок підтримки
- Роль: супровідний застосунок вузла (Android не розміщує Gateway).
- Gateway потрібен: так (запустіть його на macOS, Linux або Windows через WSL2).
- Встановлення: Початок роботи + Сполучення.
- Gateway: Операційний довідник + Конфігурація.
- Протоколи: протокол Gateway (вузли + площина керування).
Керування системою
Керування системою (launchd/systemd) розміщене на хості Gateway. Див. Gateway.Операційний довідник підключення
Застосунок вузла Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway Android підключається безпосередньо до WebSocket Gateway і використовує сполучення пристрою (role: node).
Для Tailscale або публічних хостів Android потребує захищеної кінцевої точки:
- Бажано: Tailscale Serve / Funnel з
https://<magicdns>/wss://<magicdns> - Також підтримується: будь-яка інша URL-адреса Gateway
wss://зі справжньою кінцевою точкою TLS - Незашифрований
ws://і далі підтримується для адрес приватної LAN / хостів.local, а такожlocalhost,127.0.0.1і мосту емулятора Android (10.0.2.2)
Передумови
- Ви можете запустити Gateway на “головній” машині.
- Пристрій/емулятор Android може дістатися до WebSocket gateway:
- Та сама LAN з mDNS/NSD, або
- Та сама tailnet Tailscale з Wide-Area Bonjour / unicast DNS-SD (див. нижче), або
- Ручне задання хоста/порту gateway (резервний варіант)
- Мобільне сполучення через tailnet/публічну мережу не використовує сирі кінцеві точки IP tailnet
ws://. Натомість використовуйте Tailscale Serve або іншу URL-адресуwss://. - Ви можете запустити CLI (
openclaw) на машині gateway (або через SSH).
1) Запустіть Gateway
listening on ws://0.0.0.0:18789
wss:// / https://. Простого налаштування gateway.bind: "tailnet" недостатньо для першого віддаленого сполучення Android, якщо ви також окремо не завершуєте TLS.
2) Перевірте виявлення (необов’язково)
З машини gateway:local. разом із налаштованим широкозонним доменом за один прохід і використовує розв’язану кінцеву точку сервісу замість підказок лише з TXT.
Виявлення tailnet (Відень ⇄ Лондон) через unicast DNS-SD
Виявлення Android NSD/mDNS не переходить між мережами. Якщо ваш вузол Android і gateway перебувають у різних мережах, але з’єднані через Tailscale, натомість використовуйте Wide-Area Bonjour / unicast DNS-SD. Самого виявлення недостатньо для сполучення Android через tailnet/публічну мережу. Виявлений маршрут усе одно потребує захищеної кінцевої точки (wss:// або Tailscale Serve):
- Налаштуйте зону DNS-SD (приклад
openclaw.internal.) на хості gateway і опублікуйте записи_openclaw-gw._tcp. - Налаштуйте split DNS Tailscale для вибраного домену, що вказує на цей DNS-сервер.
3) Підключіться з Android
У застосунку Android:- Застосунок підтримує з’єднання з gateway активним через службу переднього плану (постійне сповіщення).
- Відкрийте вкладку Підключення.
- Використовуйте режим Код налаштування або Ручний.
- Якщо виявлення заблоковано, використовуйте ручні хост/порт у Розширених елементах керування. Для хостів приватної LAN
ws://і далі працює. Для хостів Tailscale/публічних хостів увімкніть TLS і використовуйте кінцеву точкуwss:/// Tailscale Serve.
- Ручна кінцева точка (якщо ввімкнено), інакше
- Останній виявлений gateway (за можливості).
Сигнали присутності alive
Після підключення автентифікованого сеансу вузла, а також коли застосунок переходить у фон, поки служба переднього плану все ще підключена, Android викликаєnode.event з event: "node.presence.alive". Gateway записує це як lastSeenAtMs/lastSeenReason у метаданих сполученого вузла/пристрою лише після того, як стане відома ідентичність автентифікованого вузлового пристрою.
Застосунок рахує сигнал як успішно записаний лише тоді, коли відповідь gateway містить handled: true. Старіші gateway можуть підтверджувати node.event через { "ok": true }; така відповідь сумісна, але не рахується як довговічне оновлення останньої видимості.
4) Схваліть сполучення (CLI)
На машині gateway:role: node без запитаних областей доступу. Сполучення оператора/браузера та будь-яка зміна ролі, області доступу, метаданих або публічного ключа все одно потребують ручного схвалення.
5) Перевірте, що вузол підключено
-
Через статус вузлів:
-
Через Gateway:
6) Чат + історія
Вкладка Chat в Android підтримує вибір сеансу (типовоmain, а також інші наявні сеанси):
- Історія:
chat.history(нормалізована для відображення; inline-теги директив вилучаються з видимого тексту, XML-навантаження викликів інструментів у plain text (зокрема<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>і обрізані блоки викликів інструментів) та витеклі ASCII/повноширинні керівні токени моделі вилучаються, рядки асистента лише з безшумними токенами, як-от точніNO_REPLY/no_reply, пропускаються, а надмірно великі рядки можуть замінюватися заповнювачами) - Надсилання:
chat.send - Push-оновлення (за можливості):
chat.subscribe→event:"chat"
7) Canvas + камера
Хост Canvas Gateway (рекомендовано для вебвмісту)
Якщо ви хочете, щоб вузол показував справжні HTML/CSS/JS, які агент може редагувати на диску, спрямуйте вузол на хост Canvas Gateway.Вузли завантажують canvas із HTTP-сервера Gateway (той самий порт, що й
gateway.port, типово 18789).-
Створіть
~/.openclaw/workspace/canvas/index.htmlна хості gateway. - Перейдіть вузлом до нього (LAN):
.local, наприклад http://<gateway-magicdns>:18789/__openclaw__/canvas/.
Цей сервер вставляє клієнт live-reload в HTML і перезавантажує сторінку після змін файлів.
Хост A2UI доступний за http://<gateway-host>:18789/__openclaw__/a2ui/.
Команди Canvas (лише передній план):
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)
8) Голос + розширена поверхня команд Android
- Вкладка Voice: Android має два явні режими захоплення. Mic — це ручний сеанс вкладки Voice, який надсилає кожну паузу як хід чату й зупиняється, коли застосунок залишає передній план або користувач залишає вкладку Voice. Talk — це безперервний Talk Mode, який продовжує слухати, доки його не вимкнуть або вузол не від’єднається.
- Talk Mode підвищує наявну службу переднього плану з
dataSyncдоdataSync|microphoneперед початком захоплення, а потім знижує її, коли Talk Mode зупиняється. Android 14+ потребує деклараціїFOREGROUND_SERVICE_MICROPHONE, runtime-дозволуRECORD_AUDIOі типу служби мікрофона під час виконання. - Озвучені відповіді використовують
talk.speakчерез налаштованого провайдера Talk gateway. Локальний системний TTS використовується лише тоді, колиtalk.speakнедоступний. - Голосова активація залишається вимкненою в UX/runtime Android.
- Додаткові сімейства команд Android (доступність залежить від пристрою + дозволів):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actions(див. пересилання сповіщень нижче)photos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
Точки входу асистента
Android підтримує запуск OpenClaw із системного тригера асистента (Google Assistant). Коли це налаштовано, утримання кнопки додому або фраза “Hey Google, ask OpenClaw…” відкриває застосунок і передає запит у композер чату. Для цього використовуються метадані Android App Actions, оголошені в маніфесті застосунку. Додаткової конфігурації на стороні gateway не потрібно — intent асистента повністю обробляється застосунком Android і пересилається як звичайне повідомлення чату.Доступність App Actions залежить від пристрою, версії Google Play Services і від того, чи встановив користувач OpenClaw як застосунок асистента за замовчуванням.
Пересилання сповіщень
Android може пересилати сповіщення пристрою до gateway як події. Кілька елементів керування дають змогу обмежити, які сповіщення пересилаються і коли.| Ключ | Тип | Опис |
|---|---|---|
notifications.allowPackages | string[] | Пересилати сповіщення лише з цих назв пакетів. Якщо задано, усі інші пакети ігноруються. |
notifications.denyPackages | string[] | Ніколи не пересилати сповіщення з цих назв пакетів. Застосовується після allowPackages. |
notifications.quietHours.start | string (HH:mm) | Початок вікна тихих годин (локальний час пристрою). Сповіщення пригнічуються протягом цього вікна. |
notifications.quietHours.end | string (HH:mm) | Кінець вікна тихих годин. |
notifications.rateLimit | number | Максимальна кількість пересланих сповіщень на пакет за хвилину. Надлишкові сповіщення відкидаються. |
Пересилання сповіщень потребує дозволу Android Notification Listener. Застосунок запитує його під час налаштування.