Система раннего предупреждения для зависимостей, за которыми вы перестали следить.
В эпоху ИИ вы выпускаете больше проектов 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-проектов, которые никто не подключил к конвейеру.
| Sentinello | Dependency-Track | Snyk | Dependabot | |
|---|---|---|---|---|
| Без настройки — укажите папку | ~ | ~ | ||
| Не нужен 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 и помогите сформировать дорожную карту.