На удалённом Mac чаще ломается согласованность среды: shell видит один node, а LaunchAgent — другой; порт 18789 занят чужим процессом; токен есть в терминале, но не в plist. Чеклист под шлюз 2026: localhost, openclaw gateway status --format json и /health. См. токен, status в CI, validate; главная и покупка без входа.

Три типовых узких места перед приёмкой

Первое — разные пути Node в SSH и launchd (nvm из .zshrc не подхватывается). Второе — чужой слушатель на 18789 при «зелёном» doctor. Третье — bind не на loopback без того же OPENCLAW_GATEWAY_TOKEN, что в бою. Ниже — шаги без выдуманных подкоманд.

Предпосылки Node 22+ и фиксация путей

Запишите node -v, which node и node -p "process.execPath". Мажор ≥ 22. В plist в ProgramArguments — тот же абсолютный путь к node, что и при ручном openclaw; иначе doctor и gateway status --format json расходятся с демоном.

Выбор пути установки: официальный сценарий или npm -g

Один канал на роль: официальный install.sh (доверенный источник) или npm install -g openclaw@<версия>. Сохраните which openclaw и openclaw --version; при расхождении semver смотрите PATH, не сеть.

Канал Когда уместен Риски и контроль
install.sh Нужно быстро повторить официальную цепочку на чистой машине Подпись и канал загрузки; запрет пайпов — копируйте файл и запускайте с аудитом
npm -g Единый способ версионирования с другими Node-инструментами Префикс глобальных пакетов и права; согласуйте с PATH в plist
# Пример: официальный сценарий (если политика ИБ разрешает) curl -fsSL https://openclaw.ai/install.sh | bash # Либо только npm-канал с закреплением версии npm install -g openclaw@X.Y.Z which openclaw openclaw --version

Loopback-шлюз, порт 18789 и OPENCLAW_GATEWAY_TOKEN

По документации Gateway: порт 18789, приёмка на 127.0.0.1. openclaw gateway status --format json — снимок состояния; curl на http://127.0.0.1:18789/health с Authorization: Bearer — вторичный зонд. OPENCLAW_GATEWAY_TOKEN одинаков в shell, plist и CI.

Демон, launchd и проверка после перезагрузки

  1. Выполните openclaw onboard --install-daemon и зафиксируйте Label LaunchAgent в журнале.
  2. Проверьте блок переменных окружения в plist: OPENCLAW_GATEWAY_TOKEN, при необходимости OPENCLAW_HOME и путь к node.
  3. Перезагрузите хост в окно обслуживания и снова выполните lsof -nP -iTCP:18789 -sTCP:LISTEN; PID и командная строка должны совпадать с ожидаемым бинарником openclaw.

Нет LISTEN после ребута — чаще неверный node в plist или токен; смотрите логи launchctl.

Цепочка приёмки: validate, doctor, status и /health

Порядок фиксирован; stdout — в файлы артефакта. Не добавляйте неизвестные флаги — только то, что даёт ваша версия CLI.

openclaw config validate 2>&1 | tee validate.log openclaw doctor openclaw gateway status --format json > gateway-status.json || true sleep 2 curl -fsS -H "Authorization: Bearer ${OPENCLAW_GATEWAY_TOKEN}" "http://127.0.0.1:18789/health" || true lsof -nP -iTCP:18789 -sTCP:LISTEN > port-18789.txt || true

validate — конфиг; doctor — среда; status JSON — процесс; curl — HTTP; lsof — кто на 18789. Такой порядок совпадает с практикой CI-ворот и упрощает сравнение логов между ручной приёмкой и пайплайном на том же хосте.

Мета и slug: файл 2026-openclaw-remote-mac-install-gateway-doctor-checklist.html; ключевые сигналы для краулера — 18789, 127.0.0.1, openclaw gateway status --format json, /health; перелинковка на материалы по токену, статусу и validate уже в лиде.

Отпечатки типовых ошибок и порядок отката

Симптом или сигнатура Действия отката и восстановления
EADDRINUSE или lsof показывает чужой бинарник на 18789 Остановите конфликтующий процесс в окне обслуживания, выгрузите LaunchAgent, синхронизируйте версию CLI и plist, повторите цепочку приёмки
connection refused либо пустой или зависший gateway status Проверьте путь к Node в plist, корректность токена, затем короткая пауза и повтор openclaw gateway status --format json
Предупреждения doctor о каталогах прав или OPENCLAW_HOME Выровняйте владельца файлов и рабочий каталог с пользователем демона, откатите последний diff конфигурации, снова openclaw doctor
Тезисы для вставки в runbook
  • В каждый билд артефакта приёмки кладите одну строку с версией openclaw --version и одну строку lsof на порт 18789.
  • Любое изменение дерева конфигурации сопровождайте двумя прогонами openclaw config validate — до и после — с приложенным diff.
  • Минимальный безопасный откат: стоп демона → восстановление предыдущего состояния файлов → переустановка закреплённой версии → повтор doctor и status до совпадения PID.

FAQ

Достаточно ли только JSON из gateway status без curl?

JSON полезен для автоматизации, но HTTP-зонд к /health воспроизводит тот же путь, что и реальные клиенты с Bearer. Для строгой приёмки оставьте оба шага.

Почему нельзя произвольно добавлять новые подкоманды в чеклист?

Статья намеренно ограничивается openclaw config validate, openclaw doctor, openclaw gateway status и openclaw onboard --install-daemon. Остальное смотрите в официальной справке CLI для вашей версии, иначе runbook быстро устареет.

Где взять изолированный Mac под такие проверки?

Аренда выделенного Apple Silicon на MacPull снимает конкуренцию за порт и диск с соседними арендаторами: см. цены и центр помощи.

Итог и покупка: закрепите Node 22+, один способ установки и loopback на 18789, затем прогоните openclaw config validate, openclaw doctor, openclaw gateway status --format json и curl к /health. Для выделенного удалённого Mac без «шумных соседей» откройте страницу покупки, сравните тарифы на странице цен, задайте вопрос через центр помощи и вернитесь к каталогу блога за соседними материалами по OpenClaw.

Выделенный удалённый Mac для OpenClaw и приёмки шлюза

Главная, цены, покупка, помощь и блог — без обязательного входа.