SentinelloSentinello

Um sistema de alerta antecipado para as dependências que você parou de vigiar.

Na era da IA você publica mais projetos do que consegue manter. O Sentinello vigia cada um e revela os CVEs conhecidos em suas dependências — JavaScript por padrão, com Python, Go e Rust a um clique — para que um projeto esquecido nunca vire um incidente.

Execute com um único 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:latest

Funciona em linux/amd64 e arm64

Sem conta. Sem SaaS. Sem telemetria. Uma imagem Docker e um arquivo SQLite — seu código e seus achados nunca saem da sua máquina.

Ou dispense o portal por completo

Os mesmos scanners vêm como CLI. Sem instalação, sem conta, sem banco de dados: ele roda, imprime um parecer sobre o qual seu agente pode agir, e encerra.

npx sentinello

Em pipe, o stdout carrega apenas o markdown, então o parecer chega íntegro ao agente:

npx sentinello | claude -p "$(cat -)"

Percorre a pasta

Aponte para um diretório e ele encontra todos os projetos abaixo, parando na raiz de cada um para que um monorepo conte uma vez e não cinquenta. .gitignore e .sentinelloignore são respeitados.

Consulta três fontes

Resolve as versões exatas instaladas a partir do lockfile e as compara offline com um cache local de pareceres. Nenhuma chamada de rede por projeto, e nada do seu código é enviado.

Escreve um parecer

Um arquivo markdown datado com os achados e um prompt de remediação anexado: triar antes de mexer em qualquer coisa, preferir atualizar o pacote pai a usar overrides, verificar as correções no lockfile.

Como difere do npm audit

Não substitui o npm audit: ele executa o npm audit e então adiciona duas fontes de pareceres que o npm audit não enxerga, suprimindo o que elas duplicam.

npm auditnpx sentinello
EscopoO único projeto em que você está.Todos os projetos sob uma pasta, em uma passagem e um relatório.
Fontes de pareceresO feed de pareceres do seu registry.Esse, mais OSV e GitLab gemnasium. Duplicatas são suprimidas, então cada fonte extra só acrescenta achados inéditos.
Pacotes maliciososNão coberto.Os registros MAL- do OSV sinalizam pacotes publicados com malware — typosquats, cargas em scripts de instalação — comparados às versões especificamente comprometidas.
SaídaUma tabela, ou JSON que você precisa interpretar.Um parecer em markdown com um prompt de remediação anexado, pronto para entregar a um agente.
CorrespondênciaUma chamada ao registry por projeto.Offline, contra um cache local. A primeira execução o baixa e pergunta antes; as seguintes transferem quase nada.

As fontes extras não são formalidade. No próprio repositório do Sentinello, npm audit e OSV relatam três achados cada e concordam em todos, enquanto o único achado crítico vem do gemnasium, que nenhuma das outras duas carrega.

Recursos

Tudo em um portal auto-hospedado — sem serviços externos, sem dados saindo da sua rede.

Fila de triagem única

Veja e faça a triagem de CVEs de todo o seu portfólio em um só lugar — em vez de npm audit espalhado por uma dúzia de cópias.

Navegue por projeto ou biblioteca

Entre em qualquer repositório para ver seus achados, versões de correção e histórico — ou pule para um pacote vulnerável para ver todos os projetos afetados e silenciá-lo em todos de uma vez.

Varredura multilinguagem

Escaneia JavaScript de imediato e adiciona Python, Go e Rust com um interruptor por linguagem — analisando o lockfile de cada projeto offline e comparando-o com os avisos do OSV e do gemnasium do GitLab.

Escaneamento contínuo

Um processo em segundo plano reescaneia conforme um agendamento, então novos avisos aparecem sem você precisar lembrar de verificar.

Múltiplas fontes

Além do npm audit: comparação com o banco de dados OSV para maior cobertura de CVEs e detecção de pacotes maliciosos conhecidos.

Notificações e webhooks

Receba alertas de falhas e achados via Slack, Telegram ou um webhook simples — definidos por root ou projeto, no idioma que você escolher. Payloads em JSON ou texto simples para um agente de correção automática.

Servidor MCP

Conecte o Claude Desktop, o Cursor e outros clientes MCP para consultar achados, projetos e bibliotecas — e iniciar varreduras — sem sair do chat.

Exportação de avisos

Exporte os achados de um projeto ou biblioteca como Markdown, com um prompt de remediação personalizável para a sua equipe ou um LLM.

