Команды, которые гоняют OpenClaw на арендованных облачных Mac, чаще борются с дрейфом после апгрейда, чем с первым инсталлом. Схема ушла от gateway.token к gateway.auth.token, launchd может всё ещё стартовать старый глобальный openclaw, пока ваша интерактивная оболочка видит новый, а смена gateway.bind на lan без согласованной аутентификации заставляет шлюз отказаться от listen. Этот ранбук закрывает снимки состояния до апгрейда, дисциплинированный порядок для openclaw doctor и openclaw gateway status --deep, починку split brain, воспроизводимые шаблоны ssh -L и Tailscale для порта 18789 и реальные границы gateway install --force. Сочетайте с чек-листом установки и статьёй постоянный агент 24/7, чтобы замкнуть цикл от онбординга до обновлений.
01

Пять типичных поломок после апгрейда в 2026: не вините сначала модель

Свежие сборки OpenClaw ужесточают локальные бинды шлюза и проверки auth. Если gateway.bind уходит с loopback без валидного gateway.auth.token, старт падает рано. Если интерактивный shell резолвит более новый глобальный openclaw, а launchd всё ещё указывает на старый префикс, вы видите чистый doctor и при этом мёртвые RPC-пробы: классический split brain. Третий сценарий оставляет только устаревший ключ gateway.token, который новая схема игнорирует, и дашборд крутит 401. Четвёртый кладёт state под корпоративную синхронизацию или сетевой home, и записи апгрейда гоняются с читателем демона. Пятый открывает 18789 на публичном интерфейсе до завершения прикладной аутентификации, усиливая шум сканеров и заставляя дежурных гнаться за фантомными таймаутами модели.

Пять контрольных точек ниже задают порядок: заморозить версии и файлы до температур и API-ключей. Если первый онбординг не закрыт, сначала завершите чек-лист установки, затем возвращайтесь к апгрейд-специфичным шагам.

01

Дрейф ключей: npm обновили, но gateway.auth.token так и не попал в профиль, видимый plist, дашборд и CLI читают разные куски.

02

Двойные бинарники: which openclaw не совпадает с первым ProgramArguments; новые поля применяются только с одной стороны.

03

Неполная пара bind и auth: lan без токена завершает шлюз; в логах часто отказ bind.

04

Порт без владельца в таблице: 18789 держит хвост отладки, EADDRINUSE переживает рестарты до зачистки.

05

Сырой интернет: слушать на недоверенных интерфейсах до туннелей или edge ACL зовёт бессмысленные ретраи.

Считайте апгрейды задачей выравнивания бинарников, метаданных plist и конфигов; уже потом выбирайте туннель или контролируемый bind.

Подводный камень — наследование окружения: задания launchd не подтягивают автоматически экспорты из удобства в shell-профилях. Если токен сгенерирован в интерактиве и записан только в rc, демон его никогда не увидит. Устойчивый паттерн — хранить секреты там, где сервис уже читает конфиг, или использовать документированные env-file хуки, затем рестарт и doctor снова с точки зрения сервиса. В тикет рядом с меткой plist добавьте ожидаемый SHA или semver CLI, чтобы следующий апгрейд не расширял тихо разрыв между человеческим и контролируемым запуском.

Если несколько инженеров делят один облачный Mac для экспериментов, добавьте в ранбук короткую ротационную заметку: кто последним запускал force, какой профиль владеет шлюзом, откатили ли временные bind. Общие хосты усиливают split brain, потому что каждый считает свой PATH универсальным. Одна авторитетная таблица бинарников, меток plist и listen-адресов снимает пятничные угадайки.

После перепечки золотого образа явно сверяйте глобальный npm-префикс с путями в ваших LaunchAgents. Платформенные команды иногда забывают переписать агенты при смене базового образа, и сервис тихо сидит на фантомном бинарнике. Сравните вывод openclaw --version под launchd и в своей оболочке до любых правок токена или bind. Это согласуется с статьёй о постоянном агенте: heartbeat предполагает тот же исполняемый файл после холодного ребута и после апгрейда.

