openclaw gateway status, openclaw doctor, коды префлайта. Ниже: openclaw@2026.5.x, Node 24, loopback или SSH, минимальные токены LD, повторы 2 / 4 / 8 с, три попытки POST. См. Node 24, токен шлюза, иной webhook, главная, блог.
Три системных узких места до первого успешного merge:
- Разрыв между подписью и парсингом. Если обработчик читает JSON до проверки HMAC по сырому телу, любое преобразование пробелов или кодировки ломает сравнение с секретом LaunchDarkly и даёт ложные отказы либо принимает подделку.
- Дублирование сигналов без приоритета. Отдельный лог префлайта и отдельный дамп
gateway statusв разных артефактах не позволяют ревьюеру понять, блокирует ли merge именно регресс зависимостей или неготовность шлюза OpenClaw на этом раннере. - Смешение таймаутов. Код 408 на исходящем вызове к API часто трактуют как ошибку префлайта; без раздельных таймеров на сеть и на локальный скрипт невозможно отличить узкое место на стороне Git-платформы от медленного резолва пакетов на Apple Silicon.
Подготовка среды и фиксация версий
Node 24 и документация OpenClaw 2026.5.x: одинаковый node -v для SSH и launchd. Установка npm install -g openclaw@2026.5.x, артефакт openclaw --version. Цепочка openclaw onboard, openclaw onboard --install-daemon, затем openclaw doctor и машиночитаемый openclaw gateway status для слияния JSON. Каталоги chmod 700; расхождение SSH и демона — plist и токен шлюза.
Шлюз на loopback либо SSH-туннель наружу
По умолчанию шлюз на 127.0.0.1; наружу — reverse-proxy или TLS и allowlist IP LD. Без ingress на раннер — SSH LocalForward на порт приёмника. Расширение bind — только после матрицы угроз и статьи про токен; не смешивайте контуры секретов.
Матрица: подпись webhook, токены LD и контур ответов
| Компонент | Минимальная поверхность | Контроль на удалённом Mac |
|---|---|---|
| Подпись LaunchDarkly | HMAC по raw body и секрету из консоли LD; заголовок подписи сверяется до парсинга JSON | Секрет только в файле с правами 600 на том же томе что OPENCLAW_HOME; запрет логирования полного тела в stdout shared runner |
| API-токен чтения флагов | Роль read для нужных проектов и окружений без admin | Переменная CI с ограничением scope job; ротация без простоя через вторую переменную и короткое окно overlap |
| Исходящий POST сводки в SCM | Токен Git-платформы с правом комментария к merge request или обновления статуса check | Повторы с паузами 2 / 4 / 8 с, не более трёх попыток; отдельный connect-timeout чтобы отличать 408 транспорта от логики префлайта |
| Сборка отчёта | Единый JSON или текст не длиннее типового лимита комментария | Включите поля gateway_status_timestamp, doctor_exit, preflight_failed, первые строки stderr префлайта без секретов |
Маршрут webhook LaunchDarkly и проверка подписи
В LD укажите URL до вашего обработчика за proxy или туннелем. Первым делом — сырое тело, HMAC с signing secret, сравнение константного времени; затем JSON и поля флага. При отказе подписи не вызывайте шлюз. Отладка — отдельные тестовые события; прод-секрет не в VCS.
# Псевдологика: сначала байты тела, затем JSON RAW="$(cat)" echo "$RAW" | openssl dgst -sha256 -hmac "$LD_SIGNING_SECRET" -binary | xxd -p # сравнить с заголовком подписи из документации LaunchDarkly для вашего типа webhook
Объединение health-пробы и префлайта в один комментарий PR
После подписи — префлайт из того же checkout что основная сборка. Добавьте openclaw gateway status и при политике команды — выдержку openclaw doctor. Объект ld_event, openclaw, preflight; красный итог если любой блок блокирует merge. Наружу — усечённый stderr и хеш артефакта без полных путей.
Операционный конвейер не менее семи шагов
Шаг 1. Проверить Node 24 и закрепить npm install -g openclaw@2026.5.x с записью версии в артефакт.
Шаг 2. Выполнить openclaw onboard и openclaw onboard --install-daemon; убедиться что демон активен через openclaw doctor.
Шаг 3. Сохранить базовый снимок openclaw gateway status в машиночитаемом виде как эталон перед включением webhook.
Шаг 4. Настроить ingress или SSH-туннель к приёмнику и выписать allowlist источников LaunchDarkly согласно их документации по диапазонам.
Шаг 5. Реализовать проверку подписи по сырому телу и связать успешное событие с триггером префлайта зависимостей.
Шаг 6. Объединить JSON статуса шлюза и результат префлайта; при ошибке префлайта не отправлять «зелёный» статус во внешнюю систему даже если шлюз формально готов.
Шаг 7. Отправить сводку в SCM с повторами 2 / 4 / 8 с, потолком три попытки и отдельным журналом для кодов 401 и 408.
FAQ: типичные 401 и 408 в этом контуре
401 на шлюзе: чаще всего OPENCLAW_GATEWAY_TOKEN не совпал между launchd и curl или отсутствует Authorization. Сверка plist и SSH через openclaw doctor.
408 при отправке сводки: отделите connect-timeout SCM от budget префлайта; backoff три попытки прежде чем звать инфраструктуру.
Достаточно doctor по расписанию и статуса при ошибках префлайта; каждое событие LD — только при отладке нового обработчика.
Следующие шаги: блог, тарифы и помощь без входа
Откройте список статей блога без авторизации, перейдите на тарифы узла Apple Silicon и оформите аренду; справка по доступу и SSH — в центре помощи. Для обзора платформы начните с главной страницы MacPull.
Удалённый Mac под webhook-колодцы и префлайт зависимостей
Закрепите узел рядом с вашим egress и повторите цепочку OpenClaw без обязательного входа на маркетинговые страницы MacPull.