Uma imagem, um arquivo

Uma imagem Docker e um arquivo SQLite. Sem servidor de banco de dados, sem fila de mensagens, sem dependência de nuvem.

Roots autorregistrados

Tudo o que for montado em /roots é registrado e escaneado na inicialização — o nome do diretório vira o seu rótulo.

Node por projeto

Respeita o .nvmrc de cada projeto, instalando e armazenando em cache uma única vez a versão do Node que ele fixa.

10 idiomas

A interface do portal, os códigos de motivo de escaneamento e os status estão traduzidos para 10 idiomas.

Capturas

Veja em ação — o portal escaneando alguns projetos de demonstração. Clique em qualquer captura para ampliá-la.

Como se compara

O Sentinello não é um Dependency-Track mais pesado nem um Snyk mais barato. Ocupa outro nicho: a cauda longa de projetos que ninguém ligou a um pipeline.

SentinelloDependency-TrackSnykDependabot
Sem configuração — aponte para uma pasta~~
Não exige SBOM / etapa de CI
Escaneia lockfiles resolvidos reais~
Detecção de pacotes maliciosos
Auto-hospedado, sem SaaS
Uma imagem + SQLite
Nativo para IA (MCP + export)~
Poliglota (Python, Go, …)
Política corporativa / VEX~~

O Dependency-Track só vê os projetos que alguém instrumentou com um pipeline de SBOM. O Sentinello encontra os que você esqueceu. Eles são mais fortes em política corporativa — se você já os roda em um pipeline maduro, mantenha-os. O Sentinello é para o resto do seu portfólio que ninguém está vigiando.

Por que criamos isto

Na era da IA, você publica mais do que consegue manter.

Hoje quem desenvolve sozinho cria, entrega e segue em frente em uma dúzia de projetos por ano — o site de marketing, o painel do cliente, o projeto paralelo que foi para produção sem alarde. Manter tudo isso seguro costumava significar dar SSH em cada cópia para rodar npm audit na mão, ou descobrir um CVE do Next.js por uma manchete dias depois de ele aparecer. Ninguém aguenta esse ritmo em uma dúzia de repositórios, então simplesmente não acontece.

Basta uma única dependência esquecida com uma falha crítica de execução remota de código. O site mais simples que você deixou de vigiar vira a porta de entrada.

“Por que não usar logo o Snyk ou o Dependabot?” Eles vivem dentro do pipeline de CI que você montou — e a cauda longa nunca ganhou um. O Sentinello é o sistema de alerta antecipado para todo o resto: aponte-o para uma pasta e ele vigia cada projeto que você esqueceu, revelando cada novo CVE em uma única fila antes que vire um incidente.

Como funciona

Três passos. Sem agentes para instalar nos seus projetos, sem contas para criar.

Aponte-o para o seu código

Monte seus repositórios em /roots ou adicione-os em Configurações → Roots. Cada diretório é registrado e descoberto automaticamente na inicialização.

Ele escaneia continuamente

Um processo em segundo plano compara suas dependências com os CVEs conhecidos conforme um agendamento, instalando a versão do Node que cada projeto fixa quando necessário.

Triagem em uma única fila

Cada achado de cada projeto chega a uma única fila que você pode filtrar por severidade — com alertas opcionais para Slack, Telegram ou um webhook.

Para quem é

O Sentinello é para todos que têm mais em produção do que conseguem vigiar — a pessoa que desenvolve sozinha, a equipe pequena, a agência que faz malabarismo com trabalho de clientes.

  • Você publica projetos paralelos e sites de clientes que precisam continuar seguros muito depois do lançamento.
  • Você quer uma visão de todo o portfólio sem cabear CI em cada repositório.
  • Você prefere auto-hospedar a entregar o inventário do seu código a um SaaS.

Se você é uma organização grande com Snyk ou Dependabot já integrados em um pipeline maduro, mantenha-os — o Sentinello não tenta substituir o SCA corporativo. Ele está aqui para o resto do seu portfólio que ninguém vigia. É de código aberto e licenciado sob MIT, então você pode ler exatamente o que ele faz.

Notas de versão

O Sentinello é atualizado com frequência — veja o que cada versão trouxe.

O download do gemnasium volta a funcionar — e a CLI devolve o terminal

