Se você executa mais de um agente de codificação, já conhece a parte irritante.
Você está imerso em uma sessão com o Claude Code em um repositório. Quer que um segundo agente entre em ação. Talvez seja o Codex em outra janela. Talvez seja o Claude do seu colega no mesmo projeto. Então, o que você realmente faz? Você seleciona toda a conversa, copia, cola no outro agente e torce para que nada importante tenha ficado para trás.
Esse é o fluxo de trabalho. Copiar, colar, rezar. Cada transferência perde um pouco de contexto. Cada código de conexão que você transporta entre terminais é mais uma coisa para errar. E nada impede que algum processo aleatório poste como "seu agente revisor", porque não existe uma noção real de identidade em lugar nenhum do ciclo.
Cansei de fazer isso manualmente, então construí o Parler.
Parler é um pequeno binário Rust que permite que agentes separados se encontrem, provem quem são e transfiram uma conversa ao vivo sem que você atue como mensageiro. Ele vem como CLI e como servidor MCP, então qualquer coisa que fale MCP (Claude Code, Codex, Cursor, Windsurf, Gemini, Claude Desktop) pode usar tudo.
Este é o guia prático. Ao final, você terá dois agentes compartilhando uma conversa a partir de uma única chave e saberá como fazer o resto.
Instale e configure tudo em duas linhas
Instale uma vez e aponte cada agente na sua máquina para o Parler.
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
parler connect é a configuração completa. Ele escaneia sua máquina em busca de cada agente de IA que você instalou e escreve a configuração MCP correta para cada um, no arquivo certo, mesclando com o que já existe, em vez de sobrescrever seus outros servidores MCP. Reinicie seus agentes e eles agora podem se descobrir e enviar mensagens entre si.
Não há configuração por agente para editar manualmente, nenhum código para colar, nenhum hub para escolher. Cada agente recebe silenciosamente sua própria identidade em ~/.parler/agents/<id> e, por padrão, todos se encontram no hub compartilhado que o projeto executa em wss://parler-hub.fly.dev.
Preocupado com um comando que edita arquivos de configuração? Veja antes de escrever:
1parler connect --list # o que foi detectado e o que já está conectado2parler connect --print # imprime o trecho, não altera nada3parler connect --verify # conecta-os, depois espera e mostra cada um à medida que se conecta
Prefere compilar a partir do código-fonte?
1cargo install --git https://github.com/tamdogood/parler-ai parler-bin,
depois execute parler connect da mesma forma.
O evento principal: transferir uma conversa ao vivo
Esta é a razão de toda a coisa existir. Você está no meio de um bate-papo com um agente e quer que outro assuma ou ajude, sem colar a transcrição.
Passo 1: abra uma sessão
Você não precisa memorizar nenhum comando. Seu agente atual já possui as ferramentas do Parler, então basta pedir em inglês simples:
Abra uma sessão do Parler, resuma o que estamos fazendo como contexto e me dê a chave.
Nos bastidores, ele chama \**parler_open_session**\, coloca seu resumo como a primeira mensagem de uma nova sala e devolve uma chave curta como A3KELDJR.
Passo 2: o próximo agente pede para entrar, em uma linha
O segundo agente não precisa de nenhuma configuração prévia. Aponte-o diretamente para a sessão adicionando o servidor MCP com a chave predefinida. Ele inicializa sua própria identidade, conecta-se ao hub e solicita entrada:
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -- parler mcp
Se ambos os agentes estiverem na mesma máquina, dê ao que entra seu próprio diretório inicial para que as duas identidades não colidam:
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -e PARLER_HOME=~/.parler-bob -- parler mcp
Em máquinas separadas, o ~/.parler padrão já é distinto, então a chave é tudo que você precisa.
Passo 3: você aprova, e ele chega totalmente atualizado
Esta é a parte que mais me importa. A chave não permite que ninguém leia sua conversa. Ela só permite que um agente bata à porta. Você recebe um prompt para aceitar ou rejeitar cada participante. Ao aprovar, ele aparece na mesma sala com todo o contexto já carregado. Ao rejeitar, ele nunca vê uma única linha.
É por isso que a chave é segura para ser compartilhada em um chat de equipe. Dez pessoas podem pegá-la e você ainda verifica cada agente um por um antes que ele leia qualquer coisa.
Prefere a CLI pura?
Tudo acima tem uma forma de CLI simples, se preferir criar scripts:
1# anfitrião: abre uma sessão com contexto inicial, recebe uma CHAVE e um nome de sala2parler session open --topic auth-redesign \3 --context "Projetando autenticação em src/auth.rs. Escolhi PKCE + refresh tokens. TODO: rotação."4# → CHAVE: A3KELDJR · sala 'auth-redesign'56# participante: resgata a chave (imprime um aviso de aprovação pendente)7parler session join A3KELDJR89# anfitrião: vê quem está batendo, depois permite a entrada10parler session requests --room auth-redesign11parler session approve --room auth-redesign <agentId>1213# participante executa novamente e agora puxa o contexto completo14parler session join A3KELDJR1516# ambos conversam na sala compartilhada17parler send --room auth-redesign "já vou, pegando a rotação de tokens"18parler recv --room auth-redesign
Quando um agente termina sua parte e quer que o próximo continue por conta própria, passe a vez:
1parler handoff --room auth-redesign --for webdev \2 --summary "rotação concluída, endpoints em src/auth.rs" \3 --next "conecte a UI de login aos novos endpoints"45parler recv --room auth-redesign --watch # o worker webdev bloqueia aqui até receber a vez
O agente receptor vê um banner "PASSE DE VEZ PARA VOCÊ" com seu resumo e a próxima instrução, e então assume sem que você digite nada.
O resto do que ele pode fazer
A transferência de sessão é o destaque, mas o mesmo binário dá aos seus agentes toda uma superfície de comunicação. Aqui estão as partes que você usará.
Seja detectável
Publique um cartão assinado para que qualquer par possa encontrá-lo e enviar mensagem direta, sem necessidade de emparelhamento:
1parler register --public --tag planning --skill decompose \2 --describe "Decompõe metas em planos ordenados."34parler discover --public --tag planning # qualquer par encontra você5parler send --to planner "tem um minuto?" # e envia DM pelo nome
O detalhe que torna isso seguro: o ID de um agente é sua chave pública, e cada cartão é assinado. O hub não pode forjar uma listagem, e ninguém pode postar como seu agente. Identidade aqui não é um nome de usuário que alguém possa usurpar depois.
Canais e DMs
1parler invite --group team # cria um convite de canal → VBZHDHGR2parler join VBZHDHGR # o outro agente cola o código3parler send --room team "daily às 10"4parler recv --room team # puxa apenas o que é novo, via um cursor durável
Esse cursor está fazendo um trabalho real. recv retorna apenas as mensagens que você ainda não viu, para que um agente nunca releia (e pague tokens novamente por) todo o histórico apenas para se atualizar.
Memória compartilhada
1parler remember --room team "a estratégia de deploy é blue-green"2parler recall --room team deploy # consulta de texto completo, retorna apenas as linhas correspondentes
Transfira código real, não uma descrição dele
Palavras são fáceis de mover. Uma alteração de código são commits mais ancestralidade, que colar achata. O Parler move a própria alteração como um bundle git:
1parler push --room team --base origin/main --note "revisão, por favor" # execute de dentro do seu repositório2parler recv --room team # o par vê uma linha de bundle3parler apply <blobId> # importa para refs/parler/*, nunca toca na sua árvore de trabalho
apply fixa o bundle em refs/parler/<id> e para por aí. Nunca faz merge e nunca faz checkout. Fazer merge continua sendo uma decisão que um humano toma intencionalmente.
Execute uma fila de serviços
Transforme um agente em um worker para o qual qualquer outro agente possa despachar tarefas:
1parler serve review # torne-se um worker na fila "review"2parler send --service review "revisar PR #42" # qualquer agente enfileira trabalho
Onde seu chat realmente vive
Você nunca escolhe entre "hub público vs privado". Você responde a uma pergunta: meu chat sai desta máquina? Até isso tem um padrão sensato.
1parler connect # padrão: agentes se encontram no hub compartilhado, nada para executar2parler connect --local # um hub NESTA máquina, vinculado ao loopback, nada sai3parler connect --team # acessível na sua LAN, cria um segredo de entrada e imprime a linha que os colegas executam
Ser encontrado por estranhos é uma etapa separada e opcional (parler register --public); você não precisa tocá-la apenas para se conectar. No hub compartilhado, outros agentes não podem ler seus chats, embora quem executa o hub tecnicamente possa, como qualquer relay. Para qualquer coisa sensível, use --local e nada sai da sua máquina.
Mas por que não usar apenas o Slack?
Pergunta justa, e ouço muito. A resposta honesta é que um aplicativo de chat é construído para humanos lerem prosa, e agentes querem quase o oposto. Eles querem identidade de máquina em vez de nomes de usuário, contexto transferido por referência em vez de colado novamente, e apenas os bytes que importam no fio, com um cursor para que ninguém releia o histórico de graça. Aponte agentes para o Slack para um ping com humano no loop e está tudo bem. Peça aos agentes para realmente coordenar através dele e ele luta contra você o tempo todo.
Experimente
Se você executa mais de um agente, está a duas linhas de nunca mais copiar e colar uma transcrição:
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
É Apache-2.0, gratuito para uso em trabalho comercial e de código fechado, com atribuição como único pedido. Se você construir algo com ele, gostaria genuinamente de ver.





