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

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

Режимы

  • Локальный (этот Mac): все работает на ноутбуке. SSH не задействован.
  • Удаленный через SSH (по умолчанию): команды OpenClaw выполняются на удаленном хосте. Приложение mac открывает SSH-соединение с -o BatchMode плюс ваш выбранный идентификатор/ключ и локальной переадресацией портов.
  • Удаленный прямой (ws/wss): без SSH-туннеля. Приложение mac подключается к URL-адресу шлюза напрямую (например, через Tailscale Serve или публичный HTTPS-прокси).

Удаленные транспорты

Удаленный режим поддерживает два транспорта:

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

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

  1. Установите Node + pnpm и соберите/установите CLI OpenClaw (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 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://... для локального/LAN).
    • Identity file (расширенное): путь к вашему ключу.
    • Project root (расширенное): путь к удаленному checkout, используемый для команд.
    • CLI path (расширенное): опциональный путь к исполняемой точке входа/бинарнику openclaw (автозаполняется при объявлении).
  3. Нажмите Test remote. Успех указывает, что удаленный openclaw status --json выполняется корректно. Сбои обычно означают проблемы с PATH/CLI; выход 127 означает, что CLI не найден удаленно.
  4. Проверки работоспособности и Web Chat теперь будут автоматически выполняться через этот SSH-туннель.

Web Chat

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

Разрешения

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

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

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

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

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

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

  • exit 127 / not found: openclaw не находится в PATH для не-login оболочек. Добавьте его в /etc/paths, ваш shell rc или создайте символическую ссылку в /usr/local/bin//opt/homebrew/bin.
  • Health probe failed: проверьте доступность SSH, PATH и что Baileys вошел в систему (openclaw status --json).
  • Web Chat stuck: подтвердите, что шлюз работает на удаленном хосте, и переадресованный порт соответствует порту WS шлюза; пользовательский интерфейс требует работающего WS-соединения.
  • Node IP shows 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

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