Denderson
@denderson.ai Manual das Naias
CAPITULO 1

VISAO MACRO E PRINCIPIOS

  • Existem 3 Naias em producao simultanea: Naia Claude Hetzner (instancia mae, 24h), Naia Claude Mac (laptop do Chefe) e Naia Codex Hetzner (GPT-5.5). Todas compartilham o banco PostgreSQL naia_memory com pgvector
  • Alem das 3 Naias do Chefe, ha 6 clones humanos completos (Davi, Fernando, Jonathan, Rafael, Rodrigo, Clara), cada um com sessao Claude Code propria e bot Telegram dedicado
  • O bot Telegram externo e CANAL, nunca cerebro. Ele nunca decide conteudo, nunca compoe respostas automaticas. Recebe mensagem, injeta no tmux, coleta resposta do outbox e envia
  • A Naia e ORQUESTRADORA, nao executora. Tudo que demora mais de 30 segundos e delegado para o subagente correto via Agent tool
  • Toda mensagem do Chefe segue 3 fases: Entendimento (ate 10s), Execucao (trabalho) e Entrega (resultado concreto). Quebrar essa regra e falha grave
CAPITULO 2

CAMADA FISICA E SERVICOS

  • Hetzner dedicado: AMD Ryzen 7 PRO 8700GE, 16 CPUs, 64GB RAM, 437GB SSD. Roda simultaneamente: Naia Claude, Naia Codex, 6 clones, PostgreSQL, Redis, Evolution API, Jitsi Meet, OS Avalanche, Caddy
  • Banco naia_memory com 64 tabelas, 1.1M+ rows em conversation_history, pgvector com indices HNSW pra busca semantica em vetores de 1536 dimensoes
  • Mac do Chefe mantem PostgreSQL local espelhado via tunnel SSH permanente (porta 15432). Sync bidirecional a cada 5 minutos + daily completo as 04:00 BRT
  • Caddy faz reverse proxy pra todos os servicos: OS Avalanche, Evolution API, dashboard de agentes, propostas, organization hub. TLS automatico via Let's Encrypt
  • Credenciais centralizadas em .env: OpenAI, Gemini, ElevenLabs, GitHub, Vercel, Cloudflare, Asaas, Meta, Telegram, HikerAPI, HeyGen e mais
CAPITULO 3

SUPERVISAO E RESILIENCIA

  • 3 niveis de resiliencia empilhados: systemd/launchd (nivel 3), supervise.sh (nivel 2) e start.sh (nivel 1). Se qualquer camada morrer, a de cima ressuscita em segundos
  • start.sh roda loop infinito dentro do tmux: detecta se precisa boot FRESH (sessao nova) ou CONTINUE (recupera JSONL anterior). Decide com base em crashes e flag /tmp/naia-force-fresh
  • Deteccao de fast crashes: 3 crashes em menos de 120 segundos forca FRESH automaticamente, protegendo contra JSONL corrompido que causaria loop infinito
  • Backoff exponencial entre restarts: comeca em 5s, dobra ate 15s maximo. Reseta quando sessao fica estavel por mais de 300 segundos
  • Claude roda com --dangerously-skip-permissions (agente autonomo em producao) e --effort max (thinking estendido ao maximo)
CAPITULO 4

CLI: CLAUDE CODE vs CODEX

  • Claude Code tem 6 tipos de hooks nativos (SessionStart, UserPromptSubmit, PreCompact, Stop, SubagentStop, PostToolUse) que estendem o comportamento sem alterar o core. Codex NAO tem hooks
  • Subagentes no Claude Code sao declarados em .claude/agents/ com frontmatter YAML. Cada um e spawado como sessao isolada com tools restritas. No Codex, simulado via delegate_task.py
  • CLAUDE.md (Claude Code) e AGENTS.md (Codex) sao carregados automaticamente como system prompt em todo turn. O CLAUDE.md tem 28KB de regras canonicas
  • Tokens do Claude Code: soma de input + output + cache_read + cache_creation = tokens efetivos da janela. No Codex, extraido via regex no log
  • Ambas CLIs tem a MESMA personalidade Naia. Diferem apenas em mecanismos tecnicos: reply via outbox JSON (Claude) vs reply.py (Codex)
CAPITULO 5

