Skip to content

Repository files navigation

NOMOS — Seu agente. Sua máquina. Suas regras. Local por lei.

NOMOS

Seu agente. Sua máquina. Suas regras.local por lei.

CI Release Python 3.10 to 3.13 License MIT local-first SLSA provenance reproducible build

🌐 Site · ⚡ Instalar · 🖥️ Veja por dentro · 🔏 Verifique você mesmo · 🧭 Guia do iniciante · 📚 Docs

NOMOS é um agente pessoal de IA que roda 100% no seu computador. Cérebro, memória, chaves e registros ficam na sua máquina. A nuvem é opcional e só funciona se você "plugar" de propósito. Leve, sem exigir super-PC, e feito para iniciantes.

E quando o NOMOS chega até você, chega provado: cada release publica hash, proveniência criptográfica (SLSA/Sigstore) e inventário de dependências — e o mesmo commit produz bytes idênticos em Linux, macOS e Windows, em Python 3.10, 3.12 ou 3.14. Você não precisa confiar; pode verificar.

███╗   ██╗ ██████╗ ███╗   ███╗ ██████╗ ███████╗
████╗  ██║██╔═══██╗████╗ ████║██╔═══██╗██╔════╝
██╔██╗ ██║██║   ██║██╔████╔██║██║   ██║███████╗
██║╚██╗██║██║   ██║██║╚██╔╝██║██║   ██║╚════██║
██║ ╚████║╚██████╔╝██║ ╚═╝ ██║╚██████╔╝███████║
╚═╝  ╚═══╝ ╚═════╝ ╚═╝     ╚═╝ ╚═════╝ ╚══════╝

Por que NOMOS

  • 🔒 Local por lei — por padrão, nada sai da sua máquina. A própria política bloqueia qualquer saída para a internet até você permitir.
  • 🧠 Cérebro leve embutido — não precisa de Ollama nem GPU. Baixa um modelo pequeno (a partir de ~400 MB) que roda em qualquer laptop, uma vez só.
  • Pede licença — toda ação sensível passa por uma aprovação sua; em scripts/CI a resposta é sempre "não" (fail-closed, sem flag de bypass).
  • 🎯 Nunca finge — sem cérebro conectado, avisa; jamais inventa resposta.
  • 🧩 Skills governadas — habilidades instaláveis que só fazem o que declaram, com risco visível e aprovação humana.
  • 🚦 Roteador automático — escolhe o melhor motor para cada tarefa, local primeiro, sem você precisar entender de modelos.
  • 🔗 Cadeia de suprimentos provada — wheel e sdist bit-a-bit reproduzíveis, assinados via Sigstore, com SBOM amarrado por SHA-256 ao artefato exato.
  • 🎨 Do seu jeito — nome do agente, personalidade e cores personalizáveis.

Capacidades

Capacidade O que faz Como
Local por lei Por padrão nada sai da máquina; a política bloqueia egress até você permitir.
Pede licença (A0–A6) Toda ação sensível é aprovada por você; em scripts/CI a resposta é sempre não.
Nunca finge Sem cérebro pronto, avisa; jamais inventa resposta ou dado.
Cérebro leve embutido Modelo pequeno (a partir de ~400 MB) que roda sem GPU nem Ollama. nomos cerebro
Roteador automático Escolhe o melhor motor por tarefa — local primeiro. nomos motores
Memória local SQLite na sua máquina com busca full-text; você revisa o que vira permanente. nomos memoria
Memória que atravessa sessões Motor auditável: dry-run por padrão, hash de integridade, recusa segredos e PII. python -m nomos.memory.cli
Mosaic — telas ao vivo no painel Várias telas isoladas em mosaico dentro do painel, vistoriadas pelo agente. python -m nomos.mosaic.cli
Conversas com retenção Abra, busque, fixe, exporte e esqueça conversas — retenção sob seu controle. nomos conversas
Missões que fazem Plano legível → uma aprovação → execução passo a passo → evidência; um comando desfaz. nomos missao
Fila de aprovações Ação sensível passa por fila com token de uso único; no terminal ou no painel. nomos approvals
Motor Council Vários motores respondem, revisam às cegas e um árbitro converge — fail-closed. nomos conselho
Cofre e backup Chaves com senha-mestra; seu NOMOS inteiro num arquivo cifrado. nomos chaves
Skills governadas Habilidades instaláveis e assinadas que só fazem o que declaram. nomos skills
Agentes com escopo Agentes oficiais e próprios, com ferramentas, motores e risco máximo definidos. nomos agentes
Auditoria com âncora Trilha com âncora HMAC — evidência que não muda em silêncio. nomos logs
Painel web local + chat Status, motores, evidências, política viva e chat local — só 127.0.0.1. nomos painel
Conectores MCP oficiais Telegram, WhatsApp, e-mail (SMTP/IMAP), Slack, Signal e calendário .ics — governados (A3/A0). nomos mcp
Rotinas e briefing 2.0 Resumo do dia + o que chegou, entregue no seu canal, sempre com seu OK. nomos rotinas
Atualização com licença Checa versão nova e propõe — nunca atualiza sozinho. nomos atualizar
Evidências verificáveis Cada missão gera pacote com relatório, manifesto e SHA-256, auditável offline. nomos evidencia
Botão de pânico Um comando corta tudo: revoga consentimentos e tranca. nomos panic
Doutor Check-up honesto do que está pronto e o próximo passo. nomos doutor

