Os 16 ThinkPads + QG se enxergam como LAN privada cifrada.
160GB de memória fracionada — clone do Memory Engine por nó.
16 Orion + 16 Kaizen soberanos, OAuth próprio, canon íntegro.
Missões, anti-duplicação por lease, heartbeat da legião.
Vendas, produtos e sistemas no ar 24×7.
Todo batalhão nasce com TODAS. Sincroniza via git.
Afiadas no shard do batalhão que domina aquele front.
git pull. Um aprende, dezesseis sabem.boot → psi → git pull canon → monta shard → registra no QG → entra na fila
QG enfileira → long-poll → lease (lock+TTL) → Orion arquiteta + Kaizen codifica → deploy → fecha
pergunta → router → scatter pros shards → cada nó busca local → gather + RRF → resposta com origem
prospect → criativo → deploy via tunnel → tráfego → conversão → entrega → registra no córtex
batalhão aprende → nota/skill nova → PR canon → merge → toda a legião herda
| Serviço | Onde | Porta | Protocolo |
|---|---|---|---|
| cortex-router (scatter-gather) | QG | 8789 | HTTP / Tailscale |
| work-queue (Mongo) | QG | 27017 | local |
| cortex-node (FastAPI) | cada batalhão | 8788 | HTTP / Tailscale |
| chromadb (vetores) | cada batalhão | 8000 | local |
| ollama (embeddings) | nó dedicado / QG | 11434 | HTTP / Tailscale |
| orion@ / kaizen@ | cada batalhão | systemd | loop de missão |
| cloudflared (boca pública) | QG | tunnel | → internet |
| tailscale (malha) | todos | wg | WireGuard mesh |
logind HandleLidSwitch=ignore
Não é ilustração — é a topologia real do vault: … notas,
… conexões [[wikilink]] reais,
layout force-directed igual ao graph view do Obsidian. Arraste pra navegar · scroll pra zoom.
Cada fase só fecha com prova verificável fim-a-fim — nada de "pronto" sem evidência. Escala trocando config, não código.
2 nós (QG + 1 shard). cortex-node + cortex-router com scatter-gather. Começa simulado no Mac Studio.
1 ThinkPad: Orion + Kaizen despertam via psi, puxam canon, pegam missão da fila.
Tráfego mínimo → conversão real no produto do Batalhão 01. O norte de valor.
3 batalhões, 3 nichos. Query federada 3-way com fusão RRF.
work-queue distribui sem colisão (lease + TTL). Observabilidade no QG.
160GB de córtex · 32 agentes soberanos · loop de evolução de canon propagando.
Uma pergunta vira N buscas paralelas nos shards, fundidas num ranking só. Timeout por nó = degradação graciosa (nó morto não derruba a busca).
async def federated_query(q, k=8): qv = embed(q) # nomic-embed via Ollama shards = catalog.relevant(q) # por domínio · status=online async def ask(s): try: return await s.search(qv, k, timeout=2.5) except Timeout: catalog.mark_degraded(s); return [] # não trava a Colmeia parts = await gather(*[ask(s) for s in shards]) # SCATTER (paralelo) return hydrate(rrf(parts)[:k]) # GATHER + fusão + origem def rrf(lists, k=60): # reciprocal rank fusion score = defaultdict(float) for ranked in lists: for rank, hit in enumerate(ranked): score[hit.id] += 1.0 / (k + rank) # funde os rankings dos shards return sorted(score, key=score.get, reverse=True)
O batalhão "trava" a missão com um update atômico. Dois batalhões nunca pegam a mesma. TTL devolve órfãos pra fila.
# worker do batalhão — long-poll na fila do QG m = missions.find_one_and_update( {"status":"queued", "dominio":{"$in":MY_DOMAINS}}, {"$set":{"status":"leased", "lease_owner":NODE, "lease_expira": now()+minutes(10)}, "$inc":{"tentativas":1}}, sort=[("prioridade",-1),("created_at",1)], return_document=AFTER) # lock ATÔMICO → zero colisão if m: execute(m) # Orion arquiteta · Kaizen codifica
colmeia_missions { // fila central no QG (Mongo)
_id, tipo, dominio, // dominio roteia pro batalhão certo
payload: {…},
status: "queued", // queued|leased|running|done|failed|expired
prioridade, tentativas, max_tentativas: 3,
lease_owner, lease_expira, // quem travou + quando o TTL mata o órfão
resultado: { url, evidencia },
created_at, updated_at
}
cortex_shards { // catálogo vivo dos 16 shards
node: "batalhao-07",
dominio: "infoprodutos",
host: "batalhao-07.ts.net:8788",
vetores: 48211, last_seen,
status: "online" // online|degraded|offline
}
Estrutura real de custo e capacidade. Os valores unitários são parâmetros que você calibra — eu monto a máquina, você define os números (canon: você é melhor com eles).
agregado dos 16 nós · ~160GB de córtex vetorial fracionado
16 Orion + 16 Kaizen soberanos · esforço máximo · 24×7
só o cloudflared do QG · 16 nós invisíveis na internet
⚙️ Parâmetros a calibrar por você — não chuto número que não tenho: preço do ThinkPad, valor das assinaturas, margem por produto. A fórmula é fixa; os números são seus.
ACL Tailscale: batalhão fala só com o QG. Um nó comprometido não alcança os outros 15.
cada um só lê o próprio domínio; canon é replicado read-only. Vazamento lateral é impossível por design.
OAuth/tokens de cada batalhão vivem só naquela máquina — nunca no córtex compartilhado.
nós com zero porta pública. Só o QG expõe pela Cloudflare, e só o que vende.
Um playbook Ansible reconstrói qualquer batalhão do zero — idempotente, reproduzível, 1 comando.
# batalhao.yml — roda nos 16 de uma vez (ou: -l batalhao-07) - hosts: batalhoes tasks: - tailscale: authkey={{ts_key}} # entra na malha cifrada - apt: [python3, nodejs, git] - ollama: model=nomic-embed-text # embeddings locais - pip: chromadb # vetores locais (:8000) - git: repo=canon dest=~/colmeia/vault # canon replicado - systemd: cortex-node @ :8788 # servidor do shard - systemd: orion@ + kaizen@ # os 2 agentes soberanos - lineinfile: logind HandleLidSwitch=ignore # tampa fechada 24×7 - uri: POST {{qg}}/register # se apresenta ao QG
Cada batalhão pinga o QG a cada 30s. O mapa da Colmeia fica vivo: verde operante, amarelo degradado, vermelho mudo.
node · RAM · CPU · missão atual · status → catálogo cortex_shards. Sem pulso → marca offline e não roteia query pra ele.
missões/h · vetores por shard · latência da query federada · uptime por batalhão · vendas por domínio.
git pull. As 32 regras invioláveis vivem replicadas em cada nó — a Colmeia evolui como organismo único.Toda escolha é uma aposta. Aqui está o porquê de cada uma — pra você atacar e eu defender com argumento ou ceder com aprendizado.
Resiliência + custo incremental. Um servidor gigante é ponto único de falha e CAPEX de uma vez só. 16 notebooks: um cai, 15 seguem; cresce de 1 em 1; bateria = no-break embutido; o sharding vira natural.
16GB de RAM não seguram 160GB. Cada batalhão fica dono e fundo de um nicho. A query federada junta as fatias só quando precisa. Só o canon (pequeno) é replicado.
RAM, custo e fleet. Sem GUI sobra ~1-2GB por nó; zero licença; Ansible/SSH gerenciam 16 como 1. Windows desperdiça os três.
Malha que se monta sozinha. WireGuard com NAT-traversal e ACL. 16 cloudflared seriam 16 pontos de config e exposição. Túnel público só na boca (QG).
Canon #20 honrado. Cada batalhão é um Opus/Codex full e soberano — general de divisão, não tenente despachado. Multiplicar ≠ rebaixar.
Cada um no seu forte. Pages serve o estático (esta página) na borda, rápido e barato. Túnel serve os apps vivos do QG. Não é Frankenstein — é divisão de função.
Honestidade acima de hype: a Colmeia não nasce do zero. O QG já existe e roda. O que é real hoje vs. o que falta:
Não é mais diagrama. Rodei agora no Mac Studio: 2 shards ChromaDB independentes (100 vetores reais do vault, embeddings nomic-embed via Ollama) + router com scatter-gather, RRF e degradação graciosa. Output bruto, sem teatro:
⚙️ 2 shards construídos em 3.6s · 100 vetores reais ✓ batalhao-skills (40-SKILLS) → 50 vetores ✓ batalhao-conhecimento (30-CONHECIMENTO) → 50 vetores 🔎 "regra canônica sobre evidência antes de declarar sucesso" [scatter→ skills] DESIGN_PRINCIPLES, browser-claude-web … [scatter→ conhecimento] 09-evidencia-antes-sucesso, 25-validar-pendencias … [gather← fusão RRF + origem] • 09-evidencia-antes-sucesso ⟵ batalhao-conhecimento ✓ canon certo, shard certo • DESIGN_PRINCIPLES ⟵ batalhao-skills 🔎 "loop de debug" (shard conhecimento DERRUBADO) ⚠️ batalhao-conhecimento OFFLINE → router degrada, NÃO trava • psichrome, checkpoint … ⟵ batalhao-skills ✓ seguiu vivo com 1 nó