ADR-013: 4 узла A1 (#64-67) + границы BT1-BT9 + постуры. NightOwl DEFERRED (native-Windows нет pcntl/posix + OSS без MCP + hosted 152-ФЗ) -> Linux/Б-1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.2 KiB
NightOwl (#67) — feasibility spike + decision
Дата: 2026-05-20 Узел: #67 NightOwl (раздел A1, backend-tooling) — self-hosted runtime-телеметрия. Вывод: DEFERRED (pending-слот, активация на Linux/боевом сервере при Б-1). Решение заказчика 20.05.2026.
Что выяснил spike
Источник: github.com/lemed99/nightowl-agent (MIT) + laravel/nightwatch (сбор телеметрии).
| Вопрос | Ответ |
|---|---|
| Self-hosted ingest в свой PostgreSQL без managed-аккаунта? | Да — open-source агент пишет телеметрию напрямую в PG (≈13 400 payloads/s). |
| MCP-сервер для AI (Claude Code) в open-source? | Нет. MCP — только в managed-сервисе usenightowl.com (платный). OSS-агент даёт сырые таблицы телеметрии, но не MCP. |
| Запускается на native-Windows? | Нет. Требует PHP-расширения pcntl + posix (UNIX-only, на native-Windows отсутствуют). Windows-поддержка в доках не упомянута. |
Блокер
Та же причина, что блокировала Docker / pg_partman / Jupyter MCP на этой машине — native-Windows стек без UNIX-окружения. Агент NightOwl не запустится локально (pcntl/posix), а готовый MCP-доступ есть только в облачном платном тире.
Облачная альтернатива (hosted Nightwatch free-tier + официальный Nightwatch MCP) технически работает на Windows, но отправляет телеметрию портала во внешнее облако — риск по 152-ФЗ (персональные данные). Отклонено заказчиком (как и hosted Sentry в своё время).
Решение (заказчик, 20.05.2026)
Отложить до боевого сервера. Узел #67 регистрируется в реестре как DEFERRED / pending-слот (прецеденты: Sentry MCP #34 pending Б-1, Figma MCP #44, Jupyter MCP #50). Ничего не устанавливаем, .mcp.json не трогаем, данные никуда не уходят.
Условия активации (когда снимать DEFERRED)
- Появился Linux/боевой сервер (Б-1) с PHP
pcntl/posix. - Развёрнут open-source
nightowl-agent, телеметрия пишется в PostgreSQL Лидерры. - Доступ Claude к телеметрии: либо managed MCP (если приемлемо по 152-ФЗ — телеметрия без ПДн), либо чтение таблиц телеметрии через Boost
database-query(READ-ONLY) — fallback без облака.
Граница с соседями (ADR-013): Sentry #34 = ошибки/трейсбэки; Pail = tail логов; Boost = снапшот логов/запросов; NightOwl = коррелированный сквозной трейс request↔job↔query↔cache.