O guardiΓ£o entre vocΓͺ e o caos
Sentinel Γ© um firewall cognitivo para DevOps β um CLI inteligente que intercepta comandos perigosos antes que eles causem desastres, respondendo com humor, consciΓͺncia contextual e educaΓ§Γ£o tΓ©cnica.
Sentinel nΓ£o Γ© apenas um validador de comandos β Γ© um mentor tΓ©cnico com personalidade. Ele:
- π§ Educa antes de impedir: Provoca reflexΓ£o tΓ©cnica ao invΓ©s de simplesmente bloquear
- π Tem personalidade: Usa humor inteligente e sarcasmo leve para tornar a seguranΓ§a memorΓ‘vel
- π Γ contextual: Analisa branch Git, ambiente, horΓ‘rio e padrΓ΅es de risco
- π Aprende com vocΓͺ: MantΓ©m estatΓsticas e histΓ³rico de decisΓ΅es
- π Γ extensΓvel: Sistema de plugins permite customizaΓ§Γ£o total
npm install -g @isckosta/sentinelPara a melhor experiΓͺncia, o Sentinel pode se integrar diretamente ao seu terminal para analisar todos os comandos que vocΓͺ executa, sem a necessidade de digitar sentinel exec.
Execute o comando abaixo para o seu shell (Bash ou Zsh):
# Para Zsh (recomendado)
sentinel init zsh
# Para Bash
sentinel init bashO comando irΓ‘ gerar um script. Para ativΓ‘-lo, adicione a seguinte linha ao final do seu arquivo de configuraΓ§Γ£o do shell (~/.zshrc para Zsh, ~/.bashrc para Bash):
# Adicione esta linha ao seu ~/.zshrc ou ~/.bashrc
eval "$(sentinel init zsh)" # ou bashApΓ³s reiniciar seu terminal, o Sentinel estarΓ‘ ativo e vigiando todos os seus comandos.
Se preferir nΓ£o usar a integraΓ§Γ£o automΓ‘tica, vocΓͺ pode invocar o Sentinel manualmente para cada comando.
Execute qualquer comando atravΓ©s do sentinel exec:
sentinel exec prisma migrate reset --forceOu, como atalho, simplesmente passe o comando diretamente:
sentinel prisma migrate reset --forcesentinel stats: Exibe um relatΓ³rio colorido com estatΓsticas de uso.sentinel exec <comando...>: Executa um comando sob a supervisΓ£o do Sentinel.sentinel analyze <comando...>: Analisa um comando e retorna um cΓ³digo de status (0 para seguro, 1 para bloqueado) sem executΓ‘-lo. Usado principalmente pela integraΓ§Γ£o com o shell.sentinel init <bash|zsh>: Gera o script de integraΓ§Γ£o para o shell especificado.
-y, --yes: Auto-aprova comandos de baixo risco (safe).-c, --config <path>: Usa um arquivo de configuraΓ§Γ£osentinel.ymlcustomizado.
$ rm -rf /
π¨ ALERTA CRΓTICO - COMANDO PERIGOSO DETECTADO
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Comando: rm -rf /
Score de Risco: 100/100
Motivos para bloqueio:
β’ Isso vai destruir o sistema. PARE IMEDIATAMENTE.
β’ RemoΓ§Γ£o recursiva forΓ§ada. Verifique o caminho duas vezes.
ββββββββββββββββββββββββββββββββββββββββββββββββββ
π‘ Sentinel recomenda:
β’ NΓ£o executar este comando. Nunca.
β’ Tomar um cafΓ© e repensar suas escolhas.
? VocΓͺ REALMENTE entende as consequΓͺncias deste comando? (y/N)$ git push --force
β οΈ ALERTA DE RISCO MODERADO
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Comando: git push --force
Score de Risco: 45/100
Motivos:
β’ Force push pode reescrever histΓ³ria. Equipe estΓ‘ ciente?
β’ Flag --force detectada. Cuidado com o que deseja.
ββββββββββββββββββββββββββββββββββββββββββββββββββ
? Deseja prosseguir mesmo assim? (y/N)$ sentinel stats
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π‘οΈ SENTINEL STATS β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π VisΓ£o Geral
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Total de comandos avaliados: 127
Comandos executados: 115 (90.6%)
Comandos bloqueados: 12 (9.4%)
β οΈ DistribuiΓ§Γ£o de Risco
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Safe: ββββββββββββββββββββββββββββββ 98 (77.2%)
β Warning: ββββββββββββββββββββββββββββββ 17 (13.4%)
β Critical: ββββββββββββββββββββββββββββββ 12 (9.4%)
π¨ InformaΓ§Γ΅es de Incidentes
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Γltimo incidente: 15 de out, 14:23
Dias sem autossabotagem: 7 π (Melhorando)
π Eventos Recentes
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β out 15, 15:20 safe npm test
β β out 15, 14:45 warning git push --force
β β out 15, 14:23 critical prisma migrate reset --force
β β out 15, 10:30 safe npm run build
β β out 14, 18:15 safe git commit -m "fix"
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π‘οΈ Sentinel estΓ‘ de olho. Continue operando com consciΓͺncia.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββCrie um arquivo sentinel.yml na raiz do seu projeto:
rules:
- pattern: "*migrate reset*"
level: critical
message: "Esse comando parece suicida. Quer pensar de novo?"
conditions:
branch: "!main"
env: "!production"
- pattern: "*deploy*main*"
level: critical
message: "Deploy sem review? TΓ‘ apostando contra o universo?"
- pattern: "*--force*"
level: warning
message: "Flag --force detectada. Cuidado com o que deseja."
plugins:
- "./plugins/custom-branch-check.js"- safe (0-39): Comando seguro, executa automaticamente
- warning (40-69): Pede confirmaΓ§Γ£o do usuΓ‘rio
- critical (70-100): Requer confirmaΓ§Γ£o consciente e digitaΓ§Γ£o do comando
branch: Verifica a branch Git atual (use!para negar)env: Verifica o ambiente (production, staging, development)time: Verifica horΓ‘rio (implementaΓ§Γ£o futura)
Crie plugins customizados para estender o comportamento do Sentinel:
// plugins/custom-check.js
module.exports = {
name: 'custom-check',
evaluate: (command, currentScore) => {
// Ajusta o score baseado em lΓ³gica customizada
if (command.currentBranch === 'main') {
return currentScore + 15;
}
return currentScore;
},
onEvent: (event) => {
// Reage a eventos (opcional)
if (event.riskLevel === 'critical' && event.executed) {
console.log('ALERTA: Comando crΓtico executado!');
}
}
};Sentinel aplica mΓΊltiplas heurΓsticas para calcular o score de risco:
- Branch principal (+20): OperaΓ§Γ΅es em
mainoumaster - Ambiente de produΓ§Γ£o (+25): Comandos em produΓ§Γ£o
- Flag --force (+30): Uso de flags de forΓ§a
- Comandos destrutivos (+25):
delete,drop,reset,destroy, etc. - HorΓ‘rio noturno (+15): Comandos apΓ³s 22h ou antes de 6h
- Deploy no fim de semana (+20): Deploys em sΓ‘bado ou domingo
- MigraΓ§Γ΅es de banco (+15): Comandos
migrate
Todos os eventos sΓ£o registrados em ~/.sentinel/:
telemetry.log: Log detalhado de todos os comandosstats.json: EstatΓsticas agregadasevents.json: HistΓ³rico dos ΓΊltimos 1000 eventos
- Node.js 20+
- TypeScript 5.9+
# Clone o repositΓ³rio
git clone https://github.com/isckosta/sentinel.git
cd sentinel
# Instale dependΓͺncias
npm install
# Build
npm run build
# Testes
npm test
# Desenvolvimento
npm run devnpm run build: Compila TypeScriptnpm run start: Executa versΓ£o compiladanpm run dev: Executa com ts-nodenpm test: Roda testes com Jestnpm run lint: Verifica cΓ³digo com ESLintnpm run release: Cria nova versΓ£o e publica
npm testCobertura de testes inclui:
- Parsing de comandos
- CΓ‘lculo de risco
- Sistema de plugins
- Telemetria e estatΓsticas
- IntegraΓ§Γ£o com Slack/Discord para alertas
- Machine learning para detecΓ§Γ£o de padrΓ΅es
- Modo de aprendizado (observa sem bloquear)
- Dashboard web para visualizaΓ§Γ£o de mΓ©tricas
- IntegraΓ§Γ£o com CI/CD pipelines
- Suporte a mΓΊltiplos times/projetos
- AnΓ‘lise de impacto baseada em histΓ³rico
ContribuiΓ§Γ΅es sΓ£o bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/amazing) - Commit suas mudanΓ§as (
git commit -m 'Add amazing feature') - Push para a branch (
git push origin feature/amazing) - Abra um Pull Request
MIT Β© MH Solutions
Algumas das mensagens que vocΓͺ pode encontrar:
- "Esse comando parece suicida. Quer pensar de novo?"
- "Deploy sem review? TΓ‘ apostando contra o universo?"
- "Nada de bom acontece depois das 22h."
- "Deploy no fim de semana? Seus planos merecem mais que isso."
- "Force push pode reescrever histΓ³ria. Equipe estΓ‘ ciente?"
- "DROP DATABASE? SΓ©rio? Respire fundo antes de continuar."
Sentinel Γ© mais que um CLI β Γ© um guardiΓ£o da sanidade DevOps. Um software que transforma descuido em aprendizado e impede desastres antes que virem chamados de suporte.
Slogan: Sentinel β o guardiΓ£o entre vocΓͺ e o caos.
Feito com π‘οΈ e β por Israel C.