Удалённый 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 клиента.
Предварительные требования на удалённом хосте
- Установите Node + pnpm и соберите/установите OpenClaw CLI (
pnpm install && pnpm build && pnpm link --global). - Убедитесь, что
openclawнаходится в PATH для неинтерактивных оболочек (при необходимости создайте симлинк в/usr/local/binили/opt/homebrew/bin). - Откройте SSH с аутентификацией по ключу. Для стабильной доступности вне LAN рекомендуется использовать IP‑адреса Tailscale.
Настройка приложения macOS
- Откройте Settings → General.
- В разделе 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(автозаполняется при объявлении).
- Нажмите Test remote. Успех означает, что удалённый
openclaw status --jsonработает корректно. Сбои обычно указывают на проблемы PATH/CLI; код выхода 127 означает, что CLI не найден на удалённой стороне. - Проверки состояния и 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, например: