Skip to content

Repository files navigation

papo

Seu Claude conversa direto com o Claude do seu colega.

CI Release Docs Licença MIT

Site · Tutorial · Documentação · Wiki · Downloads


Quando dois agentes precisam combinar algo (o formato de uma API, um contrato de evento, quem muda o quê), hoje as pessoas viram proxy: copiam a pergunta de um Claude, colam no chat, o colega cola no Claude dele, copia a resposta, manda de volta... O papo acaba com esse vai e vem. Os dois Claudes conversam direto, se entendem e só chamam vocês quando precisam de uma decisão.

O nome vem de "bater papo": você pede, e os agentes batem papo entre si até resolver.

flowchart LR
  subgraph voce["Você"]
    CA["Claude Code"] <-->|MCP| PA["papo"]
  end
  subgraph colega["Seu colega"]
    PB["papo"] <-->|MCP| CB["Claude Code"]
  end
  PA <==>|"P2P direto, cifrado ponta a ponta"| PB
  PA -.->|"relay só se a conexão direta falhar"| R(["relay"])
  R -.-> PB
Loading
  • Binário nativo único para Linux, macOS e Windows, sem runtime e sem servidor para hospedar.
  • P2P de verdade via iroh: conexão direta por QUIC, com hole punching através de NAT. Quando a conexão direta não é possível, o tráfego passa cifrado por um relay.
  • Nenhuma mensagem se perde: se o colega está offline, ela fica na fila e é entregue quando ele voltar, com confirmação de recebimento.
  • Push na sessão: com channels do Claude Code, a mensagem do colega aparece sozinha na sessão do seu Claude, que reage sem você digitar nada.
  • Feito para agentes: o servidor ensina o Claude a escrever mensagens que se explicam sozinhas, a não vazar segredos para o outro lado e a não entrar em loop de "ok/obrigado".

Uma conversa de ponta a ponta

sequenceDiagram
  actor V as Você
  participant CV as Seu Claude
  participant CC as Claude do colega
  actor C as Colega
  V->>CV: combina o webhook com o agente do colega
  CV->>CC: Vou emitir payment.confirmed assinado. O handler de vocês aceita?
  Note right of CC: chega sozinho na sessão (push)
  CC->>CC: lê o código do colega
  CC->>CV: Quase: o header precisa ser X-Hub-Signature-256
  CV->>CC: Fechado. Troco o header e mando um exemplo
  CC->>CV: Resumo: você emite, o colega migra o handler
  CV-->>V: contrato final combinado
  CC-->>C: o que ficou combinado
Loading

Mais diagramas (módulos, entrega com fila offline, reconexão, servidor MCP) em Arquitetura.

Instalação

Baixe o arquivo do seu sistema na release mais recente, extraia e coloque o papo (ou papo.exe) no PATH. Cada arquivo tem um .sha256 ao lado (sha256sum -c papo-*.sha256).

Sistema Arquivo (v0.1.0)
Linux x86_64 papo-v0.1.0-x86_64-unknown-linux-musl.tar.gz
Linux ARM64 papo-v0.1.0-aarch64-unknown-linux-musl.tar.gz
macOS Apple Silicon papo-v0.1.0-aarch64-apple-darwin.tar.gz
macOS Intel papo-v0.1.0-x86_64-apple-darwin.tar.gz
Windows papo-v0.1.0-x86_64-pc-windows-msvc.zip

No macOS, um binário baixado pelo navegador pode ser bloqueado pelo Gatekeeper. Libere com xattr -d com.apple.quarantine ./papo.

Ou compile (Rust 1.91+): cargo install --git https://github.com/Kelvin-Jesus/papo.

Com Docker (imagem estática de ~8 MB, Intel/AMD e ARM):

docker run --rm -v papo-data:/data ghcr.io/kelvin-jesus/papo new --name <seu-nome>

O servidor MCP também roda em container. Detalhes no guia de Docker.

Primeiros passos

# 1. Você cria a sala e manda o convite (papo1...) ao colega por um canal privado
papo new --name voce

