macOS companion app

Дистанційне керування

Цей потік дає змогу програмі macOS діяти як повноцінний пульт дистанційного керування для OpenClaw gateway, що працює на іншому хості (настільному комп’ютері/сервері). Це функція програми Віддалено через SSH (віддалений запуск). Усі функції — перевірки стану, пересилання Voice Wake і вебчат — повторно використовують ту саму віддалену конфігурацію SSH з Налаштування → Загальні.

Режими

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

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

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

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

У режимі SSH-тунелю виявлені імена хостів LAN/tailnet зберігаються як gateway.remote.sshTarget. Програма тримає gateway.remote.url на локальній кінцевій точці тунелю, наприклад ws://127.0.0.1:18789, щоб CLI, вебчат і локальна служба хоста Node використовували той самий безпечний loopback-транспорт.

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

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

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

Налаштування програми macOS

  1. Відкрийте Налаштування → Загальні.
  2. У розділі OpenClaw запускається виберіть Віддалено через SSH і задайте:
    • Транспорт: 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-тунель.

Вебчат

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

Дозволи

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

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

  • Надавайте перевагу прив’язкам до loopback на віддаленому хості й підключайтеся через SSH або Tailscale.
  • SSH-тунелювання використовує сувору перевірку ключа хоста; спочатку довірте ключу хоста, щоб він існував у ~/.ssh/known_hosts.
  • Якщо ви прив’язуєте Gateway до інтерфейсу, що не є loopback, вимагайте чинну автентифікацію Gateway: токен, пароль або зворотний проксі з урахуванням ідентичності з gateway.auth.mode: "trusted-proxy".
  • Див. Безпека і Tailscale.

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

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

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

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

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

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

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

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

Пов’язане