Перейти к основному содержанию

Удалённый OpenClaw (macOS ⇄ удалённый хост)

Этот сценарий позволяет приложению macOS выступать полноценным пультом удалённого управления для шлюза OpenClaw, запущенного на другом хосте (настольный ПК/сервер). Это функция приложения Remote over SSH (удалённый запуск). Все возможности — проверки состояния, пересылка Voice Wake и Web Chat — используют одну и ту же удалённую конфигурацию SSH из Settings → General.

Режимы

  • Local (this Mac): Всё работает на ноутбуке. SSH не используется.
  • Remote over SSH (default): Команды OpenClaw выполняются на удалённом хосте. Приложение mac открывает SSH‑соединение с -o BatchMode плюс выбранной идентификацией/ключом и локальной переадресацией портов.
  • Remote direct (ws/wss): Без SSH‑туннеля. Приложение mac подключается к URL шлюза напрямую (например, через Tailscale Serve или публичный HTTPS reverse proxy).

Удаленные перевозки

Удалённый режим поддерживает два транспорта:
  • SSH tunnel (по умолчанию): Использует ssh -N -L ... для проброса порта шлюза на localhost. Шлюз будет видеть IP узла как 127.0.0.1, поскольку туннель использует loopback.
  • Direct (ws/wss): Подключение напрямую к URL шлюза. Шлюз видит реальный IP клиента.

Предварительные требования на удалённом хосте

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

Настройка приложения macOS

  1. Откройте Settings → General.
  2. В разделе OpenClaw runs выберите Remote over SSH и задайте:
    • Transport: SSH tunnel или Direct (ws/wss).
    • SSH target: user@host (необязательно :port).
      • Если шлюз находится в той же LAN и объявляет Bonjour, выберите его из списка обнаруженных — поле заполнится автоматически.
    • Gateway URL (только Direct): wss://gateway.example.ts.net (или ws://... для local/LAN).
    • Identity file (дополнительно): путь к вашему ключу.
    • Project root (дополнительно): путь к удалённому чекауту проекта, используемый для команд.
    • CLI path (дополнительно): необязательный путь к исполняемому входному файлу/бинарнику openclaw (автозаполняется при объявлении).
  3. Нажмите Test remote. Успех означает, что удалённый openclaw status --json работает корректно. Сбои обычно указывают на проблемы PATH/CLI; код выхода 127 означает, что CLI не найден на удалённой стороне.
  4. Проверки состояния и Web Chat теперь будут автоматически работать через этот SSH‑туннель.

Веб-чат

  • SSH tunnel: Web Chat подключается к шлюзу через проброшенный порт управления WebSocket (по умолчанию 18789).
  • Direct (ws/wss): Web Chat подключается напрямую к настроенному URL шлюза.
  • Отдельного HTTP‑сервера WebChat больше нет.

Разрешения

  • Удалённому хосту требуются те же одобрения TCC, что и локальному (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Запустите онбординг на этой машине, чтобы выдать их один раз.
  • Узлы объявляют состояние разрешений через node.list / node.describe, чтобы агенты знали, что доступно.

Примечания по безопасности

  • Предпочитайте привязку к loopback на удалённом хосте и подключение через SSH или Tailscale.
  • Если вы привязываете Gateway (шлюз) к не‑loopback интерфейсу, требуйте аутентификацию по токену/паролю.
  • См. Security и Tailscale.

Процесс входа в WhatsApp (удалённо)

  • Запустите openclaw channels login --verbose на удалённом хосте. Отсканируйте QR‑код с помощью WhatsApp на телефоне.
  • Повторно выполните вход на этом хосте при истечении срока авторизации. Проверка состояния покажет проблемы с привязкой.

Устранение неполадок

  • exit 127 / not found: openclaw отсутствует в PATH для не‑login оболочек. Добавьте его в /etc/paths, rc‑файл вашей оболочки или создайте симлинк в /usr/local/bin//opt/homebrew/bin.
  • Health probe failed: проверьте доступность SSH, PATH и то, что Baileys авторизован (openclaw status --json).
  • Web Chat зависает: убедитесь, что шлюз запущен на удалённом хосте и проброшенный порт совпадает с WS‑портом шлюза; интерфейсу требуется исправное WS‑соединение.
  • Node IP показывает 127.0.0.1: ожидаемо при использовании SSH‑туннеля. Переключите Transport на Direct (ws/wss), если хотите, чтобы шлюз видел реальный IP клиента.
  • Voice Wake: триггер‑фразы автоматически пересылаются в удалённом режиме; отдельный форвардер не требуется.

Звуки уведомлений

Выбирайте звуки для каждого уведомления из скриптов с помощью openclaw и node.invoke, например:
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass
В приложении больше нет глобального переключателя «звук по умолчанию»; вызывающие стороны выбирают звук (или отсутствие звука) для каждого запроса.