Un sistema de alerta temprana para las dependencias que dejaste de vigilar.
En la era de la IA publicas más proyectos de los que puedes mantener. Sentinello vigila cada uno y revela los CVE conocidos en sus dependencias —JavaScript por defecto, con Python, Go y Rust a un clic—, para que un proyecto olvidado nunca se convierta en un incidente.
Ejecútalo con un solo comando:
docker run -d \
--name sentinello \
-p 127.0.0.1:3870:3000 \
--stop-timeout 60 \
-v sentinello-data:/app/data \
-v sentinello-nvm:/home/sentinello/.nvm \
-v ~/Developer:/roots/personal:ro \
ghcr.io/walkofcode/sentinello:latestFunciona en linux/amd64 y arm64
Sin cuenta. Sin SaaS. Sin telemetría. Una imagen de Docker y un archivo SQLite: tu código y tus hallazgos nunca salen de tu máquina.
O prescinde del portal por completo
Los mismos escáneres se distribuyen como CLI. Sin instalación, sin cuenta, sin base de datos: se ejecuta, imprime un informe sobre el que tu agente puede actuar, y termina.
npx sentinelloCanalizado, stdout lleva solo el markdown, de modo que el informe llega íntegro al agente:
npx sentinello | claude -p "$(cat -)"Recorre la carpeta
Apúntalo a un directorio y encontrará todos los proyectos que contenga, deteniéndose en la raíz de cada uno para que un monorepo cuente una vez y no cincuenta. Respeta .gitignore y .sentinelloignore.
Consulta tres fuentes
Resuelve las versiones exactas instaladas desde el lockfile y las compara sin conexión con una caché local de avisos. Ninguna llamada de red por proyecto, y nada de tu código se sube.
Escribe un informe
Un archivo markdown fechado con los hallazgos y un prompt de remediación adjunto: triar antes de tocar nada, preferir actualizar el paquete padre a usar overrides, verificar las correcciones en el lockfile.
En qué se diferencia de npm audit
No sustituye a npm audit: ejecuta npm audit y luego añade dos fuentes de avisos que npm audit no puede ver, suprimiendo todo lo que dupliquen.
| npm audit | npx sentinello | |
|---|---|---|
| Alcance | El único proyecto en el que te encuentras. | Todos los proyectos de una carpeta, en una pasada y un solo informe. |
| Fuentes de avisos | El feed de avisos de tu registro. | Ese, más OSV y GitLab gemnasium. Los duplicados se suprimen, así que cada fuente adicional solo añade hallazgos nuevos. |
| Paquetes maliciosos | No cubierto. | Los registros MAL- de OSV señalan paquetes publicados con malware —typosquats, cargas en scripts de instalación— comparados con las versiones comprometidas concretas. |
| Salida | Una tabla, o JSON que tienes que interpretar. | Un informe markdown con un prompt de remediación adjunto, listo para entregar a un agente. |
| Comparación | Una llamada al registro por proyecto. | Sin conexión, contra una caché local. La primera ejecución la descarga y pregunta antes; las siguientes apenas transfieren nada. |
Las fuentes adicionales no son un formalismo. En el propio repositorio de Sentinello, npm audit y OSV informan cada uno de tres hallazgos y coinciden en todos, mientras que el único hallazgo crítico proviene de gemnasium, que ninguna de las otras dos incluye.
Características
Todo en un portal autoalojado — sin servicios externos, sin que los datos salgan de tu red.
Cola de triaje única
Ve y tría los CVE de todo tu portafolio en un solo lugar, en vez de npm audit disperso en una docena de copias.
Explora por proyecto o por librería
Entra en cualquier repositorio para ver sus hallazgos, versiones de corrección e historial — o cambia a un paquete vulnerable para ver todos los proyectos a los que afecta y silenciarlo en todos a la vez.
Escaneo multilenguaje
Escanea JavaScript de fábrica y suma Python, Go y Rust con un interruptor por lenguaje — analizando el lockfile de cada proyecto sin conexión y comparándolo con los avisos de OSV y de gemnasium de GitLab.
Escaneo continuo
Un proceso en segundo plano vuelve a escanear según una programación, así los nuevos avisos aparecen sin que tengas que acordarte de revisar.
Múltiples fuentes
Más allá de npm audit: compara con la base de datos OSV para mayor cobertura de CVEs y detección de paquetes maliciosos conocidos.
Notificaciones y webhooks
Recibe alertas de fallos y hallazgos por Slack, Telegram o un webhook simple — acotadas por root o por proyecto, en el idioma que elijas. Payloads en JSON o texto plano para un agente de auto-reparación.
Servidor MCP
Conecta Claude Desktop, Cursor y otros clientes MCP para consultar hallazgos, proyectos y librerías, y lanzar escaneos, sin salir del chat.
Exportación de avisos
Exporta los hallazgos de un proyecto o una librería como Markdown, con un prompt de remediación personalizable para tu equipo o un LLM.
Una imagen, un archivo
Una imagen de Docker y un archivo SQLite. Sin servidor de base de datos, sin cola de mensajes, sin dependencia de la nube.
Roots autorregistrados
Todo lo que montes bajo /roots se registra y se escanea al arrancar; el nombre del directorio se vuelve su etiqueta.
Node por proyecto
Respeta el .nvmrc de cada proyecto, instalando y cacheando una sola vez la versión de Node que fija.
10 idiomas
La interfaz del portal, los códigos de motivo de escaneo y los estados están traducidos a 10 idiomas.
Capturas
Míralo en acción — el portal escaneando un puñado de proyectos de demostración. Haz clic en cualquier captura para ampliarla.
Cómo se compara
Sentinello no es un Dependency-Track más pesado ni un Snyk más barato. Ocupa otro nicho: la larga cola de proyectos que nadie conectó a un pipeline.
| Sentinello | Dependency-Track | Snyk | Dependabot | |
|---|---|---|---|---|
| Sin configuración — apuntá a una carpeta | ~ | ~ | ||
| No requiere SBOM ni paso de CI | ||||
| Escanea lockfiles resueltos reales | ~ | |||
| Detección de paquetes maliciosos | ||||
| Autoalojado, sin SaaS | ||||
| Una imagen + SQLite | ||||
| Nativo para IA (MCP + export) | ~ | |||
| Polilingüe (Python, Go, …) | ||||
| Política empresarial / VEX | ~ | ~ |
Dependency-Track solo ve los proyectos que alguien instrumentó con un pipeline de SBOM. Sentinello encuentra los que olvidaste. Son más sólidas en políticas empresariales — si ya los corres en un pipeline maduro, consérvalos. Sentinello es para el resto de tu portafolio que nadie está mirando.
Por qué lo creamos
En la era de la IA, publicas más de lo que puedes mantener.
Hoy una sola persona desarrolladora levanta, entrega y deja atrás una docena de proyectos al año: el sitio de marketing, el panel del cliente, el proyecto personal que llegó a producción sin hacer ruido. Mantenerlos seguros solía significar entrar por SSH a cada copia para correr npm audit a mano, o enterarte de un CVE de Next.js por un titular días después de que salió. Nadie sostiene eso en una docena de repos, así que directamente no pasa.
Basta con una sola dependencia olvidada con una falla crítica de ejecución remota de código. El sitio más simple que dejaste de vigilar se vuelve la puerta de entrada.
«¿Por qué no usar Snyk o Dependabot y ya?» Esos viven dentro del pipeline de CI que armaste — y la larga cola nunca tuvo uno. Sentinello es el sistema de alerta temprana para todo lo demás: apúntalo a una carpeta y vigilará cada proyecto que olvidaste, revelando cada nuevo CVE en una sola cola antes de que se convierta en un incidente.
Cómo funciona
Tres pasos. Sin agentes que instalar en tus proyectos, sin cuentas que crear.
Apúntalo a tu código
Monta tus repositorios bajo /roots, o agrégalos desde Configuración → Roots. Cada directorio se registra y se descubre automáticamente al iniciar.
Escanea de forma continua
Un proceso en segundo plano compara tus dependencias con los CVE conocidos según una programación, instalando la versión de Node que cada proyecto fija cuando hace falta.
Triaje en una sola cola
Cada hallazgo de cada proyecto llega a una sola cola que puedes filtrar por severidad, con alertas opcionales a Slack, Telegram o un webhook.
Para quién es
Sentinello es para todos los que tienen más en producción de lo que pueden vigilar: la persona que desarrolla en solitario, el equipo pequeño, la agencia que hace malabares con trabajo de clientes.
- Publicas proyectos personales y sitios de clientes que deben seguir seguros mucho después del lanzamiento.
- Quieres una vista de todo el portafolio sin cablear CI en cada repositorio.
- Prefieres autoalojar antes que entregar el inventario de tu código a un SaaS.
Si eres una organización grande con Snyk o Dependabot ya integrados en un pipeline maduro, consérvalos: Sentinello no intenta reemplazar el SCA empresarial. Está aquí para el resto de tu portafolio que nadie vigila. Es de código abierto y con licencia MIT, así que puedes leer exactamente qué hace.
Notas de la versión
Sentinello se actualiza con frecuencia: esto es lo que aportó cada versión.
La descarga de gemnasium vuelve a funcionar, y la CLI devuelve la terminal
v3.0.1 · 4 ago 2026- La descarga de GitLab gemnasium fallaba en 3.0.0 con `HTTP 406`, para todo el mundo. El fetch integrado de Node añade una cabecera `Sec-Fetch-Mode: cors` que un programa no puede eliminar, y GitLab rechaza cualquier petición de archivo del repositorio que la lleve — así que nunca tuvo que ver con tu red, tu IP ni con cuántas veces reintentaras. Ahora la descarga usa una petición HTTPS normal y funciona
- El archivo se descarga por id de commit en lugar de por nombre de rama, así que todos los que actualizan desde el mismo commit comparten una copia en caché en vez de pedirle a GitLab que genere un archivo de 60 MB cada uno. Una primera descarga que tardaba casi siete minutos ahora termina en segundos
- La CLI terminaba todo su trabajo — informe escrito, resumen impreso — y luego no devolvía la terminal. La conexión de la descarga quedaba abierta detrás, manteniendo vivo el proceso; ahora se cierra en cuanto se ha leído el archivo
- Una fuente que rechaza una descarga ya no se queda tres minutos esperando antes de decirlo. Lo informa en segundos y, en una terminal, ofrece reintentar — reintentando solo la fuente que realmente falló
- `--fail-on` es honesto en ambos sentidos. Rechaza una ejecución cuya fuente de avisos no se pudo consultar, en lugar de informar de un análisis limpio que nunca hizo; y ya no falla por una fuente que desactivaste tú con `SENTINELLO_OSV_FEED_URL=off` o `SENTINELLO_GEMNASIUM_FEED_URL=off` y nunca descargaste
Sentinello ya funciona sin portal alguno
v3.0.0 · 3 ago 2026- Los escáneres se distribuyen como CLI en npm. `npx sentinello` recorre una carpeta, encuentra todos los proyectos que contiene, los contrasta con npm audit, OSV y GitLab gemnasium, y escribe un informe markdown con un prompt de remediación adjunto: sin instalación, sin cuenta, sin base de datos y sin que nada de tu código salga de la máquina
- Canalizado, el informe es lo único que sale por stdout, así que `npx sentinello | claude -p "$(cat -)"` entrega a un agente una lista de trabajo completa sin que nada corrompa el documento
- Una primera ejecución ya no pierde la fuente gemnasium por una descarga rechazada. GitLab rechaza su archivo durante uno o dos minutos seguidos, y el reintento anterior se rendía a los trece segundos; ahora la CLI espera a que pase, explica por qué espera y acepta `--feed-wait` si los tres minutos por defecto no te sirven
- Ambas estimaciones de descarga se midieron en lugar de suponerse: la exportación npm de OSV se indica como 204 MB en vez de 196, y el archivo de gemnasium como 52 MB en vez de 80. El aviso de consentimiento marca las estimaciones con una tilde para que nunca se confundan con un tamaño informado por el servidor
- Un valor con aspecto de opción ahora se rechaza en lugar de tomarse literalmente: `--out --` escribía un informe en un archivo llamado `--` dentro de tu proyecto e informaba de éxito
- El panel de Novedades ya no se sale por la parte inferior de la ventana cuando una versión tiene mucho que contar
El documento de vulnerabilidades por fin llega — y cuenta lo que debe
v2.6.0 · 29 jul 2026- get_project_advisory ahora devuelve el documento en sí. Hasta ahora los clientes conectados solo recibían sus metadatos —un nombre de archivo y un recuento— y nunca el documento, pese a que la herramienta lo describía como una lista de trabajo completa
- El informe de vulnerabilidades incluye ahora una entrada por cada aviso distinto, con sus fuentes combinadas, en lugar de una por fila de escáner: una vulnerabilidad que reportan npm audit y OSV es un único elemento de trabajo con ambos identificadores, no dos casi idénticos. Esto vale también para el botón Descargar .md del portal, y el recuento ya coincide con el del panel
- Un proyecto demasiado grande para caber en una sola respuesta MCP ahora se pagina: el documento indica que está incompleto y da la llamada exacta para obtener el resto, en vez de cortarse en silencio donde un agente leería lo que falta como limpio
- Cada parámetro de cada herramienta MCP tiene ahora una descripción, y la nueva herramienta list_mutes expone los identificadores de silenciamiento que necesita unmute — antes solo se conseguían creando el silenciamiento en la misma sesión
- Corregido un fallo en los recuentos de severidad: un hallazgo cuya severidad no era uno de los cinco valores conocidos se contaba como hallazgo pero no entraba en ninguna categoría, así que un proyecto cuyo único hallazgo fuera ese aparecía como completamente limpio
El informe de vulnerabilidades, directo por MCP
v2.5.0 · 28 jul 2026- Los clientes MCP conectados pueden obtener el informe Markdown completo de un proyecto con la nueva herramienta get_project_advisory: el mismo documento que el botón Descargar .md del portal, sin copiarlo desde el navegador
- Los hallazgos silenciados ya no se incluyen en el informe del proyecto, así que a un agente nunca se le encarga trabajo cuyo riesgo ya has aceptado
- Nota: como el informe contiene tu prompt de exportación, un cliente MCP ahora puede leer lo que hayas escrito en Ajustes → Exportar
Ventanas emergentes sin recortes y un prompt de exportación más estricto
v2.4.3 · 26 jul 2026- Los desplegables, el popover de ruta de dependencias y el menú de exportación de avisos ya no quedan recortados por la tabla o el diálogo que los contiene: se dibujan por encima de la página y se abren hacia arriba cuando no hay espacio debajo
- El prompt de exportación de avisos por defecto ahora pide al agente que planifique antes de editar nada, que agrupe los hallazgos que comparten una misma corrección y que detalle el impacto en el código de cada cambio de versión; además fija como objetivo cero hallazgos y descarta los atajos hacia un cero falso —silenciar, ampliar rangos o reducir el alcance del análisis—, dejando lo realmente irresoluble en una tabla de residuos fechada
La rama en su propia columna
v2.4.2 · 25 jul 2026- La rama de git en la que se analizó cada proyecto ahora tiene su propia columna en la lista de proyectos —texto simple, sin icono— en lugar de aparecer debajo del nombre del proyecto
Apagados limpios
v2.4.1 · 25 jul 2026- Reiniciar el contenedor ya no interrumpe un análisis a mitad de escritura, y el worker arranca de inmediato en lugar de reintentar durante ~30 segundos
- Define stop_grace_period: 60s (o --stop-timeout 60) en tu archivo compose para darle margen: el README y la documentación de Docker ya lo explican
Análisis políglota: Python, Go y Rust se suman a npm
v2.4.0 · 25 jul 2026- Sentinello ahora analiza proyectos de Python, Go y Rust además de npm: los archivos de bloqueo se resuelven totalmente sin conexión y cada proyecto informa su cobertura de análisis (completa, parcial o no auditable), de modo que las lagunas quedan visibles en lugar de silenciosas
- La base de datos gemnasium de GitLab se suma a npm audit y OSV como fuente de avisos sin conexión, deduplicada frente a las demás por alias CVE/GHSA; Configuración → Fuentes es ahora una matriz de Lenguajes × Fuentes con alcance de notificaciones por celda, y npm audit ya se puede desactivar siempre que quede una fuente activa
- Los hallazgos ahora registran la rama de git de la que provienen, visible en la lista de proyectos, el encabezado del proyecto y todas las notificaciones
- Las filas de proyecto incluyen sus propias acciones: analizar ahora, copiar o descargar el aviso, silenciar o reactivar y editar etiquetas, así una ronda de triaje ya no exige entrar en cada proyecto
- El panel de proyectos pasó de ~3,3 s a ~0,03 s, y la navegación ahora muestra estados de carga en lugar de parecer congelada
- Seguridad: 25 avisos de dependencias resueltos, incluidos CVE de libvips que estaban activos en el optimizador de imágenes del portal y nueve avisos de Next.js que afectaban al portal distribuido
- El prompt de exportación de avisos por defecto ahora cubre la antigüedad mínima de publicación, la verificación del archivo de bloqueo y los overrides obsoletos
Configuración de MCP más simple, sin variables de entorno
v2.3.0 · 9 jun 2026- Configura MCP por completo en Configuración → MCP: genera un token para activar el endpoint /api/mcp y bórralo para desactivarlo — las variables de entorno SENTINELLO_MCP_ENABLED y SENTINELLO_MCP_API_TOKEN ya no existen (un token de entorno existente se importa una vez al actualizar)
- Fragmentos de conexión listos para pegar para Claude Code, Codex, Cursor y Claude Desktop, con tu token ya incluido
- Cuando SENTINELLO_PORTAL_BASE_URL se define en el entorno, se muestra de solo lectura en Configuración → Avanzado, ya que sigue siendo autoritativa y se reaplica en cada arranque
Menos falsas alarmas y hallazgos que se limpian solos
v2.2.0 · 9 jun 2026- Los avisos de malware ahora coinciden con la versión comprometida exacta: una versión limpia o ya corregida de un paquete que estuvo comprometido deja de marcarse
- Los hallazgos duplicados ahora se resuelven solos en el siguiente análisis, de modo que las entradas antiguas o huérfanas se eliminan automáticamente
- Las etiquetas de producción y desarrollo ahora se calculan de una sola forma coherente en todas las fuentes (npm y OSV)
Un encabezado de proyecto más limpio y filtros coherentes
v2.1.0 · 6 jun 2026- Encabezado de proyecto simplificado: renombra junto al título, con silenciar y etiquetas como iconos
- Filtra los hallazgos por fuente (npm / OSV) desde un nuevo desplegable junto al filtro de tipo de dependencia
- Desplegables unificados y coherentes en toda la app, con búsqueda al escribir en listas largas como las zonas horarias
Guía de actualización más clara
v2.0.1 · 4 jun 2026- Pasos de actualización ampliados para los cambios incompatibles de 2.0
- El README indica el enlace de puerto solo en localhost
Análisis multi-fuente y una instalación reforzada y segura por defecto
v2.0.0 · 4 jun 2026- OSV como segunda fuente opcional (Configuración → Fuentes, desactivada por defecto) con detección de paquetes maliciosos, cotejada con la base de datos pública de OSV en una caché local
- Los hallazgos ahora se combinan entre fuentes: una fila por vulnerabilidad, con cada fuente etiquetada, la mejor corrección disponible y la unión de las rutas de dependencia, con filtro por fuente y un popover de ruta de dependencia
- Refuerzo de seguridad: el endpoint MCP está desactivado por defecto y requiere un token, la entrega de webhooks está protegida contra SSRF, una puerta de inicio de sesión opcional del portal, y el contenedor se ejecuta como usuario sin privilegios
- Configuración ahora es una sección de nivel superior con barra lateral y una página de Perfil
Integración MCP y novedades
v1.4.0 · 29 may 2026- Servidor MCP en /api/mcp para Claude Desktop, Cursor y otros clientes
- Nueva sección Configuración → MCP con URL del servidor y gestión de tokens
- Píldora de novedades e historial de notas de versión
Corrección de la versión en el pie
v1.3.1 · 28 may 2026- La versión en ejecución se muestra correctamente en el pie de página
Mejoras en las notificaciones
v1.3.0 · 28 may 2026- Filtrar notificaciones por entorno
- Formulario de edición de destinos más simple
- Duplicar un destino de notificación existente
Páginas de Proyectos y Bibliotecas
v1.2.0 · 24 may 2026- La vista de inicio se divide en páginas dedicadas de Proyectos y Bibliotecas
Recarga de la programación en vivo
v1.1.2 · 24 may 2026- El worker recarga la programación de escaneo en cuanto guardas cambios en el portal
Borrados más seguros y un aviso de actualización más claro
v1.1.0 · 23 may 2026- Confirmación antes de eliminar raíces y destinos de notificación
- El aviso de actualización pasa a un banner superior descartable
- El worker elimina raíces obsoletas cuando desaparece su montaje
Correcciones de precisión del escáner
v1.0.1 · 23 may 2026- Descarta hallazgos cuya versión instalada no está realmente en el rango vulnerable
- Permite eliminar un destino de notificación con historial de envíos
Primera versión de código abierto
v1.0.0 · 23 may 2026- El primer lanzamiento público de Sentinello
Hoja de ruta
Hoy Sentinello vigila tus dependencias en varios lenguajes. Esto es hacia dónde va — y lo que puedes pedir.
Priorización más inteligente
PlaneadoOrdená los hallazgos por explotabilidad y por si el código vulnerable es realmente alcanzable — triá primero lo que importa.
Más integraciones
PlaneadoMás canales de notificación y formas de conectar Sentinello con las herramientas que tu equipo ya usa.
Análisis estático (SAST)
PlaneadoDetecta patrones de código riesgosos en tu propio código, no solo CVE conocidos en tus dependencias.
Escaneo de secretos y licencias
PlaneadoSeñala secretos filtrados y problemas de licencias en el mismo portafolio, en la misma cola.
Dinos qué integrarías o escanearías a continuación — abre una incidencia en GitHub y ayuda a definir la hoja de ruta.