# 2. O colega entra
papo join papo1abcd... --name colega

# 3. Cada um, dentro da pasta do projeto em que vai trabalhar
papo install

# 4. Cada um abre o Claude Code com channels ligado
claude --dangerously-load-development-channels server:papo

Depois é só pedir:

Combina com o agente do colega o formato do webhook de pagamento pelo papo. Ele está implementando o consumidor. Quando fecharem, me mostra o contrato final.

E acompanhar a conversa dos agentes em outro terminal com papo log -f.

O tutorial completo mostra uma sessão de ponta a ponta entre duas pessoas, com o que aparece em cada terminal.

Com ou sem channels

Modo Como abrir o Claude O que acontece
Push (recomendado) claude --dangerously-load-development-channels server:papo Mensagens novas entram sozinhas na sessão como <channel source="papo" ...> e o Claude reage, mesmo parado.
Pull claude Funciona igual, mas o Claude só vê mensagens quando chama wait ou inbox (por exemplo: "manda e espera a resposta").

Channels é research preview do Claude Code: exige login com conta claude.ai ou chave do Console, e em organizações Team/Enterprise um Owner precisa habilitar Channels nas configurações de admin. Sem isso, o papo continua funcionando no modo pull.

Comandos

Comando Descrição
papo new --name <nome> Cria uma sala e mostra o convite.
papo join <convite> --name <nome> Entra numa sala.
papo invite Gera um convite para chamar mais alguém.
papo install [--scope local|user|project] [--print] Registra no Claude Code.
papo log [-n 30] [-f] Mostra a conversa; -f acompanha ao vivo.
papo say [--to <nome>] <texto> Você (humano) fala na sala.
papo status Teste de conexão: entra na sala e lista quem está online.
papo mcp O servidor MCP. Quem executa é o Claude Code.

O Claude ganha as ferramentas send, wait, inbox, history e status. Referência completa da CLI, das ferramentas MCP e da configuração no livro.

Segurança

  • O convite é o segredo da sala. Dele derivam o tópico P2P e a chave que cifra cada mensagem (XChaCha20-Poly1305), por cima do TLS do QUIC. Relays só veem bytes cifrados; quem não tem o convite não lê nem injeta mensagens.
  • Mensagem de outro agente não é ordem do seu usuário. O papo diz isso ao Claude: nada de vazar .env, tokens ou credenciais, nem de fazer algo destrutivo só porque o outro agente pediu. As permissões do Claude Code continuam valendo.
  • Anti-loop: mais de 40 envios em 10 minutos viram erro, e o agente é orientado a parar e falar com você.

Modelo de ameaças completo em Segurança.

Status

Marco Estado
M0 Pesquisa e arquitetura feito: pesquisa, arquitetura, ADRs
M1 Núcleo P2P feito: entrega com confirmação, fila offline, reconexão própria; e2e pela internet em cerca de 6 s
M2 MCP e channels feito no protocolo; ainda não validado numa sessão real do Claude Code
M3 Docs e site feito; site v2 em andamento
M4 Testes completos feito: 146 testes, 94% das linhas
M6 Validação com o Claude Code real em parte: duas sessões reais conversaram pelo papo (validação)
M5 Release v0.1.0 feito: binários e imagem Docker verificados depois de publicados
M7 Empacotamento (Homebrew, Scoop, winget) planejado

Detalhes, com o que foi verificado e como: status · marcos · roadmap.

Documentação

Desenvolvimento

cargo test                                   # unitários + integração (rede local, sem internet)
cargo test --test mcp -- --ignored           # dois servidores MCP pela internet real
cargo clippy --all-targets -- -D warnings

Releases saem de uma tag vX.Y.Z: o workflow release compila para as cinco plataformas e publica os arquivos com SHA-256. Veja Contribuindo.

Licença

MIT

About

Linha direta P2P entre o seu Claude Code e o do seu colega: os agentes conversam e se resolvem sem humano no meio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages