# Plano — Clone da Mia no Hermes (cérebro OpenAI)

**Para:** Mia
**De:** Renato
**Data:** 16/09/2026
**Objetivo:** subir uma irmã gêmea da Mia rodando Hermes Agent, com orquestradora e subagentes 100% em OpenAI via assinatura (OAuth, sem API key).

> Notação de evidência usada neste documento:
> ✅ **VERIFICADO** — li o código ou a config e confirmei
> 🔸 **DOCUMENTADO, NÃO TESTADO** — a documentação afirma, ninguém rodou
> ⚪ **INFERIDO** — dedução razoável, sem prova

---

## 1. Decisões já tomadas

| Decisão | Escolha |
|---|---|
| Runtime | Hermes Agent `v2026.5.29` (Nous Research) |
| Cérebro da orquestradora | Astra (OpenAI), via `model.provider: openai-codex` |
| Cérebro dos subagentes | **um por especialista**, via skill `codex` |
| Autenticação | OAuth da assinatura ChatGPT. **Nunca API key.** |
| Onde roda | **Fase 1:** VPS atual (72.61.51.166), como usuário `hermes` sem privilégio. **Fase 2:** VPS própria, se o conceito vingar |
| Instalação | **manual, como usuário não-root** — não usar o instalador plano B |
| Memória | **compartilhada** com a Mia |
| Arquivos | workspace versionado em git, um checkout por irmã |

### Por que fase 1 na VPS atual

Três motivos:

**Custo zero para validar.** Você descobre em uma semana se a gêmea presta, antes de assumir mensalidade.

**A memória fica em `localhost`.** Na VPS separada seria preciso expor a porta 3007 com autenticação. Convivendo na mesma máquina, esse workstream inteiro desaparece — e a superfície de ataque diminui em vez de aumentar.

**Sobra CPU.** O load de 1,00 medido incluía as duas instâncias duplicadas do `farois_pipeline`. Com a correção do lock, ~19% voltam e o load fica perto de 0,65 em 2 núcleos.

### Por que a instalação NÃO pode ser pelo plano B

O instalador plano B exige root e instala em `/root/.hermes`, com o gateway subindo como serviço systemd do root.

A Mia roda como usuário `mia`, sem privilégio — decisão acertada de quem montou. Instalar o Hermes pelo caminho fácil colocaria um **segundo agente autônomo com root na máquina que atende o WhatsApp dos clientes.** Isso não é questão de performance, é o que acontece num dia ruim.

✅ **VERIFICADO no código:** o Hermes **não exige root**. Ele usa systemd de escopo de usuário (`~/.config/systemd/user/`), que funciona para qualquer conta com linger habilitado, e `HERMES_HOME` é configurável. As únicas referências a root no código tratam de unidades de escopo de sistema, que é outro caminho. **A exigência de root está no script do instalador, não no runtime.**

### Como instalar na fase 1

1. Criar o usuário: `useradd -m -s /bin/bash hermes`
2. Habilitar linger: `loginctl enable-linger hermes`
3. Instalar o Hermes sob esse usuário, com `HERMES_HOME=/home/hermes/.hermes`
4. Subir o gateway como serviço systemd **de usuário**, com teto de recursos:

```ini
[Service]
CPUQuota=60%
MemoryMax=2G
Restart=always
RestartSec=5
```

Com esses limites o Hermes não consegue sufocar a stack do WhatsApp nem no pior cenário.

### Quando migrar para VPS própria (fase 2)

Quando a gêmea deixar de ser experimento e virar operação. Aí o raio de alcance volta a pesar: não se coloca dois agentes de produção na mesma máquina que atende cliente. Nessa hora, o trabalho extra é expor a memória vetorial com autenticação — nada além disso, porque o resto já estará versionado em git.

### Por que git em vez de arquivos compartilhados

Duas IAs editando a mesma árvore sem trava é o mesmo bug do `farois_pipeline`: a segunda lê a versão antiga, grava por cima, e o trabalho da primeira some sem erro nenhum. Com git, cada irmã trabalha no seu checkout e sincroniza por commit. Ganha-se histórico e reversão de brinde.

---

## 2. O teste que vem ANTES de tudo

Toda a arquitetura de "um modelo por subagente" depende de uma coisa que **ninguém verificou ainda**: se o Codex CLI aceita seleção de modelo rodando sob OAuth de assinatura.

✅ **VERIFICADO:** a skill `codex` do Hermes diz que a autenticação pode ser `OPENAI_API_KEY` **ou** OAuth do Codex CLI em `~/.codex/auth.json`. OAuth serve.

🔸 **NÃO VERIFICADO:** a skill documenta só três flags — `exec`, `--full-auto`, `--yolo`. **Não documenta `--model`.** O Codex CLI em geral aceita seleção de modelo, mas isso não está confirmado nesta versão nem sob OAuth.

**Primeiro passo do projeto, antes de qualquer migração:**

```bash
npm install -g @openai/codex
codex login                      # OAuth da assinatura
cd $(mktemp -d) && git init      # Codex exige estar dentro de um repo git
codex exec --model MODELO 'responda apenas: ok'
```

Se funcionar, o plano inteiro segue. Se não funcionar, a alternativa é `delegation.model` global — **um único modelo para todos os subagentes** — e aí o desenho abaixo precisa ser refeito.

### Restrição operacional descoberta

✅ **VERIFICADO:** a skill afirma que o Codex se recusa a rodar fora de um repositório git. Todo especialista que rodar pela skill `codex` precisa de um diretório git como `workdir`. Isso reforça a decisão de versionar o workspace: deixa de ser boa prática e vira requisito técnico.

---

## 3. O time

### Uso real (do histórico da Mia, não de palpite)

| Agente | Vezes acionado | Linhas | Ferramentas |
|---|---|---|---|
| `paulo-dev` | **54** | 6 | **todas** (campo `tools:` ausente) |
| `bruno-trafego` | 52 | 73 | 4 |
| `jonathan-copy` | 50 | 49 | 3 |
| `juliana-ops` | 43 | 103 | 3 |
| `leo-web` | 42 | 146 | 9 |
| `amanda-crm` | 32 | 99 | 6 |
| `max-video` | 11 | 119 | 7 |
| `rafael-projetos` | 1 | 5 | — |
| `davi-sdr` | 1 | 5 | — |

**A lição do Paulo:** ele é o mais acionado do time com a menor definição. O motivo é o campo `tools:` ausente — no Claude Code isso significa herdar TODAS as ferramentas. Ele é modelo forte + acesso irrestrito + uma frase de persona. Onde os outros foram limitados a 3 ou 4 ferramentas, ele não foi.

⚪ **Hipótese a testar:** restringir ferramentas pode estar atrapalhando os outros mais do que ajudando. Se um especialista travar no Hermes, soltar as ferramentas vem antes de trocar o modelo.

### Desenho por agente

| Agente | Trilha | Cérebro | Observação |
|---|---|---|---|
| **Mia-Hermes** | nativa | **Astra** | orquestradora; só conversa e delega |
| **paulo-dev** | skill `codex` | modelo forte de código | migrar PRIMEIRO: mais usado e mais simples |
| **bruno-trafego** | skill `codex` | modelo de raciocínio | decisões que gastam verba de cliente |
| **jonathan-copy** | skill `codex` | modelo de escrita | copy é o produto dele |
| **leo-web** | skill `codex` | modelo forte de código | o mais complexo; 9 ferramentas, faz deploy |
| **juliana-ops** | skill `codex` ou nativa | a definir | se for só brief e SOP, nativa resolve |
| **amanda-crm** | **nativa** | herda o Astra | chamadas de API; não precisa cérebro caro |
| **max-video** | **nativa + HyperFrames** | herda o Astra | gargalo é ferramenta, não modelo |
| `davi-sdr` | — | — | **aposentar** — 1 uso no histórico inteiro |
| `rafael-projetos` | — | — | **aposentar** — 1 uso no histórico inteiro |

### Sobre os modelos disponíveis