Если CI печёт образы, добавьте дым после сборки: неинтерактивный doctor и падение пайплайна при превышении вашего порога предупреждений. Регрессии апгрейда сдвигаются влево, где они дешевле. Артефакт дыма храните рядом со строкой версии образа, чтобы сравнивать вторник и четверг без SSH-археологии. Дополнительно фиксируйте владельца порта 18789 в тикете вместе с регионом и SKU, иначе финансы и платформа смотрят на разные цифры.

02

Сравнение: только loopback, LAN плюс токен, туннелированный доступ к дашборду

На облачных Mac базовая поза — loopback плюс локальный SSH-forward или Tailnet с жёсткими ACL. Это другая модель угроз, чем вешать 18789 на публичный интерфейс. Таблица на первой странице ранбука останавливает спонтанные споры о bind.

РежимЛучше дляПредпосылкиОстрые углы
loopbackОдин инженер, SSH и локальный браузерПроще всего по умолчанию; токен опционаленИнтернет-хелсчеки без туннелей падают
lan + tokenВнутренние пробы на фиксированных RFC1918Нужен gateway.auth.token и минимальные дыры в фаерволеНет токена в окружении plist — сервис с пустыми руками
SSH -L / TailscaleОперации через интернет с zero-trust краемРотация SSH-ключей и план MagicDNSЛокальные коллизии портов; скрипты переподключения после сна
СигналЗдорово когдаПодозревать сначала если плохо
openclaw doctorСхема, токен, порт, согласованность супервизораЛегаси-ключи, PATH, блокировки синка
openclaw gateway statusРантайм и сводка RPC-пробыПроцесс жив, RPC мёртв, дрейф токена
openclaw gateway status --deepДубликаты установок и намёки user против system unitДвойные задания launchd, старые plist

Сначала выровняйте кто запускает, какой конфиг грузится и какой адрес слушает, потом туннелируйте; иначе вы лишь разнесёте рассогласование на больше ноутбуков.

Верхний troubleshooting начинается с openclaw status, openclaw gateway status, openclaw logs --follow, openclaw doctor. На облачных образах фиксируйте, совпадают ли Node и глобальный префикс с ожиданиями plist после обновления золотого образа.

Tailscale и SSH-туннели имеют разную операционную цену. Tailscale даёт DNS-имена и ACL для маленьких команд без запоминания SSH-флагов на хост, но добавляет ещё одну цепочку патчей и аудита. SSH port-forward скучен — плюс, когда комплаенс хочет минимум движущихся частей. Некоторые команды комбинируют: Tailscale для досягаемости, loopback bind на шлюзе, явные deny, чтобы случайные LAN-binds не появлялись во время апгрейдов. Опишите деградацию, когда туннель падает: агенты не должут долбить мёртвый сокет.

Планирование ёмкости остаётся: апгрейд OpenClaw не снимает давление памяти больших тулчейнов. Если в логах OOM рядом с рестартами шлюза, оформите отдельный тикет от auth-фейлов. Плейбук памяти и диска на этом сайте помогает решить, покупает ли запас M4 Pro стабильность или достаточно чистых метаданных супервизора.

Для мультирегиона у каждого экземпляра шлюза должны быть свои поля тикета: режим bind и команда туннеля. Иначе одна команда успешно уходит на loopback плюс SSH, другая держит экспериментальные LAN-binds, и вы смешиваете метрики. Консолидируйте по региону и режиму, не глобально вперемешку. Свяжите это с чек-листом первого старта, чтобы старые скриншоты не вернули публичные бинды.

03

Миграция токена и split brain: заставить супервизор читать ваши правки

Если в ~/.openclaw/openclaw.json уже есть gateway.auth.token, а дашборды всё ещё 401, следующий шаг не десятый токен. Проверьте рабочий каталог launchd и совпадение OPENCLAW_STATE_DIR с интерактивной оболочкой. Часть облачных образов разделяет домашние каталоги автоматизации и логина; plist на неверном аккаунте создаёт иллюзию, что cat показывает токен, а сервис нет.

