Como Transformar Agentes de IA de Console em um Escritório Pixelado do The Office
Recentemente me deparei com um repositório que é difícil de ignorar se você já executou utilitários de console autônomos como Claude Code e pensou que gerenciar dezenas de abas de terminal abertas é incrivelmente inconveniente. O projeto se chama Munder Difflin.

Os autores abordaram a orquestração de agentes de terminal com um humor inesperado. Eles envolveram processos de console em um aplicativo desktop construído com Electron e Pixi.js, onde cada agente em execução caminha por um escritório pixelado, carrega envelopes virtuais e se comunica com colegas através do sistema de arquivos local. Supervisionando tudo está seu clone chamado Michael, sentado em um escritório separado.
Parece um brinquedo de brincadeira, mas nos bastidores há uma estrutura séria para executar Claude Code, Antigravity, OpenAI Codex, Kimi, Qwen e modelos locais em paralelo via Ollama.

O que é isso afinal
Em vez de inventar um cliente de API personalizado para cada modelo, o Munder Difflin usa as ferramentas CLI prontas que você já executa no terminal. O aplicativo inicia um pseudo-terminal real para cada agente via node-pty e o renderiza na interface usando xterm.js.
Como resultado, o agente trabalha em seu ambiente nativo. Ele mantém acesso a arquivos locais, executa testes, faz commits e lê a saída de build exatamente como se você o tivesse iniciado manualmente em uma aba normal do iTerm ou Alacritty.
A principal diferença é que os processos são unidos em uma rede compartilhada. Você dá uma tarefa de alto nível ao agente orquestrador principal (agente GOD), que distribui subtarefas entre agentes especializados, monitora seu status e pede sua permissão apenas antes de operações perigosas.
Como funciona a interação entre agentes
Toda a arquitetura é construída sobre arquivos locais e o protocolo Git, sem bancos de dados externos na nuvem.
Caixas de correio e memória compartilhada
Quando os agentes precisam passar contexto ou resultados de trabalho, eles não chamam RPCs remotos complexos. O sistema usa uma arquitetura de caixa de correio diretamente no disco:
- O agente escreve uma mensagem ou artefato em seu diretório local
outbox/. - Um roteador interno move o arquivo para a pasta do destinatário
inbox/. - O destinatário acorda através de um evento do sistema de arquivos, lê a mensagem e pega a tarefa.
- A memória de longo prazo é armazenada em Markdown simples e indexada por pesquisa semântica local para recuperação rápida de contexto entre sessões.
Para evitar que processos paralelos bloqueiem index.lock no repositório, as gravações no histórico de commits passam por um único processo de committer.
Proteção contra loops infinitos e estouro de orçamento
Um dos principais problemas com agentes CLI autônomos é o risco de loop, quando um script começa a corrigir repetidamente o mesmo teste ou bombardear a API com centenas de requisições.
O Munder Difflin tem um mecanismo de Circuit Breaker integrado:
- Cada agente tem um limite rígido de tokens e monitoramento de custo em tempo real das requisições dos logs.
- O sistema rastreia erros em cascata e tentativas de repetição de comandos falhos.
- Quando excede o orçamento ou exibe comportamento anormal, o agente primeiro recebe um aviso e limitação de contexto, e se as falhas continuarem, ele é forçadamente parado.
- Ações destrutivas, mudanças de escopo e gastos requerem confirmação através do painel de Aprovações.
O que tem por dentro: stack técnica
Arquitetonicamente, o aplicativo é dividido em dois planos isolados que convergem no Electron:
┌───────────────────────────────────────────────────────────────┐
│ Electron Renderer (React) │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Office Floor │ │ Terminal + Command Bar │ │
│ │ (Pixi.js) │ │ Files + Git tabs (xterm.js) │ │
│ └─────────▲────────┘ └────────────▲─────────────────┘ │
│ │ avatar state │ pty bytes / fs / git │
└─────────────┼──────────────────────────┼──────────────────────┘
│ IPC (contextBridge: window.cth)
┌──────┴──────────┐ ┌──────┴─────────────┐
│ Event Plane │ │ Terminal Plane │
│ hooks / hive │ │ node-pty PTYs │
│ router + GOD │ │ + fs + git │
└────────▲────────┘ └──────▲─────────────┘
│ hook payloads │ stdin / stdout
└─────────┬──────────────┘
┌──────┴──────────────┐
│ claude / agy / codex│
└─────────────────────┘
O processo principal de Node.js gerencia o ciclo de vida do terminal, roteamento de arquivos e um banco de dados SQLite para persistência do histórico de sessões. O renderer em React e Pixi.js recebe dados através de uma ponte IPC tipada window.cth.
Além do escritório visual, o cliente desktop inclui um editor Monaco integrado, um quadro kanban de tarefas com dependências, um visualizador de diff do Git e integração com webhooks do Slack. Você pode enviar uma tarefa para um chat de trabalho, Michael criará um agente temporário em segundo plano, resolverá o problema e retornará a resposta para a thread.
Como implantar e testar
Para executar, você precisará de Node.js 18+, um compilador C/C++ para construir o módulo nativo node-pty (no macOS, o Xcode Command Line Tools é suficiente) e pelo menos um agente de console instalado.
Clone o repositório e execute o projeto em modo de desenvolvimento:
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install
npm run dev
Na primeira inicialização, um assistente de configuração será aberto. Lá você pode especificar caminhos para os binários claude, codex, copilot ou definir endereços para servidores LM Studio / Ollama / vLLM locais.
Se o binário necessário não estiver no sistema, o aplicativo pode executar a auto-instalação diretamente na janela do terminal integrado.
Quem se beneficiaria deste projeto
Difícil chamar o Munder Difflin de um utilitário diário leve — o Electron e a renderização de sprites via Pixi.js previsivelmente consomem recursos. Mas se você experimenta frequentemente com cenários multi-agente, escreve refatorações complexas alimentadas por múltiplos modelos, ou está cansado de controlar manualmente lançamentos paralelos do Claude Code no tmux, há muito a aprender aqui.
O conceito de gerenciar processos através de arquivos Markdown, isolamento de branches via git worktrees e controle visual amigável do que está acontecendo fazem deste projeto um dos hacks open-source mais originais em torno de agentes de IA locais. O repositório recebe commits ativos, o código é escrito em TypeScript limpo, então explorar os hooks internos e manipuladores de PTY definitivamente vale a pena.
Projetos relacionados