✅ **VERIFICADO:** a lista embutida no Hermes `v2026.5.29` traz `gpt-5.5`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.3-codex` e `gpt-5.3-codex-spark`. **Astra não está nessa lista**, mas o código busca os modelos ao vivo em `chatgpt.com/backend-api/codex/models` e absorve novidades automaticamente.

**Rodar `/model` no Hermes depois de autenticar** para ver o que a conta realmente oferece, e escolher os cérebros de cada especialista a partir dali.

Os modelos configurados hoje na Mia (`claude-opus-4-8`, `claude-sonnet-4-6`) são de geração anterior. A migração é a hora de atualizar.

---

## 4. O que transplantar

| Camada | Origem | Destino | Esforço |
|---|---|---|---|
| Conhecimento curado | `/opt/mia/knowledge/` (17 arquivos, 136 KB) | igual | **copia direto** |
| Identidade | `/opt/mia/CLAUDE.md` (224 linhas) | `SOUL.md` + `AGENTS.md` | **reescrever parte** |
| Skills próprias | 4 skills | formato Hermes | ajuste de frontmatter |
| Personas | 7 agentes que sobrevivem | skills + briefing | adaptar |
| Contexto de clientes | os `.md` dentro de `clientes/` | igual | copia direto |

### O que NÃO copiar

**`/opt/mia/config/`** — 184 KB de segredos (`asaas.env`, `drive_tokens.json`, `evolution_api.env`, `google-service-account.json`, `farois_px3.env`). O clone precisa das próprias credenciais. Duplicar token é dobrar a superfície de vazamento.

**Vídeos, imagens, `node_modules`, `venvs`** — são artefatos, não inteligência.

**As ~29 skills de terceiros** (`hyperframes-*`, `motion`, `react-best-practices`) — reinstalar da fonte. O Hermes já traz HyperFrames em `optional-skills/creative/hyperframes`.

### A descoberta que simplifica tudo

O workspace tem 22 GB, mas os 2.190 arquivos `.md` somam **15,9 MB**. O resto é vídeo, imagem e `node_modules`. **A inteligência da Mia cabe num e-mail.**

---

## 5. O que muda no CLAUDE.md ao virar SOUL.md

✅ **VERIFICADO** no código do Hermes:

| Trecho atual | O que fazer |
|---|---|
| "lance o subagente com `run_in_background: true`" | reescrever para `delegate_task` / skill `codex` |
| "use `/agent NOME` ou `Task` para delegar" | idem |
| "PARE se você se pegar abrindo Edit/Write/Bash" | trocar pelos nomes de toolset do Hermes |
| Seção de Telegram via `/opt/mia-bot/outbox/*.json` (linhas 70-110) | **apagar** — o Hermes tem canal nativo com `send_photo`, `send_video`, `send_document` e roteamento por extensão |

Personalidade, tom, anti-bajulação, Contrato de Verificação e as 3 fases passam **sem alteração** — são regras de comportamento, não de runtime.

✅ **VERIFICADO:** `SOUL.md` ocupa o slot #1 do system prompt e substitui a identidade padrão. Fica em `HERMES_HOME` (`/root/.hermes/SOUL.md`), nunca no diretório de trabalho. Limite de 20.000 caracteres.

⚪ **ATENÇÃO:** na delegação, `skip_context_files` é acionado e o `SOUL.md` **não** é carregado no filho — ele nasce com a identidade padrão do Hermes. É exatamente onde a persona do especialista precisa ser injetada.

---

## 6. Memória compartilhada

✅ **VERIFICADO:** a memória nativa do Hermes é uma memória curada e limitada, injetada no system prompt, com teto de **2.200 caracteres**. Isso não comporta a base da Mia. Os provedores externos suportados são `openviking`, `mem0`, `hindsight`, `holographic`, `retaindb`, `byterover` e `honcho` — **pgvector não está na lista.**

**Recomendação: expor a busca vetorial como FERRAMENTA, não como "memória".**

O serviço da Mia na porta 3007 já funciona por recuperação. Como ferramenta, o clone consulta quando precisa, a memória fica genuinamente compartilhada, e ninguém reescreve o mecanismo de ninguém. Como "memória" do Hermes, esbarraria nos 2.200 caracteres de qualquer jeito.

**Na fase 1 não há pendência nenhuma.** A porta 3007 escuta em `127.0.0.1` e as duas irmãs moram na mesma máquina — a memória já é compartilhada por construção, sem expor nada.

**Na fase 2**, com o clone em VPS própria, a porta 3007 precisa de exposição autenticada. Nunca aberta. Esse é o único trabalho de infraestrutura que a fase 2 acrescenta.

---

## 7. Ordem de execução

### Fase 0 — antes de tocar em qualquer coisa

1. **Consertar a Amanda** — ver anexo. Bug em produção, independe do clone.
2. **Testar `codex exec --model`** sob OAuth. Roda no PC do Renato, não precisa de VPS. Sem isso, nada do resto se sustenta.
3. **Varrer segredos em texto puro** nos scripts (ver anexo) — obrigatório antes do passo 5.

### Fase 1 — gêmea na VPS atual, sem privilégio

4. **Criar o usuário `hermes`** com linger habilitado.
5. **Versionar `/opt/mia/workspace` em git**, com `.gitignore` excluindo vídeo, imagem, `node_modules` e `venvs`. Sem isso o repositório vira 22 GB e fica inutilizável — e mídia que entra em git não sai mais do histórico.
6. **Instalar o Hermes** (`v2026.5.29`) sob o usuário `hermes`, manualmente, com `HERMES_HOME=/home/hermes/.hermes` e o serviço systemd de usuário com `CPUQuota=60%` e `MemoryMax=2G`.
7. **Transplantar** conhecimento + `SOUL.md` + `AGENTS.md` + as 4 skills próprias.
8. **Ligar a memória** — a busca vetorial como ferramenta, apontando para `127.0.0.1:3007`.
9. **Migrar `paulo-dev`** — o mais usado e o mais simples. Valida a trilha `codex`.
10. **Migrar `bruno-trafego`** e **`jonathan-copy`**.
11. **Migrar `juliana-ops`** e **`leo-web`**.
12. **Migrar `amanda-crm`** (depois da base consertada).
13. **`max-video` por último** — validar antes se o HyperFrames do Hermes cobre as 7 skills `hyperframes-*` que a Mia usa hoje.
14. **Aposentar** `davi-sdr` e `rafael-projetos`.

### Fase 2 — só se a gêmea vingar

15. **Contratar VPS própria** (2 vCPU, 8 GB, Ubuntu 22+), com chave SSH cadastrada no provisionamento — senha de root nunca passa por conversa.
16. **Clonar o repositório** do workspace na máquina nova.
17. **Expor a memória vetorial** com autenticação.
18. **Desligar a instância da fase 1.**

### Regra inegociável

**Os 13 cron jobs continuam com dona única: a Mia.** Se o clone herdar o crontab, dobram as chamadas de API que acabamos de trabalhar para reduzir.

---

## 8. Riscos conhecidos

| Risco | Estado |
|---|---|
| `codex exec --model` pode não existir sob OAuth | **bloqueante** — testar primeiro |
| Astra pode não aparecer na conta | verificar com `/model` após autenticar |
| Codex exige repositório git como `workdir` | resolvido pela decisão de versionar |
| Dois agentes na mesma máquina de produção (fase 1) | mitigado: usuário sem privilégio + `CPUQuota=60%` + `MemoryMax=2G` |
| Instalação manual foge do caminho testado do plano B | aceito conscientemente — o plano B exige root, e root nessa máquina é o risco maior |
| Repositório git engolir os 11,8 GB de mídia | `.gitignore` **antes** do primeiro commit; depois não tem volta |
| Especialistas viram processos externos, não subagentes nativos | aceito; não herdam toolsets nem memória automaticamente |
| Codex pode não respeitar o Contrato de Verificação como o Claude respeita | ⚪ só se descobre rodando; testar cedo |
| HyperFrames do Hermes pode não cobrir as 7 skills da Mia | validar antes do `max-video` |

---

## ANEXO — Correção pendente na Mia

### Amanda operando cega

O `amanda-crm.md` manda ler, como base de conhecimento:

```
/opt/naia-agent/knowledge/ghl/GHL-API-CAPABILITIES.md
```

✅ **VERIFICADO:** esse caminho não existe. O arquivo não está em lugar nenhum do `/opt` — procurei pelo nome em toda a árvore. É resquício de quando a agente se chamava `naia-agent`, antes de virar `mia`.

A especialista do CRM opera sem base de conhecimento desde a renomeação.

**Corrigir antes de clonar** — não adianta transplantar uma agente cega. Se o arquivo se perdeu, ele precisa ser reescrito; se foi renomeado, o caminho no `amanda-crm.md` precisa ser atualizado.

### Verificação de higiene sugerida

O `farois_pipeline.py` tinha o token do GoHighLevel em texto puro na linha 13, o que contraria a regra 1 do documento de segurança ("segredos nunca aparecem"). Vale varrer os outros scripts em `/opt/mia/scripts/` e `/opt/mia/workspace/clientes/` pelo mesmo padrão antes de versionar o workspace em git — **segredo que entra em repositório não sai mais do histórico.**
