Uma pasta runtime/ que ensina o Claude Code e o Codex a descobrir, conectar e usar seus sistemas, com regras claras do que podem fazer sozinhos. Sem servidor, sem API paga.

Quatro arquivos de regras, scripts de diagnóstico e verificação, pontes, uma guarda e 7 receitas testadas. Você copia para o seu projeto e os agentes passam a seguir as mesmas regras.
Antes de dizer "impossível", o agente sobe a escada API → MCP → CLI → SDK → uso do computador → ponte local e usa a via mais estável que existir.
Ler é livre; alterar arquivo, ele faz e avisa; enviar pede antes; gastar dinheiro ou apagar dados, ele só prepara. O .claude/settings.json já bloqueia rm -rf.
Usa o Claude Code e o Codex CLI que você já tem logados. Nenhuma API paga é pré-requisito. Modelos locais do Ollama são opcionais.
Cada etapa tem um arquivo. Toda ação passa pela POLITICA.md.
Mapa das ferramentas: uma linha por sistema, com a via, o nível e a data do teste. Sistema sem linha não é usado.
Níveis de autonomia N0 a N4 e o teto de cada tipo de ação. "Sempre permitir" nunca passa do teto.
Qual modelo para qual tarefa (super, topo, executor, menor). Comece no menor que resolve.
O ciclo, a ordem para começar e a escada das vias com exemplos.
| Nível | Via | Exemplo | Estabilidade |
|---|---|---|---|
| 1 | API oficial | API do ERP | alta |
| 2 | MCP | claude mcp list | alta |
| 3 | CLI | codex exec, gh, git | alta |
| 4 | SDK / biblioteca | pacote npm/pip | média |
| 5 | Uso do computador | navegador automatizado, cliques na tela | baixa |
| 6 | Ponte local | exportação CSV, pasta, banco SQLite, porta local | média |
| 7 | Engenharia reversa | observar o app rodando para achar a via | só laboratório: quebra na próxima atualização |
| Ação | Teto | No Claude Code | No Codex |
|---|---|---|---|
| Ler arquivo, página, planilha | N4 | permitido | -s read-only |
| Criar/alterar arquivo do projeto | N3 | acceptEdits | -s workspace-write |
| Comando que altera o sistema | N2 | pede confirmação | sem auto-aprovação |
| Enviar (e-mail, mensagem, post, push) | N2 | pede confirmação | sem auto-aprovação |
| Gastar dinheiro ou crédito | N1 | bloqueado | não executar |
| Apagar dados / produção | N1 + backup | bloqueado (rm -rf) | não executar |
N0 só conversa · N1 prepara e o humano executa · N2 executa depois de pedir · N3 executa e avisa · N4 executa sem aviso. O agente não muda as próprias regras: ele propõe uma linha na tabela "Aprendizado" da POLITICA.md e você aprova.
Linux ou Mac. No Windows, use WSL. O diagnóstico só lê versões e status locais: não chama modelo nem API.
Roda o diagnóstico, a ponte MCP e os scripts de observar e verificar.
node --versionPelo menos um dos dois, logado pela assinatura.
npm i -g @anthropic-ai/claude-code npm i -g @openai/codex codex login
Modelos locais grátis para tarefas leves. O diagnóstico mostra se está presente.
ollama --versionCada receita termina com uma prova: um comando e a saída que tem de aparecer. Se a prova não bate, o passo não está pronto.
Mostra o que está instalado e logado: Node, Claude Code, Codex e Ollama.
git clone https://github.com/inematds/inema-agent-runtime meu-projeto cd meu-projeto node runtime/scripts/doctor.mjs # prova: PRONTO no fim
Abra claude (ou codex) na pasta e peça para subir a escada nível por nível. Só entra linha com teste feito.
# dentro do claude ou do codex: Leia runtime/LEIA-ME.md e me ajude a preencher o CAPACIDADES.md para o meu trabalho.
Ponte por CLI (nível 3). Por padrão o Codex só lê; alterar arquivos (N3) só se você passar workspace-write.
chmod +x runtime/pontes/codex-exec.sh runtime/pontes/codex-exec.sh "Responda apenas PONG" # prova: PONG runtime/pontes/codex-exec.sh "Crie notas.txt com a palavra OK" "$PWD" workspace-write
Planejador (opus), executor (sonnet) e revisor (haiku), definidos em .claude/agents/. Cada um usa o modelo que precisa e a cota rende mais.
claude -p "Use o time (planejador, executor, revisor). Tarefa: crie saudacao.txt com a frase 'Olá, comunidade INEMA'. Termine com a resposta do revisor." # prova: saudacao.txt tem a frase e a resposta termina com APROVADO
O ERP ou a agenda exportam arquivo; a ponte lê esse arquivo e entrega ao agente como ferramenta só de leitura. Servidor MCP sem dependências, já registrado no .mcp.json.
node runtime/pontes/mcp-modelo/server.mjs --selftest # prova: tools: 2 e TOTAL: R$ 856.00 claude mcp list # ponte-modelo … Connected codex mcp add ponte-modelo -- node "$PWD/runtime/pontes/mcp-modelo/server.mjs"
Várias sessões do Claude ao mesmo tempo, cada uma com nome, papel e modelo. Marque a pasta como confiável uma vez. Cada sessão consome a cota.
claude --bg --permission-mode plan --name revisor "Leia runtime/POLITICA.md e responda em uma linha qual é o teto de 'Enviar'." claude --bg --model sonnet --name executor "Crie resumo.md com 3 linhas sobre o que é este kit." node runtime/scripts/observar.mjs # tabela com id, tipo, nome e estado
Para sistemas que só existem como site. Ler página é N4; preencher ou enviar pede antes; pagar, nunca.
npm i -g agent-browser agent-browser install agent-browser open https://example.com agent-browser get title # prova: Example Domain agent-browser close
O agente só termina quando os critérios comando → saída esperada do goal passam, e não quando ele acha que terminou.
node runtime/scripts/verificar.mjs runtime/exemplos/goal-exemplo.md # prova: 4/4 critérios OK e saída 0; quebre um critério e a linha vira FALHA
Com vários agentes ao mesmo tempo, a guarda pega dois riscos antes de acontecer, e nunca decide sozinha: ela pergunta (N2). Colisão: antes de editar um arquivo que outra sessão editou, ou que mudou por fora (Codex, editor, outra pessoa) nos últimos 30 min. Raio: antes de rm ou git clean, mostra quantos arquivos seriam apagados, o tamanho e os primeiros caminhos. Neste kit ela já vem ligada pelo .claude/settings.json; para levar a outro projeto, use um dos jeitos: o comando abaixo ou copiar o bloco hooks do .claude/settings.json trocando o caminho.
# guarda em outro projeto (só nesta sessão) claude --plugin-dir /caminho/do/kit/runtime/mods/runtime-guarda # painel opcional: na sessão, digite /painel claude --plugin-dir runtime/mods/runtime-painel claude plugin test runtime/mods/runtime-painel # prova: 1 pass
O painel lista as sessões do claude --bg (nome, estado, minutos), com Atualizar e Parar: só o seu clique para uma sessão. INEMA_COLISAO_MIN=60 muda a janela da colisão. O Codex ainda não tem um gancho "antes de editar" equivalente: a colisão protege as sessões do Claude e detecta edições feitas pelo Codex pela data do arquivo.
Os arquivos de exemplo em runtime/exemplos/ simulam os dois casos mais comuns da comunidade: sistema sem API que exporta planilha.
O ERP exporta um CSV de vendas. A ponte expõe a ferramenta resumo_vendas; o time da R2 monta o resumo e o revisor confere os totais.
# runtime/exemplos/erp-vendas.csv data,cliente,produto,quantidade,valor_unitario 2026-10-01,Mercado Sol,Café 500g,10,18.50 # selftest da ponte → TOTAL: R$ 856.00
A agenda vive numa planilha. A ferramenta listar_horarios_livres devolve só as linhas livre, filtrando por data e profissional.
claude -p "Use a tool listar_horarios_livres da ponte-modelo e diga os horários livres de 2026-10-07." # prova: 08:00 (Dra. Ana) e 16:00 (Dr. Bruno)
Para usar com o seu sistema: aponte PONTE_DADOS=/caminho/da/exportacao no campo env do .mcp.json, troque as colunas usadas em run(), mantenha as ferramentas só de leitura e anote a ponte no CAPACIDADES.md com a data do teste.
Cada fase só fecha quando as provas rodam. As provas rodadas de cada versão estão no CHANGELOG.md.
codex-exec.sh, receitas R1 e R2 e bloqueios no .claude/settings.json. Provas rodadas em Linux pela assinatura.observar.mjs, verificar.mjs e receitas R3 a R6.runtime-guarda (colisão e raio, já ligado no kit), mod opcional runtime-painel com /painel e receita R7.