Quando três ou quatro agentes de IA trabalham ao mesmo tempo no mesmo projeto, o terminal mostra um de cada vez. Eu perdia tempo abrindo janela por janela pra descobrir quem estava parado. Então construí um painel que mostra o time inteiro como um joguinho 2D: cada agente é uma abelha numa colmeia, ou um fazendeiro numa fazenda. Roda no seu computador, só com Python 3.9 ou mais novo, sem instalar pacote e sem internet.
O código e os prompts estão abertos, com licença MIT: github.com/rogeriorrodrigues/agent-farm-monitor. Pra ver rodando agora, com agentes simulados:
git clone https://github.com/rogeriorrodrigues/agent-farm-monitor
cd agent-farm-monitor
python3 afm.py demo --open


Por que eu fiz isso?
O NursIA, o simulador clínico com IA do meu mestrado, hoje é desenvolvido por um time de agentes: um orquestrador que distribui o trabalho e vários subagentes, cada um num pedaço (ingestão, testes, deploy, documentação). Funciona. O problema era acompanhar. Com o terminal eu sabia o que um agente fazia; o que os outros faziam eu só descobria indo atrás.
O painel responde de relance quatro perguntas: quem está trabalhando agora, em quê, há quanto tempo e quem travou. A fazenda veio primeiro. A colmeia veio depois, num domingo em que eu montava quadros de cera pra uma caixa de abelha de verdade aqui no sítio, com o notebook do lado mostrando os agentes trabalhando. A analogia ficou boa demais pra não usar.
O que cada coisa significa
| No painel | Colmeia | Fazenda |
|---|---|---|
| Orquestrador | Rainha, com coroa, no topo | Fazendeiro de chapéu grande com estrela |
| Agente trabalhando | Operária girando em volta do favo | Fazendeiro no canteiro |
| Área de trabalho | Favo | Canteiro (API, Interface, Testes, Docs) |
| Entregue | Favo cheio de mel | Canteiro dourado, colhido |
| Agente ocioso | Operária na entrada, voando até as flores | Fazendeiro no descanso |
| Travado ou com erro | “!” sobre o favo | Canteiro murcho com bandeira |
Do lado, uma lista com o status de cada agente, o modelo que ele usa, há quanto tempo está na tarefa, as tarefas concluídas, os tokens gastos e um registro ao vivo (“Pintora rodando testes”, “Escritora lendo guide.md”).

Funciona com qual ferramenta?
Claude Code, Codex (CLI) e GitHub Copilot (CLI e VS Code). O painel observa: lê, só na sua máquina, a estrutura dos arquivos de sessão que as próprias ferramentas já gravam (~/.claude/projects, ~/.codex/sessions, ~/.copilot/session-state). Não muda o comportamento de nenhuma delas.
Pra ligar num projeto seu:
cp -R agent-farm-monitor MEU_PROJETO/.agent-farm
cd MEU_PROJETO
python3 .agent-farm/afm.py doctor # confere Python, porta e ferramentas
python3 .agent-farm/afm.py start --open # servidor + observadores em segundo plano
Só isso já mostra os agentes. Se quiser relatos mais precisos (o agente avisando quando começa e termina cada tarefa), o install põe um bloco de instruções e hooks só no projeto, nunca na configuração global, e guarda um .bak do que já existia. Rode antes com --dry-run pra ver o que muda:
python3 .agent-farm/afm.py install claude --dry-run
python3 .agent-farm/afm.py install claude
Na pasta prompts/ do repositório tem o prompt pronto pra cada ferramenta, em português e em inglês, pra quem prefere colar a instrução direto no agente.
O que ele lê, e o que nunca mostra
Essa parte eu fiz com cuidado, porque o painel convive com projeto de saúde.
- O painel nunca recebe conteúdo de conversa, prompt, saída de ferramenta nem argumento de comando.
- Entra só a estrutura: verbo e nome do arquivo (“editando app.py”), a categoria do comando (“rodando testes”) ou, pra comando desconhecido, só o nome do programa (“rodando: terraform”).
- Toda frase é cortada em 80 caracteres.
- O servidor só escuta em
127.0.0.1. Nada sai da máquina.
O que não é filtrado: o texto que um agente escreve de propósito como nome da tarefa. As instruções que vêm no repositório pedem pros agentes nunca porem segredo ali, mas vale conferir.
O que não funcionou (ou não testei)
- Os formatos de sessão não são interface estável. Se o Claude Code, o Codex ou o Copilot mudarem o formato, o pior caso é o agente aparecer com uma frase genérica (“usando <ferramenta>”).
- Copilot no VS Code não tem observador. Depende de hooks, que ainda são Preview.
- Codex: vi só 2 sessões reais, sem subagente. O resto veio do código aberto da ferramenta e de exemplos sintéticos.
- Claude Code sem hooks adivinha o fim de um subagente pelo silêncio. Um pedido de permissão parado parece ferramenta lenta e vira “parado” depois de 300 s.
- Sem autenticação. Qualquer processo local da máquina pode ler o painel e mandar evento pra porta dele.
- Windows foi escrito pra funcionar, mas não testei em máquina real.
Números
| Item | Valor |
|---|---|
| Dependências externas | 0 (só a biblioteca padrão do Python) |
| Python | 3.9 ou mais novo |
| Código (Python, HTML, JS) | cerca de 9 mil linhas |
| Testes automatizados | 375 (3 pulados), passando em 02/11/2026 |
| Ferramentas observadas | 3 (Claude Code, Codex, Copilot) |
| Licença | MIT |
Os testes usam sessões sintéticas e rodam offline. Não substituem uma sessão real de cada ferramenta.
Como reproduzir
git clone https://github.com/rogeriorrodrigues/agent-farm-monitor
cd agent-farm-monitor
python3 afm.py demo --open # demonstração com ~8 agentes
python3 -m unittest discover -s tests # os 375 testes
Teclas 1 e 2 trocam entre fazenda e colmeia. Repositório: github.com/rogeriorrodrigues/agent-farm-monitor.
Você roda mais de um agente ao mesmo tempo? Como descobre hoje qual deles travou?
NursIA é pesquisa do PPGINFOS/UFSC, com bolsa FAPESC.
In English
agent-farm-monitor is a local dashboard that shows AI coding agents (Claude Code, Codex, GitHub Copilot) as a 2D farm or beehive: who is working, on what, for how long, and who is stuck. Python 3.9+ standard library only, works offline, MIT licensed. It reads only the structure of each tool’s local session files and never shows conversation content, prompts or command arguments. Try it with python3 afm.py demo --open.
Publicado em 03/11/2026.
