Open source · Self-hosted · OpenAI-совместимый LLM

ИИ-расследования инцидентов на Linux-парке — под вашим контролем

LLM предлагает следующий шаг — вы аппрувите. Каждый коллектор read-only по конструкции: инструмент физически не может выполнить команду, которой нет в системе.

reconops · investigation #42 live
$reconops observe --investigation 42
Знакомая ситуация

Дебаг инцидента — это либо страшно, либо долго

kubectl exec на свой страх и риск

Подключение к pod, ручной cat, tail, journalctl. Каждая команда — потенциальный rm.

Ansible playbook’и для диагностики

Долго писать, страшно запускать, версионируется отдельно от ситуации.

sosreport и must-gather

Тонна данных, разбираешь сам ночью, половина не нужна.

Решение

reconops — расследование под вашим контролем

LLM (Claude или любая OpenAI-совместимая модель) ходит по парку через read-only коллекторы. Каждый шаг — карточка для оператора, которую он аппрувит. На выходе — структурированный post-mortem с findings и ссылками на реальные наблюдения. Read-only гарантирован конструктивно, не «политикой».

Как это работает

Один цикл расследования

шаг 1

Вы вводите цель

Свободным текстом: «почему упал nginx на edge-03»

шаг 2

LLM предлагает шаг

Один tool_use за раз с понятным rationale

шаг 3

Вы аппрувите

Approve, edit JSON, skip или end — решение за вами

шаг 4

Агент собирает данные

Read-only коллектор на целевом хосте

шаг 5

LLM анализирует

Новый шаг или finding с доказательствами, цикл

Шаги 2–5 повторяются до mark_done. Оператор может в любой момент закончить расследование или подсказать гипотезу.

Возможности

Что внутри

11 read-only коллекторов

Сетка, DNS, systemd, journal, файлы, процессы, диски. Расширяется релизом агента.

Step-by-step approval

Approval card: approve, edit params, skip, end, inject hypothesis.

Findings с доказательствами

Каждый finding ссылается на task_id. Pin / ignore. Экспорт в Markdown.

Парк хостов

Enroll через bootstrap token, mTLS из коробки, labels, статусы.

Audit-лог

Каждое действие оператора и каждое решение модели — в журнале.

Любой OpenAI-совместимый LLM

OpenRouter по умолчанию. vLLM, LiteLLM, raw OpenAI — всё подойдёт.

Встроенные коллекторы (compiled-in, расширяются релизом):
system_infodns_resolvenet_listennet_connectnet_ifacessystemd_unitsjournal_tailprocess_listfile_readdisk_usagepackage_query
Почему это безопасно

Read-only по конструкции, не по политике

Пять слоёв enforcement. Если один пропустит destructive команду — она упрётся в следующий.

Protocol
Catalog
Gateway
OS
CI
✓ host
rm -rf / →

ИИ не может выполнить команду, которой нет в системе.

Развёртывание

Один бинарник на хост, один на хаб

  • Single Go binary (~28 MB, без CGO, без зависимостей).
  • SQLite хранилище в хабе. Никакого Postgres-кластера.
  • mTLS между хабом и агентом обязателен. Сертификаты выдаёт хаб.
  • Self-hosted: ваши данные не покидают периметра, только сжатые рассуждения уходят в LLM-провайдера.
  • Systemd-юниты, nginx config, install runbook — в комплекте.
bash · quickstart
# 1. поднять хаб и фронт-nginx
$ git clone https://github.com/reconops/reconops.git
$ cd reconops && docker compose up -d

# 2. выпустить bootstrap-токен для хоста
$ docker compose exec hub recon-hub gen-token \
    --agent-id edge-03

# 3. установить агента на целевой хост
$ curl -sSL https://reconops.ru/install.sh | sh

# 4. открыть UI
$ open https://localhost/investigations/new
5 минут · от clone до первого findings
Сценарии

Когда это полезно

Cron на k8s падает по ночам

Натравите reconops на namespace и получите причину к утру.

Prometheus-агент отвалился на 3 хостах

Найти, что у них общего — быстрее, чем читать три journalctl руками.

DNS «иногда» не резолвится

Пройти стек resolv → systemd-resolved → network.

Onboarding нового SRE

Investigation превращается в пошаговый туториал «как мы дебажим».

Post-mortem после инцидента

Финальный экспорт в Markdown — готовый раздел отчёта.

FAQ

Частые вопросы

Можно ли запретить ИИ некоторые коллекторы?

Да, через config whitelist на хабе.

Какие LLM поддерживаются?

Любой OpenAI-совместимый chat/completions с function calling. По умолчанию OpenRouter с claude-sonnet-4.5.

Что уходит во внешний LLM?

Только сжатые описания результатов (~500–2000 токенов). Сырые артефакты остаются в хабе.

Можно ли работать с air-gapped инфрой?

Да — поднимите локальный vLLM или LiteLLM как backend.

А Windows?

Нет. Только Linux.

Как обновить агента?

Через пакетный менеджер или замена бинарника + restart unit.

Заинтересовало? Напишите: hello@reconops.ru