SentinelloSentinello

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

В эпоху ИИ вы выпускаете больше проектов Node.js, чем способны поддерживать. Sentinello следит за каждым из них и выявляет известные CVE в их npm-зависимостях — чтобы забытый проект никогда не превратился в инцидент.

Запустите одной командой:

docker run -d \
  --name sentinello \
  -p 3870:3000 \
  -v sentinello-data:/app/data \
  -v sentinello-nvm:/root/.nvm \
  -v ~/Developer:/roots/personal:ro \
  ghcr.io/walkofcode/sentinello:latest

Работает на linux/amd64 и arm64

Без аккаунта. Без SaaS. Без телеметрии. Один образ Docker и один файл SQLite — ваш код и результаты никогда не покидают вашу машину.

Возможности

Всё в одном самостоятельно размещаемом портале — никаких внешних сервисов, данные не покидают вашу сеть.

Единая очередь триажа

Просматривайте и сортируйте CVE всего портфеля в одном месте — вместо npm audit, разбросанного по десятку чекаутов.

Просмотр по проектам или библиотекам

Откройте любой репозиторий, чтобы увидеть его находки, версии с исправлением и историю, — или переключитесь на уязвимый пакет, чтобы увидеть каждый затронутый им проект и заглушить его сразу везде.

Непрерывное сканирование

Фоновый процесс пересканирует по расписанию, поэтому новые рекомендации появляются без того, чтобы вы помнили о проверке.

Несколько источников

Не только npm audit: сопоставление с базой OSV для более широкого охвата CVE и обнаружения известных вредоносных пакетов.

Уведомления и вебхуки

Получайте оповещения о сбоях и находках через Slack, Telegram или обычный вебхук — с привязкой к конкретному корню или проекту, на выбранном вами языке. Полезная нагрузка в формате JSON или обычного текста для агента автоисправления.

MCP-сервер

Подключите Claude Desktop, Cursor и другие MCP-клиенты, чтобы запрашивать результаты, проекты и библиотеки — и запускать сканирование — не покидая чат.

Экспорт рекомендаций

Экспортируйте находки проекта или библиотеки в Markdown с настраиваемой подсказкой для устранения — для вашей команды или LLM.

Один образ, один файл

Один образ Docker и один файл SQLite. Никакого сервера баз данных, очереди сообщений или зависимости от облака.

Автоматически регистрируемые roots

Всё, что смонтировано в /roots, регистрируется и сканируется при запуске — имя каталога становится его меткой.

Node для каждого проекта

Учитывает .nvmrc каждого проекта, устанавливая и кэшируя зафиксированную версию Node один раз.

10 языков

Интерфейс портала, коды причин сканирования и статусы локализованы на 10 языков.

Скриншоты

Посмотрите в действии — портал сканирует несколько демонстрационных проектов. Нажмите на любой снимок, чтобы увеличить.

Сравнение

Sentinello — не более тяжёлый Dependency-Track и не более дешёвый Snyk. Он занимает другую нишу: длинный хвост Node-проектов, которые никто не подключил к конвейеру.

SentinelloDependency-TrackSnykDependabot
Без настройки — укажите папку~~
Не нужен SBOM / шаг CI
Сканирует реальные разрешённые lockfile~
Обнаружение вредоносных пакетов
Self-hosted, без SaaS
Один образ + SQLite
AI-native (MCP + экспорт)~
Полиглот (Python, Go, …)Запланировано
Корпоративные политики / VEX~~

Dependency-Track видит только проекты, которые кто-то оснастил конвейером SBOM. Sentinello находит забытые. Они сильнее в корпоративных политиках, а полиглот-охват — в дорожной карте Sentinello; если вы уже используете их в зрелом конвейере, оставьте их. Sentinello — для остальной части вашего портфеля, за которой никто не следит.

Зачем мы это создали

В эпоху ИИ вы выпускаете больше, чем способны поддерживать.