v3.0.1 · 4 de ago. de 2026
  • O download do GitLab gemnasium falhava na 3.0.0 com `HTTP 406`, para todo mundo. O fetch nativo do Node adiciona um cabeçalho `Sec-Fetch-Mode: cors` que um programa não pode remover, e o GitLab recusa qualquer requisição de arquivo do repositório que o carregue — então nunca teve a ver com sua rede, seu IP ou quantas vezes você tentou. Agora o download usa uma requisição HTTPS comum e funciona
  • O arquivo é buscado pelo id do commit em vez do nome do branch, então todos que atualizam a partir do mesmo commit compartilham uma cópia em cache em vez de cada um pedir ao GitLab que gere um arquivo de 60 MB. Um primeiro download que levava quase sete minutos agora termina em segundos
  • A CLI terminava todo o trabalho — relatório escrito, resumo impresso — e depois nunca devolvia o terminal. A conexão do download ficava aberta por trás, mantendo o processo vivo; agora ela é fechada assim que o arquivo é lido
  • Uma fonte que recusa um download não trava mais por três minutos antes de avisar. Ela avisa em segundos e, num terminal, oferece tentar de novo — repetindo apenas a fonte que realmente falhou
  • `--fail-on` é honesto nos dois sentidos. Ele recusa uma execução cuja fonte de avisos não pôde ser consultada, em vez de relatar uma varredura limpa que nunca fez; e não falha mais por causa de uma fonte que você mesmo desligou com `SENTINELLO_OSV_FEED_URL=off` ou `SENTINELLO_GEMNASIUM_FEED_URL=off` e nunca baixou

O Sentinello agora roda sem portal nenhum

v3.0.0 · 3 de ago. de 2026
  • Os scanners saem como CLI no npm. `npx sentinello` percorre uma pasta, encontra todos os projetos abaixo, confere contra npm audit, OSV e GitLab gemnasium, e escreve um parecer em markdown com um prompt de remediação anexado — sem instalação, sem conta, sem banco de dados, e nada do seu código sai da máquina
  • Em pipe, o parecer é a única coisa no stdout, então `npx sentinello | claude -p "$(cat -)"` entrega a um agente uma lista de trabalho completa sem nada corromper o documento
  • A primeira execução não perde mais a fonte gemnasium por um download recusado. O GitLab recusa seu arquivo por um ou dois minutos seguidos, e a repetição antiga desistia em treze segundos; agora a CLI espera passar, diz por que está esperando, e aceita `--feed-wait` se os três minutos padrão não servirem
  • As duas estimativas de download foram medidas, não chutadas: o export npm do OSV é informado como 204 MB em vez de 196, e o arquivo do gemnasium como 52 MB em vez de 80. O aviso de consentimento marca uma estimativa com um til para que nunca seja confundida com um tamanho informado pelo servidor
  • Um valor com cara de flag agora é recusado em vez de aceito ao pé da letra — `--out --` escrevia um parecer em um arquivo chamado `--` dentro do seu projeto e relatava sucesso
  • O painel de Novidades não escapa mais pela parte de baixo da janela quando uma versão tem muito a dizer

O documento de parecer realmente chega — e conta o que você quer dizer

v2.6.0 · 29 de jul. de 2026
  • get_project_advisory agora retorna o próprio documento de parecer. Antes, os clientes conectados recebiam só os metadados — um nome de arquivo e uma contagem — e nunca o documento, embora a ferramenta o descrevesse como uma lista de trabalho completa
  • A exportação de pareceres agora tem uma entrada por parecer distinto, com suas fontes mescladas, em vez de uma por linha de scanner: uma vulnerabilidade que npm audit e OSV relatam é um único item de trabalho carregando os dois IDs, não dois quase idênticos. Isso vale também para o Download .md do portal, e a contagem agora bate com o painel
  • Um projeto grande demais para caber em uma resposta MCP agora é paginado — o documento informa que está incompleto e dá a chamada exata para buscar o resto, em vez de ser cortado em silêncio onde um agente leria o restante como limpo
  • Toda entrada de toda ferramenta MCP agora tem uma descrição, e uma nova ferramenta list_mutes expõe os IDs de silenciamento de que unmute precisa — antes só obteníveis criando o silenciamento na mesma sessão
  • Corrigida uma falha nas contagens de severidade: um achado cuja severidade não fosse um dos cinco valores conhecidos era contado como achado mas não entrava em nenhum balde de severidade, então um projeto cujo único achado tivesse isso parecia completamente limpo

