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.
| Симптом в мастере | Вероятный корень | Быстрая проверка | Рычаг |
|---|---|---|---|
| Тихий Retry | PATH launchd ≠ SSH | launchctl print vs which openclaw | Абсолютные пути в plist |
| Not ready после install | Агент failed | launchctl list | grep -i claw | Один label |
| Мигание порта | Двойной 18789 | lsof -i :18789 | Остановить ручной start |
| Auth в shell, нет в UI | Env не наследуется | 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.
Дерево решений: macOS Setup Wizard или чистый CLI на облачном хосте
Графический мастер не обязателен. При работе только по SSH и туннеле к dashboard быстрее и прозрачнее для аудита путь openclaw onboard --install-daemon и openclaw doctor — см. headless SSH. Мастер оставляют, когда нужны разрешения macOS, связка с Keychain или приёмка через Screen Sharing для не-CLI роли.
Только CLI: install.sh → onboard install-daemon → doctor → gateway status → health; мастер закрыть.
Нужен мастер: сначала PATH и launchd, затем одно открытие мастера — не десять Retry на сломанном агенте.
Параллель запрещён: два 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.
Семь шагов: от which openclaw до первого сообщения
Каждый шаг даёт артефакт в тикет. Кнопка Retry не заменяет triage.
which openclaw: SSH login и non-login; значение в тикет.
Версия CLI: openclaw --version; сравнить с install.sh.
gateway status и doctor: полный вывод в файл.
Логи launchd: stderr label; /tmp/openclaw по гайду логов.
Порт и bind: lsof на 18789; firewall и json согласованы.
Health probe: один WS URL; timeout 3–5 с; JSON в тикет.
Первое сообщение: только при зелёном health и doctor без блокеров.
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.
Особенности облачного 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.
Регион и тариф: ближний 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.