Сегодня один разработчик за год запускает, сдаёт и оставляет позади десяток проектов — маркетинговый сайт, клиентскую панель, пет-проект, который тихо ушёл в продакшн. Чтобы держать их в безопасности, раньше приходилось заходить по SSH в каждый чекаут и вручную запускать npm audit — или узнавать о CVE в Next.js из заголовков, спустя дни после публикации. Никто не делает этого по десятку репозиториев, так что этого не происходит вовсе.

Достаточно одной забытой зависимости с критической уязвимостью удалённого выполнения кода. Самый простой сайт, за которым вы перестали следить, становится точкой входа.

«Почему просто не взять Snyk или Dependabot?» Они живут внутри CI-конвейера, который вы настроили, — а длинному хвосту такой конвейер так и не достался. Sentinello — это система раннего предупреждения для всего остального: укажите ему папку, и он будет следить за каждым забытым проектом, выводя каждый новый CVE в одну очередь — прежде чем он превратится в инцидент.

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

Три шага. Никаких агентов для установки в ваши проекты, никаких аккаунтов.

Укажите ему свой код

Смонтируйте репозитории в /roots или добавьте их в «Настройки → Roots». Каждый каталог автоматически регистрируется и обнаруживается при запуске.

Непрерывное сканирование

Фоновый процесс по расписанию сверяет ваши зависимости с известными CVE, устанавливая нужную версию Node, которую фиксирует каждый проект, когда это требуется.

Триаж в одной очереди

Каждая находка из каждого проекта попадает в единую очередь, которую можно фильтровать по серьёзности, — с опциональными оповещениями в Slack, Telegram или вебхук.

Для кого это

Sentinello — для всех, у кого в продакшне больше, чем они способны охватить взглядом: для тех, кто разрабатывает в одиночку, для небольшой команды, для агентства, жонглирующего клиентскими проектами.

  • Вы выпускаете пет-проекты и клиентские сайты, которые должны оставаться безопасными ещё долго после запуска.
  • Вам нужен обзор всего портфеля без подключения CI к каждому репозиторию.
  • Вы предпочитаете размещать у себя, а не отдавать опись своего кода SaaS-сервису.

Если вы крупная организация, у которой Snyk или Dependabot уже встроены в зрелый конвейер, оставьте их — Sentinello не пытается заменить корпоративный SCA. Он здесь для остальной части вашего портфеля, за которой никто не следит. Он с открытым кодом и под лицензией MIT, так что вы можете в точности прочитать, что он делает.

Примечания к выпуску

Sentinello регулярно обновляется — вот что появилось в каждой версии.

Более простая настройка MCP — без переменных окружения

v2.3.0 · 9 июн. 2026 г.
  • Теперь MCP настраивается полностью в «Настройки → MCP»: сгенерируйте токен, чтобы включить эндпойнт /api/mcp, очистите его, чтобы выключить — переменные окружения SENTINELLO_MCP_ENABLED и SENTINELLO_MCP_API_TOKEN удалены (существующий токен из окружения импортируется один раз при обновлении)
  • Готовые к вставке фрагменты подключения для Claude Code, Codex, Cursor и Claude Desktop, уже заполненные вашим токеном
  • Когда SENTINELLO_PORTAL_BASE_URL задана в окружении, она отображается только для чтения в «Настройки → Дополнительно», поскольку остаётся приоритетной и повторно применяется при каждом запуске

Меньше ложных срабатываний и самоочищающиеся находки

v2.2.0 · 9 июн. 2026 г.
  • Оповещения о вредоносном ПО теперь сопоставляются с точной затронутой версией — чистая или уже исправленная версия некогда скомпрометированного пакета больше не помечается
  • Дублирующиеся находки теперь устраняются сами при следующем сканировании, поэтому старые или осиротевшие записи удаляются автоматически
  • Метки production и development теперь вычисляются единым согласованным способом по всем источникам (npm и OSV)

Более чистый заголовок проекта и единообразные фильтры

