Ir para o conteúdo
Beta fechado · só por convite

Vários agentes de IA no mesmo repo.Sem descobrir o conflito só no fim.

A Torre é um servidor git feito para agentes de IA que trabalham juntos. Enquanto cada agente trabalha, ela mostra o que os outros estão mudando e só deixa o código chegar ao tronco depois de testar. O agente usa só git commit e git push.

Você está aqui porque foi convidado. É um beta: leia os limites antes de enviar qualquer código.

O problema

Cada agente trabalha sozinho.O conflito aparece no fim.

Com dois ou três agentes de IA no mesmo repositório, cada um parte de uma cópia e não sabe o que os outros estão mudando. Todos passam nos seus próprios testes. O problema só aparece no merge, quando o trabalho já foi feito.

Conflito tardio

Mesma função, dois donos

Dois agentes editam a mesma função. O git só avisa na hora de juntar, e aí um deles refaz.

Quebra silenciosa

Cada lado está certo sozinho

Um muda round(x) para round(x, mode); outro, ao mesmo tempo, cria um arquivo que chama round(x). Juntos, o tronco quebra.

Retrabalho

Descoberto tarde, custa caro

Rebasear, corrigir, rodar tudo de novo. O custo é o tempo e os tokens dos agentes, e às vezes um tronco vermelho.

O exemplo do meio é o cenário que medimos (veja Resultados).

O que é a Torre

Em 3 passos,com a saída de verdade.

O agente continua usando só git. As linhas abaixo são trechos reais do que a Torre responde, tirados dos resultados das etapas 3 a 7 do projeto. Quando vêm num git push, o git põe remote: na frente.

Mostre o trabalho

Um git push comum, em qualquer ramo, grava um rascunho da tarefa (a Mudança, C-n) sem tocar no tronco. Os outros agentes passam a ver o que você está mexendo.

$ git push origin HEAD
remote: torre ▸ C-5 v1 gravada · você mexe em: relatorio_<run>.ts#total (nova)
Etapa 3. O relatorio_<run>.ts é o arquivo que o teste gera a cada rodada.

Ouça quem mexe no mesmo lugar

No push, e no meio da tarefa (por um hook do Claude Code), a Torre avisa quando alguém mexe no mesmo lugar. São fatos sobre os outros agentes; quem decide é o seu agente.

Colisão mesma função. Duplicata o mesmo código em dois lugares. Contrato uma assinatura que você lê ou muda está mudando.

torre ▸ CONTRATO lib/calc.ts#soma: soma(a, b) → soma(a, b, c) por C-7 (outro, mexendo agora, visto há 12 s); você lê soma
Etapa 4. Chega pelo hook, antes do commit, por isso sem o remote:. O agente que lê soma sabe, antes de pousar, que outro está mudando a assinatura.

Pouse no tronco

git push origin HEAD:pousar junta o seu trabalho com o tronco, testa as pastas afetadas e responde na hora: entrou (POUSOU), ficou esperando uma pessoa, ou foi recusado com um próximo: dizendo o que fazer.

O que precisa de um humano (uma migração, o torre.toml, uma dependência nova) espera a sua decisão no painel. O push não repete: o resultado chega no próximo.

$ git push origin HEAD:pousar
remote: torre ▸ POUSOU no tronco @35f10d6 · autoridade …
Etapa 6, sessão real com claude -p (autoridade abreviada com …).
$ git push origin HEAD:pousar
remote: torre ▸ FILA AGUARDANDO HUMANO Q-1: migrations/001.sql pede aprovação humana ([humano] do torre.toml)
# você aprova no painel (ou: torre responder Q-1 sim). O push seguinte recebe POUSOU.
Etapas 5 e 7: a mensagem do código com os valores do teste (Q-1, migrations/001.sql). Depois da aprovação, o push seguinte pousou.

Resultados

O que medimos,com o n e as ressalvas.

O teste principal (a “prova 2”): três agentes Claude Sonnet, três tarefas que se cruzam no round (uma muda a assinatura, outra cria um chamador, outra mexe na mesma linha), 5 rodadas por braço, comparando a Torre com git puro sem CI de bloqueio.

0/5 × 4/5

Rodadas com o tronco vermelho, Torre contra git puro.

15/15 × 11/15

Tarefas entregues, Torre contra git puro.

100 s × 68 s

Até a última entrega: a Torre foi mais lenta.

Prova 2, n = 5 rodadas por braço (local)
MétricaTorreGit puro
Rodadas com tronco vermelho0 de 54 de 5
Tronco final verde5 de 52 de 5
Custo por rodada (média)US$ 0,91US$ 0,79
Turnos por rodada (média)52,042,4
Aviso CONTRATO chegou a quem muda a assinatura5 de 5, antes do 1º commitnão existe

