Orch: agentes de código em paralelo sem estourar a cota

Por que fiz o Orch: rodar vários agentes de IA ao mesmo tempo sem esgotar a cota do provedor, e o cliente ver o progresso sem perguntar.

5 min de leitura

Compartilhar WhatsAppLinkedInX
Ilustração isométrica de um grafo de tarefas que distribui trabalho para vários terminais, com um medidor de consumo e um painel de progresso

Um agente de código já ajuda bastante trabalhando sozinho. O problema é que, quando o projeto tem muitas tarefas que não dependem umas das outras, esperar uma terminar para lançar a próxima é perder tempo. O que a gente faz então é abrir vários terminais e colocar um agente em cada um, e aí começam os problemas.

A cota acaba no meio do trabalho

Anthropic, OpenAI e Google limitam quanto você pode usar numa janela de tempo. Com um agente, quase nunca você chega no limite; com quatro rodando contra o mesmo provedor, chega rápido. Quando acontece, o provedor bloqueia, os agentes param no meio e o seu próprio terminal fica sem serviço até a janela renovar.

Quem não programa quer saber como está indo

Quase todo projeto tem stakeholders que não programam e precisam ver que ele está andando: o cliente, um sócio, o gestor que paga. Se você não tem um jeito de mostrar isso, acaba escrevendo mensagens de status em vez de trabalhar, ou eles ficam na dúvida. Por isso desenhei o Orch pensando nessas pessoas tanto quanto em quem escreve o código.

O que o Orch faz

O Orch é uma ferramenta de linha de comando para esses dois problemas. Você escreve o trabalho como um documento com fases e tarefas, e o Orch transforma isso numa lista onde cada tarefa sabe de quais depende. Depois roda em paralelo as que já podem começar, cada uma com o agente que você definir: Claude Code, Codex, OpenCode, Gemini ou Antigravity.

Com o OpenCode você ainda pode usar modelos de outros provedores, por exemplo pelo OpenRouter, ou um que rode na sua própria máquina. Assim você distribui o trabalho: as tarefas difíceis para um modelo mais caro, as mecânicas para um barato, e não depende da cota de um único provedor.

Cada tarefa trabalha na sua própria cópia do repositório e na sua própria branch, e quando termina abre um pull request. Os agentes não atropelam uns aos outros e você revisa cada mudança separadamente.

Com a cota, o Orch acompanha o que cada provedor consumiu na sua janela. Quando chega perto do limite, para de mandar tarefas novas para ele e espera a janela renovar, então o bloqueio não chega a acontecer.

O freio que não freava

A primeira versão desse freio tinha um erro que demorei a ver: ele nunca era acionado. O Claude Code informa separadamente os tokens que lê normalmente e os que tira do cache, e o Orch só somava os primeiros. Numa tarefa real que revisei, o Claude reportou 19 tokens normais e mais de 60.000 vindos do cache. Com essa conta, o Orch achava que cabiam umas 770 tarefas numa janela de cinco horas, então nunca freava e o bloqueio do provedor chegava do mesmo jeito.

Corrigi na versão 0.15, em setembro. Agora o cache conta pelo que a Anthropic cobra por ele: ler do cache vale 10% de um token normal e escrever nele, 125%. Com a mesma tarefa, o freio é acionado depois de umas 16, que é o que o ajuste padrão buscava: deixar cota livre para você continuar usando o agente na mão enquanto o Orch trabalha.

O painel de quem opera

Enquanto as tarefas rodam, o Orch abre um painel no navegador para quem está operando. Ali você vê o que cada agente está fazendo, o grafo de dependências, quanto cada provedor já consumiu da janela e o caminho de cada tarefa até o pull request.

Grafo de dependências do projeto fluent no painel do Orch: 16 tarefas em cinco fases, 15 concluídas e uma bloqueada em laranja

Esse é o grafo do fluent, um projeto meu que fiz inteiro com o Orch: 16 tarefas em cinco fases. Quinze já terminaram. A laranja ficou parada de propósito, porque chama um serviço que gasta a cota gratuita de outros provedores, então marquei para ela só rodar quando eu autorizar. O Orch não despacha e deixa a tarefa em “Precisa da sua atenção” até alguém desbloquear.

O painel desse projeto está aberto em fluent-ops.knaimero.app se você quiser olhar por dentro.

Uma página para os stakeholders

O cliente, ou quem precisa acompanhar o projeto, recebe um link para uma página que se atualiza sozinha:

Página do cliente do projeto fluent no Orch: frase de status, 15 de 16 entregas, um item em espera com o motivo, a etapa atual e como cada entrega foi verificada

No topo, uma frase diz em que pé está o trabalho e quanto já foi entregue. Embaixo aparece o que está parado e por quê, a etapa em andamento, o que foi entregue na semana e como cada entrega foi verificada: testes automatizados, revisão do estilo do código e build completo.

Esse resumo é montado pelo Orch com os dados do projeto toda vez que a página abre, sem chamar nenhum modelo de IA. Não custa nada e, com os mesmos dados, diz sempre a mesma coisa. O cliente não vê logs nem código, e o gasto com IA só aparece se você ativar. A página do fluent está em fluent-orch.knaimero.app.

Como usar

orch atomize --apply   # do documento para a lista de tarefas
orch run               # roda as tarefas em paralelo com os agentes
orch publish           # gera a página para o cliente

Roda na sua máquina, com os agentes e as chaves que você já tem. É um único programa escrito em Go, sem servidor para manter, e nunca guarda uma chave de modelo.

Outras opções

Existem outras ferramentas open source para coordenar agentes de código, maiores e com mais funções, como Multica, Vibe Kanban ou Claude Squad. Se o que você precisa é segurar o consumo por provedor ou mostrar o progresso para um cliente, é isso que o Orch faz e elas não.

Você pode testar no navegador sem instalar nada ou ver o código no GitHub. Lanço uma versão por semana e em cada uma conto o que mudou e o que quebrou.