v2.1.0 · 6 июн. 2026 г.
  • Упрощённый заголовок проекта — переименование рядом с названием, отключение и теги в виде иконок
  • Фильтрация находок по источнику (npm / OSV) через новый выпадающий список рядом с фильтром типа зависимости
  • Единообразные выпадающие списки по всему приложению, с поиском по вводу для длинных списков, например часовых поясов

Более понятные инструкции по обновлению

v2.0.1 · 4 июн. 2026 г.
  • Расширенные шаги обновления для несовместимых изменений 2.0
  • В README указана привязка порта только к localhost

Сканирование из нескольких источников и усиленная, безопасная по умолчанию установка

v2.0.0 · 4 июн. 2026 г.
  • OSV как необязательный второй источник (Настройки → Источники, по умолчанию выключено) с обнаружением вредоносных пакетов, сверяемый с публичной базой данных OSV в локальном кэше
  • Результаты теперь объединяются между источниками — одна строка на уязвимость, каждый источник помечен, лучшее доступное исправление и объединение путей зависимостей, с фильтром по источнику и всплывающим окном пути зависимости
  • Усиление безопасности: эндпойнт MCP по умолчанию выключен и требует токен, доставка вебхуков защищена от SSRF, необязательный вход в портал, и контейнер запускается от непривилегированного пользователя
  • Настройки теперь — раздел верхнего уровня с боковой панелью и страницей профиля

Интеграция MCP и новинки

v1.4.0 · 29 мая 2026 г.
  • MCP-сервер по адресу /api/mcp для Claude Desktop, Cursor и других клиентов
  • Новый раздел «Настройки → MCP» с URL сервера и управлением токенами
  • Значок новинок и история примечаний к выпускам

Исправление версии в подвале

v1.3.1 · 28 мая 2026 г.
  • Текущая версия корректно отображается в подвале

Улучшения уведомлений

v1.3.0 · 28 мая 2026 г.
  • Фильтрация уведомлений по среде
  • Более простая форма редактирования получателей
  • Дублирование существующего получателя уведомлений

Страницы проектов и библиотек

v1.2.0 · 24 мая 2026 г.
  • Главный экран разделён на отдельные страницы проектов и библиотек

Живая перезагрузка расписания

v1.1.2 · 24 мая 2026 г.
  • Воркер перезагружает расписание сканирования сразу после сохранения изменений в портале

Более безопасное удаление и понятный баннер обновления

v1.1.0 · 23 мая 2026 г.
  • Подтверждение перед удалением корней и получателей уведомлений
  • Уведомление об обновлении перенесено в закрываемый баннер сверху
  • Воркер удаляет устаревшие корни, когда их монтирование исчезает

Исправления точности сканера

v1.0.1 · 23 мая 2026 г.
  • Отбрасывает результаты, чья установленная версия фактически не входит в уязвимый диапазон
  • Позволяет удалить получателя уведомлений с историей отправок

Первый релиз с открытым исходным кодом

v1.0.0 · 23 мая 2026 г.
  • Первый публичный выпуск Sentinello

Дорожная карта

Сегодня Sentinello следит за вашими зависимостями Node.js. Вот куда он движется — и что вы можете запросить.

Умнее приоритизация

Запланировано

Ранжируйте находки по эксплуатируемости и по тому, достижим ли уязвимый код, — сначала разбирайте главное.

Больше экосистем

Запланировано

Расширить сканирование за пределы Node на Python, Go и Rust с тем же нативным обнаружением в файловой системе.

Больше интеграций

Запланировано

Больше каналов уведомлений и способов подключить Sentinello к инструментам, которыми ваша команда уже пользуется.

Статический анализ (SAST)

Запланировано

Выявляйте рискованные паттерны в вашем собственном коде, а не только известные CVE в зависимостях.

Сканирование секретов и лицензий

Запланировано

Отмечайте закоммиченные секреты и проблемы с лицензиями в том же портфеле, в той же очереди.

Запросить интеграцию или источник

Расскажите, что бы вы интегрировали или просканировали дальше — откройте issue на GitHub и помогите сформировать дорожную карту.