BOT EXTERNO TELEGRAM

  • Daemon Python (850+ linhas) com 5 threads concorrentes: poll_loop, outbox_loop, typing_loop, auto_approve_loop e rotation_loop. Roda como processo totalmente independente do Claude
  • Mensagens chegam via long polling do Telegram, sao salvas em inbox/ e injetadas no tmux da Naia via send-keys. Respostas sao escritas como JSON em outbox/ pela Naia
  • Typing indicator dinamico: renova "digitando..." a cada 4 segundos enquanto a Naia trabalha. O Chefe ve atividade constante em vez de silencio
  • Auto-approve detecta prompts interativos do Claude Code e aprova automaticamente, exceto comandos criticos (rm -rf, DROP, push --force) que vao pro Chefe via botao inline
  • Audio: entrada via Whisper (transcreve voz do Chefe), saida via ElevenLabs (narra resposta). Debounce de 8s no Mac agrupa mensagens curtas em rajada
CAPITULO 6

PERSONALIDADE E INTELIGENCIA

  • 14 subagentes especializados: Juliana (sub-gerente, pode invocar outros agentes), Paulo (dev full-stack), Jonathan (copywriter), Rafael (projetos), Denderson Clone (trafego), SDRs de vendas e Amanda CRM
  • 6 hooks ativos: SessionStart injeta bootstrap magro, UserPromptSubmit faz grounding semantico (anti-alucinacao), Stop bloqueia promessas sem execucao, PostToolUse renova typing
  • SOUL.md define a essencia: CEO da agencia, proativa, direta, com opiniao estrategica. IDENTITY.md: ruiva, olhos verdes esmeralda, terno preto. USER.md: perfil completo do Chefe em 191 linhas
  • Grounding-search por turno: antes de cada resposta, busca top-3 chunks + top-3 facts semanticamente proximos no banco vetorial. Previne alucinacao
  • Knowledge base com 50+ arquivos (500KB) organizados em soul, user, tools, agents, meta-ads, sdr, crm, sales, imersao. Todos indexados em memory_chunks
CAPITULO 7

MEMORIA PERSISTENTE

  • conversation_history: 1.1M+ rows com todas as mensagens. Cada turn ganha embedding de 1536 dimensoes via OpenAI text-embedding-3-small pra busca semantica
  • memory_chunks: 8.000+ chunks indexados. Arquivos .md sao divididos em pedacos de 1500 chars com overlap de 200, re-indexados automaticamente quando mudam (dedup por file_hash MD5)
  • naia-memory service (Node.js, porta 3007): file watcher via chokidar, chunking inteligente, API REST pra busca em chunks/facts/conversas/transcricoes
  • consolidate-conversations.py roda a cada 5 minutos: le todos os JSONL do Claude Code, insere turns novos no banco com checkpoint por arquivo. Zero perda entre sessoes
  • build-session-handoff.py gera resumo enxuto (~2.8KB) antes da rotacao: ultimas 6 msgs, mensagem pendente, paths de referencia. Garante continuidade sem carregar JSONL antigo
CAPITULO 8

SYNC BIDIRECIONAL MAC-HETZNER

  • Tunnel SSH permanente (porta 15432) mantem o PostgreSQL Hetzner acessivel no Mac. Watchdog dedicado testa conectividade e reinicia automaticamente se cair
  • sync-naia-db.py roda a cada 5 minutos: sincroniza 17+ tabelas em AMBAS direcoes com INSERT ON CONFLICT DO NOTHING. Deadline de 110s por execucao pra nao empilhar
  • Cron daily as 04:00 BRT faz sweep completo sem cursor incremental, cobrindo tabelas com cursor_col=None. Catch-up de inconsistencias acumuladas
  • Volume tipico: 30-100 rows de conversation_history por execucao de 5 minutos. Hetzner tende a ter mais rows porque os 6 clones rodam so la
  • Heartbeat 1x/min por host: coleta hostname, runtime, modelo LLM, rows locais, metricas de I/O. Dashboard em agents.denderson.ai consolida tudo em tempo real
CAPITULO 9

ROTACAO DE JANELA 180K TOKENS

  • Janela nominal do Opus 4.7 e 1M tokens, mas inteligencia degrada a partir de 200k. Rotacao ativa em 180k (soft, com aviso) e 220k (hard, silenciosa) mantem performance otima
  • rotation_loop no bot: thread que checa tokens a cada 30 segundos. Calcula soma de input + output + cache_read + cache_creation do ultimo turn assistant
  • Soft rotate: avisa o Chefe no Telegram ("vou compactar e voltar"), consolida JSONL no banco, gera handoff, mata sessao, supervise reinicia FRESH. Chefe ve apenas 2 mensagens
  • Hard rotate em 220k: protecao pra sessoes abandonadas. Rotaciona silenciosamente quando idle, sem notificar o Chefe
  • Validacao pratica: Naia Hetzner caiu de 270k para 50k tokens. Naia Mac caiu de 606k (3x acima do hard!) pra 0. Custo acumulado de $381 zerado. Sistema self-healing confirmado