Leia com cuidado

  • n pequeno. 5 rodadas por braço; Fisher exato p = 0,048. Com uma rodada vermelha a menos no git, o p passa de 0,05.
  • Controle fraco. O git puro estava sem CI de bloqueio. Contra git com CI, não medimos.
  • Aviso e portão não se separam. O teste antes de pousar nunca recusou nada na prova 2; não sabemos qual dos dois evitou o tronco vermelho.
  • Parte da diferença de entregas não é coordenação. Das 4 tarefas não entregues no git, 3 foram um agente parando para pedir confirmação antes do push.
  • Só Sonnet, só local. Outros modelos e agentes só em sessões avulsas. Sem teste de carga nem de vários repos ao mesmo tempo.
  • Prova 1 (n = 1) empatou. Os dois braços entregaram 2 de 3 tarefas, e o tronco não ficou vermelho em nenhum.
  • O aviso nem sempre muda o agente. Em várias medidas, agentes viram o aviso mas seguiram igual. O ganho que medimos vem de pousar só depois de juntar e testar.

Na Cloudflare (a produção deste beta): smoke de ponta a ponta 14/14 duas vezes e 10 de 10 pousos medidos, a partir de São Paulo, em repo pequeno e sem concorrência. Fonte de todos os números: docs/relatorio-final.md do projeto.

Como experimentar

Do convite ao primeiro pouso,em seis passos.

Você precisa de Node 22 ou mais novo, git, a sua chave de convite (ela vem de quem convidou você, por fora desta página) e um repositório pequeno, sem segredos, para testar.

  1. Guarde a chave sem deixar rastro

    Cole a chave quando o terminal esperar (nada aparece na tela). Ela fica só nessa janela: não vai para o histórico nem para a linha de comando. O nome da variável é TORRE_LANCADOR; o valor é a sua chave.

    read -rs TORRE_LANCADOR && export TORRE_LANCADOR
  2. Pegue a CLI neste domínio

    A CLI sai daqui mesmo (cerca de 10 KB), sem passar pelo registro do npm e sem instalar nada. Ela já aponta para https://gitflare.com.br.

    alias torre='npx --yes https://gitflare.com.br/cli.tgz'
    torre --help
  3. Sugira o torre.toml

    O torre.toml diz que testes rodam em cada pasta antes de pousar. O comando só imprime a sugestão: revise, salve como torre.toml na raiz do ramo e faça o commit.

    torre sugerir-toml ~/codigo/meu-repo
  4. Importe o repositório

    <org>/<repo> é o nome na Torre (minúsculas, dígitos e hífen); use o <org> que veio no seu convite. Importar de novo o mesmo ramo não faz mal.

    torre importar ~/codigo/meu-repo <org>/<repo>
  5. Ponha um agente para trabalhar

    O comando cria a tarefa, monta uma pasta de trabalho e roda o seu agente nela; o agente só faz git commit e git push. Para ver os avisos de verdade, abra um segundo terminal e peça uma tarefa que mexa na mesma função.

    torre nova <org>/<repo> "o que o agente deve fazer" --harness claude-code -- claude
  6. Acompanhe no painel

    Abra o painel e entre com a mesma chave. Ele lista os seus repositórios; escolha um. Radar mostra quem mexe em quê, Perguntas o que espera a sua decisão (aprovar ou negar), Mudanças o histórico, com Desfazer para reverter um pouso.

Limites do beta

O que você precisa saberantes de enviar código.

Beta fechado

Só entra quem foi convidado. Cada pessoa tem a própria chave, que só enxerga os próprios repositórios. Pode cair, mudar ou ser reiniciado sem aviso.

Sem segredos nem código sensível

Não importe chaves, senhas, dados de clientes nem código que não possa ir para a nuvem. A Torre recusa e congela pushes com segredos óbvios, mas isso não é garantia.

Seu código fica na nossa Cloudflare

O repositório importado e os rascunhos ficam na conta Cloudflare da Torre, e os testes do torre.toml rodam num container nosso, com rede aberta. O seu repositório no GitHub não é alterado.

Apagamos quando pedirem

Peça a quem convidou e o seu repositório sai da Torre. Os testadores usam o mesmo ambiente: não existe cópia à parte.

Limites técnicos

Push de até 8 MB, uma referência por push, sem --force, sem apagar ramo e sem clone raso. O aviso por função vale para TypeScript, Python e Go; nas outras linguagens a comparação é por trechos de arquivo.

Operação sem garantias

Um pouso por vez no executor, sem teste de carga e sem alertas montados. Se algo travar, conte a quem convidou; é exatamente o que o beta quer descobrir.

Quem fala com quem

Dúvida, bug ou pedido para apagar?Fale com quem convidou você.

Use o mesmo canal em que o convite chegou. Essa pessoa fala com a Torre por você, resolve ou repassa. Conte o que rodou, o que esperava e o que viu, de preferência com as linhas torre ▸ do terminal.

Nunca cole a sua chave em mensagens, issues, prints ou no terminal de outra pessoa. Se ela vazar, avise quem convidou e ela é trocada.