Вы поставили OpenClaw на выделенный облачный Mac KVMNODE, а macOS Setup Wizard крутит Retry с текстом Gateway did not become ready — в 2026 году это почти всегда расхождение PATH между SSH и launchd, уже упавший LaunchAgent, занятый порт 18789 или пустые EnvironmentVariables в plist, а не «сломанная модель». Ниже таблица из четырёх корней, развилка «графический мастер vs чистый CLI», семь проверяемых шагов и дерево M4 / M4 Pro. Сверяйтесь с официальным install-daemon, token launchd, диагностической лестницей и 18789 и логами.
01

2026 Retry мастера: четыре корня Gateway did not become ready

Setup Wizard ждёт доступный процесс Gateway в том окружении, которое реально видит launchd, а не зелёный вывод install.sh в интерактивной SSH-сессии. На облачном Mac эти миры расходятся системно. Корень №1 — CLI отсутствует в PATH launchd: which openclaw показывает Homebrew в SSH, а ProgramArguments plist указывают на другой префикс или относительный путь. Мастер опрашивает health; launchd не поднимает стабильный процесс — бесконечный Retry без новой подсказки.

Корень №2 — LaunchAgent уже в состоянии failed, UI пишет только not ready. Смотрите launchctl list до очередного Retry. Корень №3 — порт 18789 (или ваш из openclaw.json) занят или слушает только localhost, пока проверка идёт иначе; типичная связка — ручной gateway start плюс plist, см. двухконтурную установку. Корень №4 — нет EnvironmentVariables в plist (токен, OPENCLAW_*, WorkingDirectory), вилка token_missing.

Симптом в мастереВероятный кореньБыстрая проверкаРычаг
Тихий RetryPATH launchd ≠ SSHlaunchctl print vs which openclawАбсолютные пути в plist
Not ready после installАгент failedlaunchctl list | grep -i clawОдин label
Мигание портаДвойной 18789lsof -i :18789Остановить ручной start
Auth в shell, нет в UIEnv не наследуетсяplist + openclaw.jsonЕдиный источник правды

Зафиксируйте в тикете четыре строки: абсолютный путь openclaw, label LaunchAgent, listen-порт, exit code doctor. Retry без этих строк невоспроизводим — особенно при одновременном Screen Sharing и SSH. Если health-логи пишут персональные метаданные, ограничьте retention и опишите цель обработки в политике данных команды.

На уровне планировщика macOS launchd не наследует профиль интерактивного пользователя так же, как интерактивная оболочка: именно поэтому «у меня в терминале всё есть» не доказывает готовность Gateway для мастера. Сравните ProgramArguments с выводом type openclaw и с бинарём, который реально исполняется при launchctl kickstart. Расхождение версий Node между install.sh и ночным перезапуском даёт тот же симптом — зафиксируйте node -v и префикс npm global в тех же четырёх строках тикета.

В тикетах 2026.3.x часто пишут «install.sh OK», хотя gateway status уже другой. Разделите успех установки и успех readiness. Мастер опрашивает health с коротким timeout; Gateway, стабилизирующийся за 45–60 секунд, выглядит как бесконечный Retry. Сделайте один health-вызов и окно наблюдения 60 с, прежде чем менять регион или железо.

При bind только на 127.0.0.1 проверьте, что health и мастер смотрят на тот же интерфейс — иначе процесс жив, а readiness красная. Ошибка «address already in use» в stderr launchd почти всегда означает второй listener: снимите ручной gateway start до повторного onboard.

02

Дерево решений: macOS Setup Wizard или чистый CLI на облачном хосте

Графический мастер не обязателен. При работе только по SSH и туннеле к dashboard быстрее и прозрачнее для аудита путь openclaw onboard --install-daemon и openclaw doctor — см. headless SSH. Мастер оставляют, когда нужны разрешения macOS, связка с Keychain или приёмка через Screen Sharing для не-CLI роли.

A

Только CLI: install.sh → onboard install-daemon → doctor → gateway status → health; мастер закрыть.

B

Нужен мастер: сначала PATH и launchd, затем одно открытие мастера — не десять Retry на сломанном агенте.

C

Параллель запрещён: два Gateway → Retry и split brain; один label, один порт.

Перед мастером login и non-login shell должны видеть тот же Node и тот же openclaw, что plist. На хостах без GUI-сессии Homebrew только в .zprofile оставляет launchd с урезанным PATH. Проверяйте openclaw gateway call health. После стабильной readiness планируйте channels probe.

Если команда смешивает приложение OpenClaw для macOS и глобальный CLI, заранее решите, кто владеет портом 18789: attach к существующему listener или отдельный daemon — но не оба сценария одновременно. Несогласованность версий приложения и CLI даёт зелёный install.sh и красный мастер; выровняйте версии по runbook выравнивания CLI до очередного Retry.

Headless-путь удобен для аудита: каждый шаг — текст в тикете. Графический мастер — для Keychain и первого pairing. Не смешивайте шаблоны тикетов «Retry мастера» и «чистая установка». После install-daemon проверьте WorkingDirectory на ~/.openclaw, не на старый путь с ноутбука. При миграции сначала бэкап workspace.

03

Семь шагов: от which openclaw до первого сообщения

Каждый шаг даёт артефакт в тикет. Кнопка Retry не заменяет triage.