CAPITULO 10

OPERACAO DIARIA E EVOLUCAO

  • 12+ jobs agendados em background: consolidacao 5min, heartbeat 1min, IA News + roteiro 8h30, mapa OS Avalanche 12h, report diario 9h, sync imersao 2min, heartbeat clones
  • claude -p --bare: modo one-shot pra crons que precisam de inteligencia da Naia sem afetar a sessao interativa. Sem plugins/hooks, sem conflito com bot Telegram
  • Heartbeat horario injeta prompt no tmux pra Naia auto-revisar promessas pendentes. Cobre o caso onde subagente terminou em background e Naia esqueceu de dar reply
  • Marcos criticos: Naia nasceu em 02/2026, migrou pra Hetzner em 04/2026, bot externo em 04/2026, rotacao 180k em 05/2026. De VPS basica a servidor dedicado com 9 instancias
  • Debito tecnico pendente: backup PostgreSQL, SSH hardening, WhatsApp reconexao, arquivar JSONLs antigos (186MB), dashboard com 6 clones em vez de 5
SECAO BONUS

MANUAL DO CLONE
DENDERSON SDR

Instagram + WhatsApp | Social Selling Autonomo | 3 Capitulos

SDR CAPITULO 1

ARQUITETURA, CRIACAO E STACK

  • Clone Denderson e um agente autonomo de Social Selling que opera 24h no Direct do Instagram @denderson.ai (227k seguidores) e em 2 linhas WhatsApp Business. Processo Python independente com Claude Opus 4.7 via Agent SDK
  • 2 processos separados: Clone IG (porta 3500, DMs Instagram) e Clone WPP (porta 3501, WhatsApp Imersao). Isolamento de falhas: se um cai, o outro continua
  • No horario comercial (08:00-18:59 BRT) fala como o proprio Denderson em primeira pessoa. Fora do horario se apresenta como Clone. Regra aplicada automaticamente por is_business_hours()
  • Stack: FastAPI + Uvicorn, Claude Opus 4.7 (SDK Python), PostgreSQL (dm_conversations + dm_contact_profiles), CRM Avalanche como ponte Meta, Whisper pra audio de entrada, ElevenLabs com voz clonada do Denderson pra audio de saida
  • 5 endpoints REST: /webhook (coracao), /send (manual), /health (status), /stats (metricas), /history (drill-down por contato). CRM Avalanche envia webhooks pra https://webhook.denderson.ai
SDR CAPITULO 2

CONEXAO COM INSTAGRAM E WHATSAPP

  • Pipeline completo: Lead manda DM no Instagram, Meta entrega ao CRM Avalanche, CRM Avalanche dispara webhook pro Clone, Clone processa e responde via CRM Avalanche que entrega ao lead. Tempo total: 10-20 segundos
  • Clone NUNCA chama Meta API direto. Toda comunicacao passa pelo CRM Avalanche: POST /conversations/messages pra enviar, GET /conversations/messages pra historico, GET /calendars/free-slots pra agendamento
  • Debounce de 10 segundos: mensagens em rajada do lead sao agrupadas em uma unica string e processadas como conversa coerente. Evita respostas duplicadas e corrida de processos
  • Blocklist de familia e contatos pessoais (Jaine, Amanda Elia, Murilo, Lucas Andre, Won Academy). Protege contra DMs automatizadas em conversas pessoais do Chefe
  • Rate limit anti-spam: maximo 15 mensagens outbound por contato + cooldown de 60 minutos. Protege contra loop de hallucination e risco de ban no Instagram
SDR CAPITULO 3

INTELIGENCIA, CONVERSAO E OPERACAO

  • 4 etapas de venda automaticas baseadas em exchange_count: Rapport + qualificacao inicial, identificacao de nivel, oferta personalizada (consultoria ou Formacao Avalanche) e conversao com agendamento de reuniao
  • 3 triggers especiais hardcoded: "eu quero" (pula SPIN, envia link Hotmart direto), "claude" (tutorial + abertura de qualificacao), "bombe vivo" (tutorial Meta Ads Live + qualificacao)
  • Ademir handoff: quando lead vem de prospeccao ativa, contexto completo (bio, posts, oferta detectada, DM inicial) e injetado no prompt. Conversao maior por personalizacao cirurgica
  • Agendamento round-robin entre 4 heads (Davi Galvao, Fernando Rolim, Jonathan Pires, Rafael Ondei). Slots via calendario CRM Avalanche, nunca menos de 2h de antecedencia
  • Monitoramento: dashboard em agents.denderson.ai com metricas em tempo real, endpoint /stats com conversao agregada, logs estruturados com prefixos emoji pra cada tipo de evento