Veja por dentro

O painel roda só em 127.0.0.1, com URL secreta e zero assets externos — nada sai da sua máquina nem para desenhar a página.

Cockpit do NOMOS: status geral, motor ao vivo, atividade recente e fila de aprovações numa tela Fila de aprovações: cada pedido chega com risco, alvo, motivo e prazo — APROVAR ou NEGAR com token de uso único
Cockpit — status, motores, memória e evidências numa tela Aprovações — você decide; token de uso único, sem bypass
Dashboard do NOMOS com métricas e saúde dos motores locais Painel do NOMOS em viewport móvel, mesmo tema terminal
Dash ao vivo — saúde dos motores, sem telemetria externa No celular — o mesmo painel, responsivo

Instalação (estado atual)

Requer Python 3.10+. Instalação a partir do código:

git clone https://github.com/Voltolini-SPACE/NOMOS
cd NOMOS
pip install .
nomos            # 1ª vez: assistente guiado; depois: menu principal

Ou pelos instaladores de 1 clique anexados a cada release do GitHub (install.sh para Mac/Linux, install.ps1 para Windows) — com verificação de integridade, backup automático e rollback. Detalhes: docs/INSTALL.md.

Verifique, não confie

Todo release do NOMOS publica três camadas independentes de garantia — e qualquer pessoa pode conferir as três em menos de um minuto:

# 1. Integridade: os bytes que você baixou são os bytes publicados
shasum -a 256 -c SHA256SUMS

# 2. Proveniência: o pacote saiu DESTE repositório, DESTE workflow, DESTA tag
#    (assinatura Sigstore/Fulcio + transparência Rekor)
gh attestation verify nomos-*.whl -R Voltolini-SPACE/NOMOS

# 3. Reprodutibilidade: reconstrua do fonte e obtenha o MESMO hash
git checkout <tag> && python tools/repro_check.py

O inventário de dependências (sbom.cdx.json, CycloneDX 1.5) referencia o wheel e o sdist pelo SHA-256 exato — o SBOM descreve aquele arquivo, não "uma versão parecida". Contrato completo: docs/SUPPLY_CHAIN.md.

Comece por aqui

Comando O que faz
nomos menu principal amigável (ou onboarding, na 1ª vez)
nomos doutor check-up: STATUS GERAL + o próximo passo recomendado
nomos cerebro baixar baixa o cérebro leve (uma vez; pede sua aprovação)
nomos skills menu de habilidades: instalar, ver permissões, diagnóstico
nomos motores listar motores por modalidade: custo, privacidade, status
nomos motores recomendar texto o que o roteador usaria, e por quê
nomos motores auto on roteamento automático local-first (padrão: ligado)
nomos local status o cadeado que mantém tudo local
nomos chaves guarda chaves com segurança, sem digitar no chat
nomos arquivo <caminho> lê e resume um arquivo seu, tudo local (PDF com extra opcional)
nomos backup criar <arquivo> seu NOMOS inteiro num arquivo cifrado (memórias, chaves, tudo)
nomos painel cockpit web local (status, aprovações, chat) + NOMOS Dash ao vivo
nomos mcp exemplos conectores que acompanham o NOMOS (Telegram, WhatsApp, e-mail, Signal, Slack, calendário) e como ligar
nomos mcp buscar <termo> acha um conector embarcado por nome ou descrição (ex.: nomos mcp buscar agenda) — sem acento/caso
nomos mcp assinatura <conector> verifica a assinatura opcional de autor (ed25519) — camada acima do SHA-256; recusa no confiar se estiver inválida
nomos mcp doutor check-up dos conectores: confiança, credenciais no ambiente (só presença) e interpretador — só-leitura
nomos entrada telegram / email / calendario lê o que chegou (mensagens) ou a sua agenda por um conector confiado — só leitura, governado (A3; o calendário local é A0)
nomos entrada <canal> --dia briefing 2.0: junta "o que chegou"/"sua agenda" + "o seu dia" numa visão só
nomos conselho status / modos / simular Motor Council: estado e modos (informativo) + simulação segura em dry-run
nomos rotinas criar "Briefing" 08:00 briefing-telegram:<chat> briefing diário entregue no seu canal — telegram/whatsapp/email/slack (com seu OK, A3)
nomos doutor --consertar aplica correções seguras com a sua confirmação
nomos atualizar checa se há versão nova (com sua aprovação; nunca atualiza sozinho)