Если doctor сообщает, что более новый конфиг трогал более старый бинарник, сначала PATH, затем перепишите метаданные супервизора из нужной установки. Избегайте быстрых циклов config set, пока старый бинарник ещё под надзором, иначе мета-версии блокируют мутации без явного UI.

Shell
openclaw doctor
openclaw config get gateway.auth.token
openclaw gateway status --deep
openclaw gateway install --force
openclaw gateway restart

Заметка: в окне изменений снимок openclaw.json, метки plist и вывода openclaw --version вместе; откат тройкой, не одиночным файлом.

Для передачи смены приклейте четыре вывода команд рядом с секцией heartbeat в статье про постоянный агент, чтобы ночная смена не опиралась на чат-фольклор про порты.

После каждого force явно проверяйте, что только один активный пользовательский LaunchAgent владеет процессом шлюза и нет сиротских ProgramArguments на старые npm-пути. Deep-статус часто показывает забытые дубликаты прошлых экспериментов, которые держат порты или читают неверные токены. Отключите их до следующего выката, иначе split brain вернётся после ребута.

04

Шесть воспроизводимых шагов от здорового loopback к безопасному удалённому 18789

Предполагается, что loopback на сервере уже работает; иначе вернитесь к чек-листу установки для онбординга и демона. Только потом добавляйте удалённые пути, чтобы сеть не маскировалась под auth.

01

Локальное доказательство: на хосте curl на http://127.0.0.1:18789/ или документированный health и записать HTTP-код.

02

Выбор пути: один ноутбук — ssh -L 18789:127.0.0.1:18789 user@cloud-mac; шире команда — Tailscale с ACL.

03

Разрулить коллизии: если локальный 18789 занят, ssh -L 19000:127.0.0.1:18789 и открыть высокий локальный порт.

04

Выровнять токены: туннели всё равно показывают токен шлюза браузеру; хранить в vault, не в чате.

05

План отключений: autossh или аналог, чтобы фоновые задачи не думали, что шлюз исчез.

06

Тикет: режим bind, команда туннеля и владелец порта в той же записи изменения, что регион и SKU; заказ через проверенную страницу.

В шестом шаге явно опишите, какие правила фаервола между ноутбуком и облачным Mac разрешены и может ли корпоративный VPN с split-tunnel рвать SSH. Много ложных auth-проблем — это блокировка локальных форвардов, а не неверные токены. Одна фраза в ранбуке экономит часы.

05

Три продакшн-шлюза и когда оправдан gateway install --force

A

Версии согласованы: meta.lastTouchedVersion и openclaw --version двигаются вместе; намеренный даунгрейд — отдельная политика, не тихий злоупотребление force.

B

Один источник супервизора: по умолчанию одна user-level gateway unit на хост; дубликаты в deep — отключить лишнее до force.

C

Границы force: когда порты plist расходятся с живой конфигурацией или doctor явно просит обновить супервизор; не замена ротации секретов или обзору security group.

Предупреждение: бить force без логов и doctor превращает простую коллизию портов в петлю рестартов и расширяет окно аварии.

По сравнению с ноутбуком коллеги как хостом шлюза, закрепить OpenClaw на арендуемом облачном Mac KVMNODE проще сводит пути бинарников, метки plist, токены и команды туннелей в одну запись изменения; ноутбуки всё ещё теряют время на сон и апгрейды ОС. Командам, которым нужно документировать наблюдаемость, откат апгрейдов и продления на еженедельных ревью, выделенное bare metal с выбором метро обычно проще исполнить, чем разбросанное железо: краткая аренда в выбранном регионе для проверки апгрейдов и туннелей, затем решение по M4 Pro и длинным срокам через страницу цен и центр помощи вместо ночных чат-запросов на релизе.

На постмортемах явно классифицируйте события force по шлюзам A–C. Без такой таксономии команда решает, что force — универсальное лекарство, что снова порождает дрейф, когда токены крутятся, а супервизор держит старые метаданные.