macOS companion app

Віддалене керування

Цей потік дає змогу застосунку macOS працювати як повноцінний пульт дистанційного керування для Gateway OpenClaw, що працює на іншому хості (настільному комп’ютері/сервері). Застосунок може підключатися напряму до довірених URL Gateway у LAN/Tailnet або керувати SSH-тунелем, коли віддалений Gateway доступний лише через loopback. Перевірки справності, пересилання Voice Wake і Вебчат повторно використовують ту саму віддалену конфігурацію з Налаштування → Загальні.

Режими

  • Локально (цей Mac): Усе працює на ноутбуці. SSH не використовується.
  • Віддалено через SSH (типово): Команди OpenClaw виконуються на віддаленому хості. Застосунок Mac відкриває SSH-з’єднання з -o BatchMode, а також вибраним посвідченням/ключем і локальним перенаправленням порту.
  • Віддалено напряму (ws/wss): Без SSH-тунелю. Застосунок Mac підключається напряму до URL Gateway (наприклад, через LAN, Tailscale, Tailscale Serve або публічний HTTPS reverse proxy).

Віддалені транспорти

Віддалений режим підтримує два транспорти:

  • SSH-тунель (типово): Використовує ssh -N -L ..., щоб перенаправити порт Gateway на localhost. Gateway бачитиме IP вузла як 127.0.0.1, оскільки тунель є loopback.
  • Прямий (ws/wss): Підключається безпосередньо до URL Gateway. Gateway бачить реальну IP-адресу клієнта.

Застосунок вимикає мультиплексування SSH-з’єднань і переведення у фоновий режим після автентифікації для SSH-процесів, якими володіє застосунок, щоб він міг відстежувати й перезапускати саме цей процес, навіть коли вибраний псевдонім вмикає ControlMaster або ForkAfterAuthentication.

Перевірка ключа SSH-хоста за замовчуванням сувора, оскільки облікові дані Gateway проходять через цей тунель. Для керованого SSH-псевдоніма, поведінку довіри якого ви явно маєте намір використовувати, увімкніть це через openclaw-mac configure-remote --ssh-target <alias> --ssh-host-key-policy openssh або задайте для gateway.remote.sshHostKeyPolicy значення "openssh". Це явне ввімкнення використовує чинну політику ключів хоста OpenSSH; спершу перегляньте псевдонім і будь-яку відповідну конфігурацію Host * або системну конфігурацію. Зміна SSH-цілі в застосунку або через configure-remote скидає політику до strict, якщо ви явно не ввімкнете її знову.

У режимі SSH-тунелю знайдені імена хостів LAN/tailnet зберігаються як gateway.remote.sshTarget. Застосунок залишає gateway.remote.url на локальній кінцевій точці тунелю, наприклад ws://127.0.0.1:18789, щоб CLI, Вебчат і локальна служба вузла-хоста використовували той самий безпечний loopback-транспорт. Коли виявлення повертає і raw IP-адреси Tailnet, і стабільні імена хостів, застосунок віддає перевагу Tailscale MagicDNS або іменам LAN, щоб віддалені підключення краще переживали зміни адрес. Якщо локальний порт тунелю відрізняється від порту віддаленого Gateway, задайте gateway.remote.remotePort як порт на віддаленому хості.

Автоматизацією браузера у віддаленому режимі володіє хост вузла CLI, а не нативний вузол застосунку macOS. Застосунок запускає встановлену службу хоста вузла, коли це можливо; якщо вам потрібне керування браузером із цього Mac, установіть/запустіть її через openclaw node install ... і openclaw node start (або запустіть openclaw node run ... у передньому плані), а потім націльтеся на цей вузол із підтримкою браузера.

Попередні вимоги на віддаленому хості

  1. Установіть Node + pnpm і зберіть/установіть OpenClaw CLI (pnpm install && pnpm build && pnpm link --global).
  2. Переконайтеся, що openclaw є в PATH для неінтерактивних shell (за потреби створіть symlink у /usr/local/bin або /opt/homebrew/bin).
  3. Лише для SSH-транспорту: відкрийте SSH з автентифікацією за ключем. Для стабільної доступності поза LAN ми рекомендуємо IP-адреси Tailscale.

Налаштування застосунку macOS

Щоб попередньо налаштувати застосунок без вітального потоку:

bash
openclaw-mac configure-remote \  --ssh-target user@gateway.local \  --local-port 18789 \  --remote-port 18789 \  --token "$OPENCLAW_GATEWAY_TOKEN"

Для Gateway, який уже доступний у довіреній LAN або Tailnet, повністю пропустіть SSH:

bash
openclaw-mac configure-remote \  --direct-url ws://192.168.0.202:18789 \  --token "$OPENCLAW_GATEWAY_TOKEN"

