2026: OpenClaw Node for VS Code на удалённом физическом Mac‑шлюзе — воспроизводимый runbook: установка расширения, подключение к порту 18789, семантика loopback и SSH‑проброс, трения прав macOS (TCC) — пошаговый разбор и FAQ
Команды, арендующие безголовый физический Mac под OpenClaw, часто добиваются успеха по SSH и curl на самой машине, а затем проваливаются, когда расширение VS Code на ноутбуке по-прежнему смотрит на 127.0.0.1. В этом runbook — матрица решений по транспорту, чек‑лист из семи шагов, готовые команды диагностики, ориентиры по параметрам и FAQ для продакшн‑шлюзов в духе узлов ZoneMac.
Введение: на три вопроса отвечаем сразу
Кому — платформенным инженерам, поднимающим OpenClaw на выделенном или пуловом удалённом Mac. Что получите — один воспроизводимый путь от расширения Marketplace до устойчивого HTTP‑контура на порту 18789 (или вашем переопределении) без путаницы «loopback на сервере = успех для всех». Структура — боли, матрица, семь шагов, цифры для ссылок, triage, FAQ и зачем здесь Apple Silicon Mac mini.
Про выбор Docker против bare metal, постоянные тома и healthchecks в Compose на удалённом Mac — см. OpenClaw на удалённом Mac: Docker или bare metal? Healthchecks и FAQ. Если узкое место — задержка и «рывки» при SSH‑туннеле к шлюзу, начните с чек-листа в руководстве по оптимизации задержки при работе с удалённым Mac (2026).
1. Три типичные боли
- Loopback не «переносится» между машинами. Успешный
curl http://127.0.0.1:18789/healthна сервере доказывает только процесс шлюза и политику файрвола на этом хосте. Окно VS Code на другой машине нуждается в явном туннеле, split‑horizon DNS или reverse proxy — иначе расширение спокойно стучится в свой собственный loopback и получает таймаут. - Отказы прав маскируются под «плохой порт». TCC может блокировать чтение Keychain, автоматизацию Terminal или запись в защищённые каталоги, пока
lsofвсё ещё показывает LISTEN. Смена nginx тогда не поможет, если в stderr ужеEPERM. - Тихий дрейф между JSON, plist и UI. Кто-то поменял bind в
openclaw.json, но не LaunchAgentProgramArguments, или в workspace VS Code осталосьhttp://127.0.0.1:18789, а в проде уже TLS наlocalhost:8443— регрессии выглядят «рваными», потому что у коллег разные облака настроек.
2. Матрица решений: как расширению VS Code достучаться до шлюза?
В каждой среде закрепите один основной транспорт; смесь ad‑hoc SSH‑пробросов и общего upstream nginx без документации — прямой путь к выходным дежурствам.
| Паттерн | Лучше всего для | На что смотреть |
|---|---|---|
| Прямой loopback на Mac | Автоматизации, cron, локальные скрипты doctor | Невидим с удалённых ноутбуков; бинд на 127.0.0.1, чтобы не открыть WAN по ошибке |
SSH -L (локальный проброс) |
Разработчиков, подключающих VS Code из дома или отельного Wi‑Fi | Keepalive и jump‑хосты должны совпадать с корпоративной политикой; задокументируйте локальный порт (например 18789 → тот же порт на ноутбуке) |
| nginx/Caddy на loopback + TLS | Команд с mTLS, SSO‑заголовками или маршрутизацией по путям к нескольким демонам | Обновление сертификатов и опечатки proxy_pass; базовый URL расширения — публичное имя, а не «голый» 18789 |
3. Семишаговый runbook
- Зафиксируйте слушатель. На удалённом Mac:
lsof -nP -iTCP:18789 -sTCP:LISTENиcurl -sS -o /dev/null -w "%{http_code}" http://127.0.0.1:18789/(путь подстройте под ваш префикс). - Установите OpenClaw Node в VS Code. Закрепите версию расширения в рекомендациях
extensions.json, чтобы схема RPC совпадала у всех. - Опубликуйте контракт базового URL. Зафиксируйте в документации: поле шлюза —
http://127.0.0.1:18789только послеssh -L 18789:127.0.0.1:18789 user@gateway, либоhttps://openclaw.internalза reverse proxy. - Укрепите launchd. Используйте
RunAtLoad,ThrottleIntervalи явныйWorkingDirectory; переменные окружения — из фрагмента plist, читаемого root, а не из world‑writable dotfiles. - Пройдите TCC осознанно. Если шлюз вызывает AppleScript или читает сертификаты разработчика, заранее одобрите бинарник в «Конфиденциальность и безопасность» и приложите скриншот к внутреннему security‑review.
- Приёмка с клиента. С ноутбука разработчика после поднятия туннеля:
nc -vz 127.0.0.1 18789; при TLS спереди —openssl s_client -connect openclaw.internal:443 -servername openclaw.internal. - Заморозьте базовую линию. Закоммитьте фрагменты JSON и plist в платформенный репозиторий; тегируйте релиз, когда semver шлюза и расширения совместно проверены.
4. Параметры для ссылок в тикетах
- 18789 — распространённая конвенция локального HTTP‑контура OpenClaw в шаблонах 2026 года; считайте настраиваемым, не «магическим».
- 127.0.0.1 против 0.0.0.0 — loopback исключает случайную экспозицию в WAN; привязка ко всем интерфейсам требует файрвола/VPC и редко нужна именно для интеграции с VS Code.
- ~30–60 с — типичный бюджет холодного старта LaunchAgent после перезагрузки до эскалации дежурному; сочетайте с
ThrottleInterval, чтобы избежать шторма рестартов.
5. Шпаргалка triage
| Симптом | Вероятная причина | Первая команда или фикс |
|---|---|---|
| ECONNREFUSED только с ноутбука | Нет SSH‑проброса / неверный локальный порт | Повторите SSH с -v; проверьте LocalForward в ~/.ssh/config |
| HTTP 502 от nginx | Upstream лежит или неверный сокет | curl -v http://127.0.0.1:18789 прямо на Mac; хвост error_log |
| Процесс выходит с кодом 1, порт свободен | TCC / отсутствует секрет | Console.app по подсистеме; FDA для пути к бинарнику; перезагрузка plist |
6. FAQ
Какую роль играет порт 18789?
Во многих сборках это дефолтная локальная HTTP‑поверхность для управления и трафика расширения — всегда сверяйте с вашим openclaw.json и LaunchAgent.
Удалённый curl работает, VS Code — нет. Почему?
Разные домены loopback. Нужен туннель или смена базового URL расширения на имя хоста, которое указывает на путь, который вы уже проверили.
Можно ли выставить 18789 в публичный интернет?
Крайне нежелательно без TLS, аутентификации/авторизации и лимитов. Предпочтительны VPN, Tailscale или SSH‑проброс для рабочих ноутбуков; «голый» порт на 127.0.0.1 оставьте за nginx, если нужен браузерный доступ.
Несколько экземпляров на одном Mac?
Выделите непересекающиеся порты и метки plist; перед каждым деплоем делайте grep по LISTEN.
7. Запускайте этот стек шлюза на Apple Silicon Mac mini
OpenClaw и автоматизация из VS Code выигрывают от машины, которая тихо работает круглосуточно: Mac mini на Apple Silicon в простое потребляет порядка 4 Вт, при этом даёт нативный Unix, launchd и интеграцию с Keychain без налога гипервизора. Gatekeeper, SIP и FileVault задают более предсказуемую границу доверия для долгоживущих API‑ключей, чем типичные Windows/Linux jump box.
Пропускная способность объединённой памяти держит отзывчивыми одновременные Node‑шлюзы, nginx и лёгких CI‑агентов — это важно, когда всплесками идут doctor‑пробы, RPC расширения и отгрузка логов. Если нужен тот же набор plist‑семантик без закупки своего железа, выделенный узел Mac mini в облаке — самый быстрый путь к воспроизводимому «железу».
Стандартизируете OpenClaw для распределённой команды — Mac mini M4 остаётся одним из самых выгодных якорей для круглосуточной macOS‑автоматизации: перейдите по CTA ниже, чтобы подобрать ёмкость под регион и комплаенс.
Нужен физический Mac‑шлюз сегодня?
Поднимите узел Apple Silicon на ZoneMac с SSH, образами, дружелюбными к launchd, и той же семантикой портов, что вы проверяли на 18789.