1. Диагностика: ставится, но не живёт
(1) Путать демо-шелл с продом: интерактивный openclaw gateway доказывает бинарники и токены, а не политику рестартов. Без одного супервизора каждый reboot или OOM возвращает ручную работу. (2) Разные контракты ОС: в Linux — journald, лимиты cgroup и ночные security-патчи; в macOS — сон с закрытой крышкой, App Nap и граница LaunchDaemon / LaunchAgent. (3) Обновления без отката: быстрые релизы OpenClaw и дрейф Node/Python рассинхронизируют Gateway и адаптеры каналов; логи выглядят как «всё мёртво», хотя проблема — несовпадение версий.
Команды без письменного контракта супервизора копят «зомби-Gateway»: старый foreground держит порт, пока systemd поднимает новый — TLS дёргается, edge отдаёт 502. Гигиена: один владелец процесса, явные bind-адреса, строка в runbook: «остановить супервизор до ручного дебага».
Второй класс ошибок — двойной источник правды (серверный openclaw.json против локального onboard). Каналы зелёны, пока «последний писатель» случайно прав. Git с фильтром секретов, неизменяемые артефакты деплоя и checksum при загрузке убирают рулетку.
Долг наблюдаемости превращается в эмоциональный дебаг: слепые рестарты, ротация ключей API. Фиксированная лестница снижает среднее время до невиновности.
На Linux ночные обновления могут рубить длинные задачи — окна обслуживания или транзакционные обновления. На macOS обновления App Store/Xcode меняют порядок фреймворков; перед крупным скачком ОС — снимки и репетиция Gateway на клоне.
Двойной запуск даёт конфликт портов. В проде — один супервизор; перед отладкой остановить unit и проверить свободный порт.
2. Матрица systemd / launchd
| Ось | Linux + systemd | Удалённый Mac + launchd |
|---|---|---|
| Главный выигрыш | дёшевый публичный egress, без сна, облачная автоматизация | цепочки Apple, медиа, unified memory для sidecar LLM |
| Надзор | units, Restart=always, backoff, journalctl | LaunchDaemon vs LaunchAgent; системный vs пользовательский домен |
| Питание | почти без сна, CPU credits, шумные соседи | крышка, App Nap, энергосбережение Wi‑Fi, при необходимости WOL |
| Откат | pin пакета + tarball конфигов | снимок APFS или параллельные деревья + фиксация plist |
| Якоря отладки | systemctl status, ss -lntp | launchctl print, log show |
2b. Правило одного супервизора
Либо systemd/launchd владеет Gateway, либо человек временно — никогда одновременно. Foreground-отладка допустима после остановки unit и проверки порта. Это правило убирает много гейзенбагов в мультиканальных схемах.
Шаблон инцидента: имя unit, label launchctl bootout, порт, секунды ожидания до «ОК». Неопределённые секунды стоят часов при нескольких респондерах.
3. Пять шагов укрепления
- Зафиксировать источник правды: строка версии, путь конфига, changelog.
- Базовая линия:
openclaw status,openclaw gateway status,openclaw channels status --probe. - Написать супервизор: systemd с EnvironmentFile и ulimits; plist с WorkingDirectory и StdOut/Err.
- Ограждения: лимит частоты рестартов; алерт при >3 падениях за 5 минут.
- Пакет отката: до апгрейда tarball конфигов + checksum бинарника.
Шаг 2 не обсуждается: если пробы красные, ковырять launchd — неверный слой. Каналы должны быть зелёны вручную до автоматизации.
Шаг 3: на Linux User=/Group=, на Mac отдельный сервисный аккаунт, чтобы права на каталоги skills не прыгали между админом и логином.
Шаг 4 останавливает crash-loop, сжигающий квоты API, часто принимаемый за «падение модели».
Между 3 и 4 — game day: убить процесс, супервизор должен поднять без человека; повторять после каждого major upgrade.
Если doctor чист, а ответы замирают — политики каналов: упоминания, allowlist, pairing, rate limit. doctor проверяет окружение, пробы — продукт.
Коррелируйте логи приложения с временем ядра: на Mac после power assertion и роуминга Wi‑Fi часто тихо отваливаются каналы; на Linux OOM в dmesg лучше объясняет потерю дочерних процессов, чем один стек приложения.
4. Пороги для SRE-доков
Цифры для дежурства:
- Backoff рестартов (старт 5 c, потолок 60 c) против лавины к провайдерам.
- Если без людей >2 раза в неделю все каналы красные — сон, DNS, TLS раньше модели.
- Без выделенного SRE управляемый удалённый Mac с зафиксированным образом часто дешевле по TCO, чем несколько DIY Linux.
5. Linux или Mac
| Сигнал | Шаг |
|---|---|
| только публичные webhook, headless ок | Linux + systemd + WAF/TLS на периметре |
| Shortcuts, локальные файлы, ProRes, AppleScript | удалённый Mac + launchd; Linux только опциональный reverse-proxy |
| мало грамотности в launchd/systemd | купить управляемые часы Mac с мониторингом вместо DIY-флота |
| комплаенс требует read-only rootfs | контейнерный путь (гайд Docker), но один супервизор Gateway |
Используйте таблицу как премортем: если совпадает несколько строк — явно разделите роли по хостам и укажите, где хранится сейф токенов.
В стоимость включайте инженерные часы: чуть более дорогой Mac/час часто бьёт скрипты синхронизации между ОС по календарю.
MACGPU — для команд, которым нужно Apple-нативное поведение без CapEx и с предсказуемым BOM при дисциплине мониторинга и отката.
В гибриде распишите data plane: кто держит долгие WebSocket, кто подписывает Apple-специфичные полезные нагрузки, как обновлять клиентские TLS-сертификаты.
Любое изменение plist/unit — в changelog, хоть одна строка; git спасёт через месяцы.
6. FAQ
Вопросы прод-операторов начала 2026; пути и политики подставьте свои.
Doctor зелёный, нет ответов? Пробы и allowlist. Два пользователя на Mac? Разделить HOME, не шарить writable config. Ломается только после апгрейда? Порты, зомби-PID, перезаписанные env-файлы.
Gateway в Docker на Mac? Возможно, но тома с секретами и IPC усложняют; без стандарта контейнеров — нативный надзор. IPv6-only VPS? Выровнять DNS и SAN; ошибки AAAA дают полуоткрытые туннели. Слишком много логов? Структурированный JSON в коллектор; без сырого tail в прод-шелле.
Тест failover? Staging hostname, два прогона отката до прод-токенов. Секреты в Git? sops / sealed secrets; сырые ключи никогда.
journald съел улики? Вынести структурные логи наружу. launchd loaded, процесса нет? Коды выхода в log show. Gateway от root? Избегать; least privilege.
7. Кейс: слойная диагностика спасает сон
Хронологии инцидентов повторяются: крышка или работы хостера → Gateway down → часы крутки моделей. Зафиксированная пятиступенчатая лестница режет MTTR; дорогие ошибки почти всегда операционные.
Двойной источник конфигов даёт призрачные успехи; GitOps с checksum при загрузке сразу показывает дрейф.
Для Apple-heavy workflow выгодно держать Gateway на удалённом Mac — песочница и пути ближе к туториалам. Крупный TLS-терминатор можно оставить на Linux на периметре, но топология проще — сильнее.
Долгосрочно выигрывают команды с runbook: порты, health-команды, пути tarball отката на одной странице — это арендная плата за каждый сбой.
Безопасность: не светить management-порты; TLS на контролируемом прокси; крутить креды в том же ритме, что и апгрейды каналов.
Ёмкость: CPU Gateway редко узкое место; сетевые затыки и лимиты провайдеров — да. p95 задержки проб каналов еженедельно; диск кэша skills на маленьких VPS.
Управление изменениями: plist/unit как code review; пропущенная WorkingDirectory ломает относительные импорты skills. Diff перед reload, .bak с меткой времени.
Вендоры: к тикету приложить версию Gateway, вывод проб, редактированные куски конфига — «не воспроизвели» закрывают быстрее.
Люди: недельное дежурство с ротацией, но один архитектурный владелец Gateway — иначе конфликтующие политики рестартов.
8. Итог: Linux для входа, Mac для Apple-клея
(1) Ограничения: Linux слаб в Apple-only склейке; Mac слаб в истории самого дешёвого сырого egress. (2) Ценность удалённого Mac: единый надзор с креативными стеками, меньше cross-OS прыжков файлов. (3) MACGPU: арендовать предсказуемый узел Apple Silicon вместо шкафа-ЦОД — CTA к тарифам и помощи.
Гибрид нормален: токены на Linux, Apple-потоки на Mac — границу автоматизировать rsync/объектным хранилищем, не drag-and-drop по дрожащему туннелю.
Эксперимент: ручные проверки → systemd или launchd → алерты. Пропуск середины гарантирует ночные звонки.
Бюджет: время инженеров доминирует в TCO маленьких команд; управляемый удалённый Mac с мониторингом часто дешевле «бесплатного» VPS, сжигающего ночи. Наоборот: команда целиком на Linux без Apple API — не навязывайте Mac.
Обучение: пятиминутная запись здоровой последовательности проб рядом с runbook.
Празднуйте скучные недели: лучшие флоты OpenClaw ровные — графики плоские, пробы зелёные, апгрейды репетированы.