Dentro da conversa: /ajuda, /cerebro, /chaves, /motores, /tema, /local, /doutor, /contexto (transparência do que vai ao motor), /sair.

O que o NOMOS nunca faz sem a sua permissão

Sair para a internet; usar motor de nuvem; usar chave do cofre; criar/alterar arquivo; executar código; instalar skill; acessar microfone/câmera/tela. Ações destrutivas são negadas por padrão. Detalhes e mecanismos: docs/PRIVACIDADE.md.

Documentação

Como funciona

O NOMOS tem um kernel de governança (política fail-closed A0–A6, gate de aprovação, cofre Argon2id, auditoria com cadeia de hash, cadeado de localidade) e uma camada de cognição (cérebro embutido via llama.cpp, memória local SQLite, catálogo de motores por modalidade, roteador automático local-first e pipelines com política em cada etapa). Skills passam por manifesto validado, checksum, assinatura ed25519 e trust store. Tudo em Python puro, multiplataforma.

Motor Council

O Motor Council — um pipeline de múltiplos motores que revisa, julga e arbitra respostas antes de entregá-las — está disponível em modo dry-run. A capacidade estreou na tag v1.3.0rc4-motor-council-dry-run e segue presente, sem retrocesso, na versão atual (1.3.0rc20). Ainda não é produção e não executa motor de verdade.

Superfícies disponíveis hoje (nenhuma executa motor real):

nomos conselho ajuda                   # mapa dos comandos do Council
nomos conselho status                  # estado + travas (informativo)
nomos conselho modos [--avancado]      # os 4 modos (aceita --json)
nomos conselho diagnostico [--json]    # lê a trava REAL do harness, ao vivo
nomos conselho simular "seu texto"     # simulação segura (dry-run)
/conselho status                       # os mesmos, dentro do chat
/conselho modos
/conselho simular seu texto

Garantias atuais (todas verificadas por teste, não por convenção):

  • Execução de motor real: desligada — trava literal REAL_LOCAL_ENGINE_EXECUTION_ENABLED = False, sem API para ativar.
  • CLI e chat: status e modos são informativos puros (só imprimem fatos estáticos — nada de motor, prompt, rede ou disco); simular roda em dry-run; e perguntar, revisar, explicar, diagnostico — que exigiriam execução real — seguem desabilitados/fail-closed nas duas superfícies.
  • Policy/Audit/Vault reais: não são chamados (o gate e o audit são só dry-run; A0–A6 simulado, would_write_audit=false).
  • Nuvem / rede / subprocess: não usados por nenhum módulo do Council.
  • Persistência: desligada no fluxo do Council.
  • Prompt / conteúdo bruto: nunca aparece nas saídas (redação; só campos escalares seguros, inclusive no --json).
  • Modo privado / paranoico: força persist_allowed=false.

Detalhes técnicos e o mapa completo das fases MC0–MC18:

Maturidade

Release candidate (v1.3.0rc20, pre-release). Suíte com mais de 1.800 testes cobrindo segurança (fail-closed, não-vazamento de segredo, opt-in de nuvem) e UX, verde em 3 sistemas × 4 versões de Python. A cadeia de publicação tem proveniência SLSA verificada, SBOM com amarração por hash e builds bit-a-bit reproduzíveis com gate próprio no CI. O Motor Council está em dry-run (ver seção acima): o subcomando simular roda na CLI e no chat, mas sem execução de motor real, sem nuvem e sem persistência. API interna pode mudar; os comandos da tabela acima são estáveis.

Desenvolvimento

pip install -e .
python -m pytest -q          # suíte completa
ruff check src tests         # lint

Licença

MIT © Se7enpay

About

Seu agente. Sua máquina. Suas regras. — agente pessoal de IA 100% local, com supply chain provada (SLSA + SBOM + builds bit-a-bit reproduzíveis)

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages