OpenClaw Node.js LTS vs Current и матрица launchd PATH на арендованном Mac mini для 2026
DevOps-инженеры, поставляющие OpenClaw на арендованном Apple Silicon Mac mini у VmMac быстро видят: openclaw gateway блестит в интерактивной оболочке — и умирает под launchd после очередного brew upgrade. Почти всегда виноват дрейф PATH: Homebrew переключает /opt/homebrew/opt/node@22/bin, shims nvm исчезают, потому что launchd не подключал ~/.zshrc, или вы закрепили Current, пока минор ломал нативные аддоны. Матрица 2026 объясняет LTS vs Current, как укрепить таблицы окружения LaunchAgent и держать хосты в Гонконге, Японии, Корее, Сингапуре и США скучно-надёжными. Перекрёстные ссылки: гайд по установке и деплою, секреты и гигиена plist, структурированные логи и ротация. Для изоляции кэшей на том же хосте см. матрицу второго тома APFS.
VmMac не закрепляет Node; отдаёт SSH/VNC к физическим M-series. Используйте справочный центр для моделей доступа и тарифы, когда добавляете staging до смены прод-профилей launchd.
У launchd нет login-shell (и это весь класс багов)
Интерактивные оболочки подгружают ~/.zprofile, ~/.zshrc, хуки fnm и direnv. Агенты launchd наследуют минимальное окружение без явной декларации. Симптомы: exit 127 для node, частичный старт OpenClaw, срыв резолва плагинов, глобальные префиксы npm, пишущие не в тот home. Архитектурное исправление: никогда не полагаться на обнаружение PATH для прод-демонов на общих арендованных хостах. Оборачивайте маленьким shell-скриптом с явным NODE и логированием версий в JSON-строки для вашего конвейера.
node без абсолютного пути, закладывайте ≤ 14 дней долга инцидентов — кто-то обновит Homebrew за обедом.
Не забывайте POSIX-права: обёртки читаемы пользователем LaunchAgent, не world-writable; логи без секретов даже при соблазне DEBUG=*. Повторяющиеся постмортемы включают chmod -R на общих путях, блокирующий апдейты — задокументируйте каталоги, требующие root.
LTS vs Current: бюджет риска для общих арендованных Mac mini
LTS следует более медленному semver — важно, когда плагины OpenClaw линкуют нативные модули к конкретной NODE_MODULE_VERSION. Current покупает передний край V8, но привязывает к еженедельному мониторингу. Числовая политика: меньше трёх сопровождающих флот → по умолчанию LTS; автоматический смоук каждые 24 часа и горячий резервный mini → Current с письменным откатом приемлем.
| Канал | Каденция апгрейда, которую нужно закрывать людьми | Когда выигрывает | Числовой ограничитель |
|---|---|---|---|
| Node LTS (напр. 22.x) | Ежемесячный обзор патчей | Общие хосты, команды с compliance | ≤ 2 runtime-инцидента в квартал |
| Node Current | Еженедельный diff + canary-хост | Исследовательские агенты, экспериментальные toolchain | Canary проходит 12 проверок до prod |
| Смешанная флота | Только по-хостовое закрепление | Никогда — столкновения PATH возвращаются | Ноль общих пользователей между каналами |
fnm vs nvm vs Homebrew Node: что launchd реально видит
nvm опирается на функции shell; избегайте прямого вызова из ProgramArguments plist. fnm может исполнять настоящие бинарники, если материализуете symlink при деплое. Homebrew прост для одно-версионных хостов, но хрупок к апгрейдам. Многие клиенты VmMac комбинируют fnm + обёртку: fnm для людей, /usr/local/bin/oc-node — стабильный symlink, обновляемый шагом Ansible.
- Дрилл обнаружения: выведите
which nodeв интерактивном SSH и из тестового plist, пишущего в/tmp/nodepath.log; несовпадение = долг. - Дрилл ABI:
node -p process.versionsв обоих контекстах; патч должен совпадать с документированным.
Матрица окружения plist: PATH, NODE_OPTIONS, WorkingDirectory
| Ключ | Назначение | Типичная ошибка |
|---|---|---|
PATH |
Найти node, npm, openclaw | Пропустить /usr/local/bin перед brew-shim |
WorkingDirectory |
Якорить относительный конфиг | Указать на удалённый temp после reboot |
NODE_OPTIONS |
Диагностические флаги | Протечка --inspect в прод-порты |
Семишаговый runbook ужесточения OpenClaw под launchd
- Установить Node выбранным каналом; semver в git.
- Создать
/usr/local/bin/vm-openclaw.sh, экспортирующий абсолютныйNODEи запускающий OpenClaw с логированием. - Направить
ProgramArgumentsна обёртку, не на голыйopenclaw. - Задать
WorkingDirectoryна home агента со стейтом~/.openclaw. - Зеркалировать
PATHявно с ≤ 6 записями, снижая поверхность инъекции. - Ночная задача, пишущая
node -vв структурированные логи по гайду ротации. - Репетировать
brew upgrade nodeна staging mini той же региона VmMac до prod.
Дополните устранением портов демона, если шлюзы теряют health checks после фиксов PATH.
Плейбук отката, когда минор Node ломает аддоны
Держите предыдущий tarball Node или ревизию формулы brew во внутреннем зеркале. Откат: остановить LaunchAgent, поменять symlink на предыдущий патч, npm rebuild для нативных deps, перезапустить шлюз, проверить P95 латентности webhook < 250 мс к тестовому endpoint. Документируйте владельца и время — откаты дольше 20 минут сигнализируют о неполной обёртке.
После каждого bump Node — бенчмарк cold-start: загрузка шлюза до первой успешной health-пробы, цель < 8 с на M4 mini с локальным SSD. Выше 15 с — сначала блокирующая компиляция модулей или каскады динамического import, прежде чем винить сеть. Храните JSON бенчмарка рядом с ревизией plist для аудита против semver.
Смоук пяти регионов: держать версии согласованными на POP VmMac
Латентность не меняет семантику Node; дрейф операторов меняет. Тот же семишаговый plist еженедельно по регионам; дифф контрольных сумм plist в CI. При всплесках ёмкости добавляйте машины через pricing, а не оставляйте одну регион на Current, другую на LTS.
FAQ: Node и OpenClaw на арендованном Mac mini
Использовать Node из инсталляционного скрипта OpenClaw? Как bootstrap да; прод-launchd всегда на абсолютных путях под вашим контролем.
Важен ли Rosetta? Предпочитайте arm64-нативный Node на Apple Silicon; смесь x64 Node и arm64-бинарников даёт тонкие сбои PATH/dylib.
Куда класть секреты? Следуйте матрице секретов — не дублируйте токены между plist и ~/.openclaw/.env без правил приоритета.
Почему Mac mini M4 и VmMac вознаграждают явное закрепление Node
Apple Silicon Mac mini даёт предсказуемую односокетную производительность для постоянно включённых агентов — ровно нагрузка OpenClaw с SSH-автоматизацией и опциональным VNC для человеческих подтверждений. Аренда в Гонконге, Японии, Корее, Сингапуре и США позволяет canary-шлюзы ближе к пользователям при идентичных шаблонах plist. VmMac — не менеджер пакетов, а металл и сеть. Владейте каналом Node, честно подключайте launchd, агенты останутся скучными в хорошем смысле.
Поднимите canary mini перед сменой Node
Добавьте staging Mac mini в предпочитаемом регионе VmMac, чтобы отрепетировать смену plist и смоук шлюза.