Це записує віддалену конфігурацію, позначає onboarding завершеним і дає застосунку змогу володіти вибраним транспортом під час запуску.

  1. Відкрийте Налаштування → Загальні.
  2. У розділі OpenClaw працює виберіть Віддалено і задайте:
    • Транспорт: SSH-тунель або Прямий (ws/wss).
    • SSH-ціль: user@host (необов’язково :port).
      • Якщо Gateway у тій самій LAN і оголошує Bonjour, виберіть його зі знайденого списку, щоб автоматично заповнити це поле.
    • URL Gateway (лише прямий): wss://gateway.example.ts.net (або ws://... для локального/LAN).
    • Файл посвідчення (розширено): шлях до вашого ключа.
    • Корінь проєкту (розширено): шлях віддаленого checkout, який використовується для команд.
    • Шлях CLI (розширено): необов’язковий шлях до придатної до запуску точки входу/бінарного файлу openclaw (автоматично заповнюється, коли оголошується).
  3. Натисніть Перевірити віддалене. Успіх означає, що віддалена команда openclaw status --json виконується правильно. Помилки зазвичай означають проблеми з PATH/CLI; код виходу 127 означає, що CLI не знайдено віддалено.
  4. Перевірки справності й Вебчат тепер автоматично працюватимуть через вибраний транспорт.

Вебчат

  • SSH-тунель: Вебчат підключається до Gateway через перенаправлений керівний порт WebSocket (типово 18789).
  • Прямий (ws/wss): Вебчат підключається безпосередньо до налаштованого URL Gateway.
  • Окремого HTTP-сервера WebChat більше немає.

Дозволи

  • Віддаленому хосту потрібні ті самі дозволи TCC, що й локальному (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Запустіть onboarding на цій машині, щоб надати їх один раз.
  • Вузли оголошують свій стан дозволів через node.list / node.describe, щоб агенти знали, що доступно.

Примітки щодо безпеки

  • Віддавайте перевагу loopback-прив’язкам на віддаленому хості й підключайтеся через SSH, Tailscale Serve або довірений прямий URL Tailnet/LAN.
  • SSH-тунелювання за замовчуванням вимагає вже довіреного ключа хоста. Спершу довірте ключ хоста, щоб він існував у налаштованому файлі known-hosts, або явно виберіть gateway.remote.sshHostKeyPolicy: "openssh" для керованого псевдоніма, політику довіри OpenSSH якого ви приймаєте.
  • Якщо ви прив’язуєте Gateway до інтерфейсу, відмінного від loopback, вимагайте чинну автентифікацію Gateway: token, password або identity-aware reverse proxy з gateway.auth.mode: "trusted-proxy".
  • Див. Безпека і Tailscale.

Потік входу WhatsApp (віддалено)

  • Запустіть openclaw channels login --verbose на віддаленому хості. Відскануйте QR у WhatsApp на телефоні.
  • Повторно запустіть вхід на цьому хості, якщо автентифікація завершиться. Перевірка справності покаже проблеми з прив’язкою.

Усунення несправностей

  • exit 127 / не знайдено: openclaw немає в PATH для non-login shells. Додайте його до /etc/paths, shell rc або створіть symlink у /usr/local/bin//opt/homebrew/bin.
  • Проба справності не вдалася: перевірте доступність SSH, PATH і те, що Baileys увійшов у систему (openclaw status --json).
  • Вебчат завис: підтвердьте, що Gateway працює на віддаленому хості, а перенаправлений порт відповідає WS-порту Gateway; UI потребує справного WS-з’єднання.
  • IP вузла показує 127.0.0.1: очікувано з SSH-тунелем. Перемкніть Транспорт на Прямий (ws/wss), якщо хочете, щоб Gateway бачив реальну IP-адресу клієнта.
  • Dashboard працює, але можливості Mac офлайн: це означає, що operator/control-з’єднання застосунку справне, але companion node connection не підключене або не має своєї command surface. Відкрийте розділ пристрою в рядку меню й перевірте, чи Mac має стан paired · disconnected. Для кінцевих точок Tailscale Serve wss://*.ts.net застосунок виявляє застарілі legacy TLS leaf pins після ротації сертифіката, очищає застарілий pin, коли macOS довіряє новому сертифікату, і автоматично повторює спробу. Якщо сертифікат не є довіреним системою або хост не є іменем Tailscale Serve, задайте gateway.remote.tlsFingerprint як очікуваний fingerprint сертифіката, перегляньте сертифікат або перемкніться на Віддалено через SSH.
  • Voice Wake: тригерні фрази автоматично пересилаються у віддаленому режимі; окремий пересилач не потрібен.

Звуки сповіщень

Вибирайте звуки для кожного сповіщення зі скриптів за допомогою openclaw і node.invoke, наприклад:

bash
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass

У застосунку більше немає глобального перемикача "типового звуку"; викликачі вибирають звук (або не вибирають жодного) для кожного запиту.

Пов’язане

Was this useful?
On this page

On this page