01

which openclaw: SSH login и non-login; значение в тикет.

02

Версия CLI: openclaw --version; сравнить с install.sh.

03

gateway status и doctor: полный вывод в файл.

04

Логи launchd: stderr label; /tmp/openclaw по гайду логов.

05

Порт и bind: lsof на 18789; firewall и json согласованы.

06

Health probe: один WS URL; timeout 3–5 с; JSON в тикет.

07

Первое сообщение: только при зелёном health и doctor без блокеров.

bash
which openclaw
openclaw --version
openclaw gateway status
openclaw doctor
launchctl list | grep -i openclaw
lsof -nP -iTCP:18789 -sTCP:LISTEN
openclaw gateway call health --url ws://127.0.0.1:18789 --timeout 5000

Открывайте мастер снова только после зелёного шага 06. Если шаг 04 красный — не запускайте слепо onboard --install-daemon; снимите старый label. Диагностическая лестница разнесёт несколько симптомов по L1/L2. При bind только на 127.0.0.1 убедитесь, что health и мастер смотрят на тот же интерфейс; иначе получите ложный not ready при живом процессе.

Шаг 04: stderr launchd вокруг label и свежие файлы в /tmp/openclaw. Ищите ENOENT по openclaw, ошибки модулей Node после апгрейда, конфликт 18789 vs 18999 в json. Шаг 07 — реальное сообщение или channel probe, не только зелёный dashboard. Повторяйте 03 и 06 ежедневно на неделе приёмки. После локальной readiness — remote auth.

04

Особенности облачного Mac: SSH PATH, Screen Sharing, шесть регионов

На KVMNODE SSH — место изменений, launchd — место исполнения. Screen Sharing показывает мастер, но не чинит plist автоматически. Укажите в тикете, приёмка по VNC или только CLI. Часовые пояса шести регионов (SG, JP, KR, HK, US East, US West) влияют на cron и ротацию, не на синтаксис Gateway; разделяйте /tmp/openclaw и постоянные логи, чтобы acceptance не уперлась в полный root-раздел.

Без TTY часть шагов мастера падает молча — переходите на CLI-приёмку. Несколько SSH без «четырёх строк» дают «вчера работало». Держите state вне team-sync, как в базовой персистентности. Мониторьте смену состояния Gateway, а не каждый poll мастера.

Retry в мастере — симптом; stderr launchd и doctor — диагноз.

После первого успешного прохода добавьте однострочный алерт на регрессию после апгрейда Node — иначе пользователи снова увидят Retry, хотя launchd уже дрейфует. Для смешанных команд с CI на том же хосте заранее разведите label-пулы runner и OpenClaw, иначе ночной job займёт 18789 и утренний мастер снова покажет Gateway did not become ready без явной связи в тикете.

Screen Sharing показывает мастер, но не правит plist. Договоритесь, кто правит по SSH, кто жмёт Retry — иначе состояние перезапишется. Cron health в часовом поясе узла, не ноутбука оператора. Разделяйте логи приёмки и продакшена, чтобы трёхдневный тест не забил ротацию.

На том же хосте с iOS CI см. изоляцию same-pool до смены тарифа. Unified memory на Apple Silicon делит pressure между xcodebuild и Gateway — при повторяющихся пиках на 16 ГБ планируйте M4 Pro, а не бесконечный Retry.

05

Регион и тариф: ближний M4 для пробы, M4 Pro для постоянного Gateway и CI

Для первого прохода мастера без параллельного xcodebuild часто хватает ближнего M4 на 16 ГБ при колокации Git и умеренном workspace. Берите M4 Pro с большим unified memory, если в ту же неделю acceptance совмещает iOS CI, крупные skills и Gateway под memory pressure или порт 18789 снова конфликтует с runner.

ПрофильM4 16 ГБM4 24 ГБM4 Pro
Мастер + один агентОбычноКомфортнееЧасто избыточен
Мастер + параллельный CIРискСреднеПредпочтительно
Retry после фиксаПроверить SKUЛоги + тарифРассмотреть split

Ноутбук со сном — плохой эталон «у меня мастер прошёл локально»; выделенный облачный Mac даёт стабильные окна launchd. Для аудируемой readiness Gateway типичен аренда Mac mini KVMNODE: шесть регионов, Apple Silicon, тот же язык PATH/plist, что в этом runbook. Цены — страница цен, гайды — центр помощи, заказ — оформить заказ.

Ближние регионы (SG, JP, KR, HK) снижают RTT SSH, правила launchd не меняют. US East/West — если Git и артефакты уже в Северной Америке. Три метрики приёмки: рестарты LaunchAgent, P95 health, рост логов. Tarball ~/.openclaw перед сменой региона — мастер память не переносит.

Разведите внутренние шаблоны «Retry мастера» и «greenfield install». Retry-тикет требует четыре строки доказательств и JSON health; greenfield может стартовать с пустым workspace. Смешение шаблонов в wiki приводит к приёмке пустого агента без истории для стейкхолдеров.

Metal и компиляционные нагрузки на том же узле усиливают memory pressure в едином пуле — отслеживайте события давления памяти в логах системы во время параллельного Gateway и сборки. Если pressure коррелирует с Retry, разнесите CI и OpenClaw по узлам или поднимите тариф до M4 Pro с большим unified memory.