O relatório de vulnerabilidades, direto pelo MCP

v2.5.0 · 28 de jul. de 2026
  • Clientes MCP conectados podem obter o relatório Markdown completo de um projeto com a nova ferramenta get_project_advisory — o mesmo documento do botão Baixar .md do portal, sem copiá-lo do navegador
  • Descobertas silenciadas não entram mais no relatório do projeto, então um agente nunca recebe um trabalho cujo risco você já aceitou
  • Observação: como o relatório contém o seu prompt de exportação, um cliente MCP agora consegue ler o que você escreveu em Configurações → Exportação

Popups sem corte e um prompt de exportação mais rigoroso

v2.4.3 · 26 de jul. de 2026
  • Os menus suspensos, o popover de caminho de dependência e o menu de exportação de avisos não são mais cortados pela tabela ou pelo diálogo em que ficam — eles são renderizados acima da página e abrem para cima quando não há espaço embaixo
  • O prompt padrão de exportação de avisos agora pede que o agente planeje antes de editar qualquer coisa, agrupe os achados que compartilham uma mesma correção e detalhe o impacto no código de cada mudança de versão; ele mira zero achados e descarta os atalhos para um zero falso — silenciar, ampliar intervalos ou reduzir o escopo da análise —, deixando o que é realmente irredutível em uma tabela de resíduos datada

O branch em sua própria coluna

v2.4.2 · 25 de jul. de 2026
  • O branch do git em que o projeto foi analisado agora tem uma coluna própria na lista de projetos — texto simples, sem ícone — em vez de ficar embaixo do nome do projeto

Desligamentos limpos

v2.4.1 · 25 de jul. de 2026
  • Reiniciar o contêiner não interrompe mais uma análise no meio da gravação, e o worker inicia imediatamente em vez de tentar de novo por ~30 segundos
  • Defina stop_grace_period: 60s (ou --stop-timeout 60) no seu arquivo compose para dar espaço a ele — o README e a documentação do Docker agora explicam isso

Análise poliglota — Python, Go e Rust se juntam ao npm

v2.4.0 · 25 de jul. de 2026
  • O Sentinello agora analisa projetos Python, Go e Rust além de npm — os arquivos de bloqueio são resolvidos totalmente offline e cada projeto informa sua cobertura de análise (completa, parcial ou não auditável), de modo que as lacunas fiquem visíveis em vez de silenciosas
  • O banco gemnasium do GitLab se junta ao npm audit e ao OSV como fonte de avisos offline, deduplicada em relação às demais por alias CVE/GHSA; Configurações → Fontes agora é uma matriz Linguagens × Fontes com escopo de notificação por célula, e o próprio npm audit pode ser desativado desde que uma fonte permaneça ativa
  • Os achados agora registram o branch do git de onde vieram, exibido na lista de projetos, no cabeçalho do projeto e em todas as notificações
  • As linhas de projeto trazem suas próprias ações — analisar agora, copiar ou baixar o aviso, silenciar ou reativar e editar tags — assim uma rodada de triagem não exige mais entrar em cada projeto
  • O painel de projetos passou de ~3,3 s para ~0,03 s, e a navegação agora mostra estados de carregamento em vez de parecer travada
  • Segurança: 25 avisos de dependências resolvidos, incluindo CVEs do libvips que estavam ativos no otimizador de imagens do portal e nove avisos do Next.js que afetavam o portal distribuído
  • O prompt padrão de exportação de avisos agora cobre idade mínima de publicação, verificação do arquivo de bloqueio e overrides obsoletos

Configuração de MCP mais simples, sem variáveis de ambiente

v2.3.0 · 9 de jun. de 2026
  • Configure o MCP inteiramente em Configurações → MCP: gere um token para ativar o endpoint /api/mcp e limpe-o para desativá-lo — as variáveis de ambiente SENTINELLO_MCP_ENABLED e SENTINELLO_MCP_API_TOKEN foram removidas (um token de ambiente existente é importado uma vez na atualização)
  • Trechos de conexão prontos para colar para Claude Code, Codex, Cursor e Claude Desktop, já preenchidos com o seu token
  • Quando SENTINELLO_PORTAL_BASE_URL é definida no ambiente, ela aparece como somente leitura em Configurações → Avançado, pois continua sendo autoritativa e é reaplicada a cada inicialização

Menos alarmes falsos e achados que se limpam sozinhos

v2.2.0 · 9 de jun. de 2026
  • Os avisos de malware agora correspondem à versão comprometida exata — uma versão limpa ou já corrigida de um pacote que esteve comprometido deixa de ser sinalizada
  • Achados duplicados agora se resolvem sozinhos na próxima varredura, de modo que entradas antigas ou órfãs são removidas automaticamente
  • Os rótulos de produção e desenvolvimento agora são calculados de uma única forma consistente em todas as fontes (npm e OSV)

Um cabeçalho de projeto mais limpo e filtros consistentes

v2.1.0 · 6 de jun. de 2026
  • Cabeçalho de projeto simplificado — renomeie ao lado do título, com silenciar e tags como ícones
  • Filtre as ocorrências por fonte (npm / OSV) em um novo menu suspenso ao lado do filtro de tipo de dependência
  • Menus suspensos unificados e consistentes em todo o app, com busca ao digitar em listas longas como fusos horários

Orientações de atualização mais claras

v2.0.1 · 4 de jun. de 2026
  • Passos de atualização ampliados para as alterações incompatíveis da 2.0
  • O README indica a vinculação de porta somente em localhost

Varredura multi-fonte e uma instalação reforçada e segura por padrão

v2.0.0 · 4 de jun. de 2026
  • OSV como segunda fonte opcional (Configurações → Fontes, desativada por padrão) com detecção de pacotes maliciosos, comparada com o banco de dados público do OSV em um cache local
  • Os achados agora são mesclados entre fontes — uma linha por vulnerabilidade, cada fonte marcada, a melhor correção disponível e a união dos caminhos de dependência, com filtro por fonte e um popover de caminho de dependência
  • Reforço de segurança: o endpoint MCP está desativado por padrão e exige um token, a entrega de webhooks é protegida contra SSRF, uma porta de login opcional do portal, e o contêiner é executado como usuário sem privilégios
  • Configurações agora é uma seção de nível superior com barra lateral e uma página de Perfil

Integração MCP e novidades

v1.4.0 · 29 de mai. de 2026
  • Servidor MCP em /api/mcp para Claude Desktop, Cursor e outros clientes
  • Nova seção Configurações → MCP com URL do servidor e gerenciamento de tokens
  • Etiqueta de novidades e um histórico de notas de versão

Correção da versão no rodapé

v1.3.1 · 28 de mai. de 2026
  • A versão em execução é exibida corretamente no rodapé

Melhorias nas notificações

v1.3.0 · 28 de mai. de 2026
  • Filtrar notificações por ambiente
  • Formulário de edição de destinos mais simples
  • Duplicar um destino de notificação existente

Páginas de Projetos e Bibliotecas

v1.2.0 · 24 de mai. de 2026
  • A tela inicial é dividida em páginas dedicadas de Projetos e Bibliotecas

Recarregamento da agenda em tempo real

v1.1.2 · 24 de mai. de 2026
  • O worker recarrega a agenda de varredura assim que você salva alterações no portal

Exclusões mais seguras e um aviso de atualização mais claro

v1.1.0 · 23 de mai. de 2026
  • Confirmação antes de excluir raízes e destinos de notificação
  • Aviso de atualização movido para um banner superior dispensável
  • O worker remove raízes obsoletas quando o ponto de montagem desaparece

Correções de precisão do scanner

v1.0.1 · 23 de mai. de 2026
  • Descarta achados cuja versão instalada não está realmente na faixa vulnerável
  • Permite excluir um destino de notificação com histórico de envios

Primeira versão de código aberto

v1.0.0 · 23 de mai. de 2026
  • O primeiro lançamento público do Sentinello

Roadmap

Hoje o Sentinello vigia suas dependências em várias linguagens. É para cá que ele vai — e o que você pode pedir.

Priorização mais inteligente

Planejado

Classifique os achados por explorabilidade e se o código vulnerável é realmente alcançável — triagem do que importa primeiro.

Mais integrações

Planejado

Mais canais de notificação e formas de conectar o Sentinello às ferramentas que sua equipe já usa.

Análise estática (SAST)

Planejado

Detecte padrões de código arriscados no seu próprio código, não só CVEs conhecidos nas dependências.

Varredura de segredos e licenças

Planejado

Sinalize segredos commitados e problemas de licença no mesmo portfólio, na mesma fila.

Solicitar uma integração ou fonte

Diga o que você integraria ou escanearia em seguida — abra uma issue no GitHub e ajude a moldar o roadmap.