Criei uma malha P2P para agentes de IA conversarem, sem Kafka, sem Redis, sem infraestrutura
Nos últimos meses, cansei de gerenciar a infraestrutura necessária para fazer agentes de IA conversarem entre si. Se você tem o Agente A (num container Docker atrás de NAT) e o Agente B (numa VPS com IP público), a solução padrão é montar um cluster Kafka, NATS, Redis Pub/Sub ou assinar um serviço de nuvem pago. É um overhead bizarro de infraestrutura para algo que deveria ser simples.
Para resolver isso, criei o Elo: uma malha de mensagens P2P descentralizada e agnóstica feita sob medida para agentes de IA.
A ideia é que cada agente seja um nó autônomo na rede. Cada nó tem um par de chaves Ed25519, uma porta TCP e zero dependências externas. É TCP direto entre os nós sempre que possível.
Como funciona a arquitetura?
Como gerenciar IPs e firewalls de agentes dinâmicos é um caos, o Elo resolve isso com quatro pilares:
Tracker estilo BitTorrent: Um nó público (ou privado seu) que sabe quem está online. O agente se conecta nele, descobre os outros peers da malha e estabelece a conexão direta.
Relay automático (NAT Traversal): Se dois nós não conseguem se conectar diretamente por restrições de firewall (ex: subredes Docker ou redes domésticas), o tracker faz o relay transparente dos pacotes.
Identidade Soberana (Ed25519): Chega de tokens estáticos e senhas em texto puro no código. Cada nó tem sua identidade criptográfica. Todas as mensagens são assinadas nativamente na camada de transporte.
Roteamento por Capacidade (Capability Discovery): Em vez de apontar para IPs fixos, você interroga a malha: "Quem tem a capacidade X?" (ex: execução de código, busca web, acesso a banco). O tracker responde e você se conecta ao agente certo.
Código na prática (Python)
A API foi desenhada para ser o mais enxuta possível:
`Python
import asyncio
from elo import Node
async def main():
# Inicializa o nó apontando para o tracker da malha
node = Node("meu-agente", peers=["tracker.exemplo.com:7878"])
await node.connect()
# Registra o escopo do agente e suas ferramentas na malha
await node.register(agents=["analise"], tools=["web-search"])
@node.on_task
async def handle(task):
return {"result": f"Processado via P2P por {node.node_id}"}
await node.run()
if name == "main":
asyncio.run(main())`
Para testar no seu ambiente:
Bash pip install elo-node
Estado Atual do Projeto
O projeto é MIT (Open Source) desde o primeiro commit e já está funcional:
✅ Core P2P ativo (conexão TCP, handshake e orquestração de tasks)
✅ Relay via tracker estável para nós atrás de NAT/Docker
✅ Descoberta de peers via tracker funcional
✅ Identidade persistente baseada em chaves criptográficas
✅ Suíte inicial com 36 testes unitários cobrindo o core
O que está no Roadmap:
- Go SDK: Para agentes e ferramentas leves/compiladas.
- Gateway REST: Para integrar facilmente sistemas legados via webhooks.
- Bridges nativas: Conectores para Discord/Telegram expondo capacidades da malha.
- CLI robusta: Um client estilo kubectl para monitorar a topologia e saúde da malha em tempo real.
Links do Projeto
O código está aberto e pronto para receber críticas, testes e contribuições:
GitHub: github.com/andreocc/elo
PyPI: pip install elo-node
Se a proposta fizer sentido para o que você está construindo, deixa uma ⭐ Star no GitHub para ajudar o projeto a ganhar tração. feedback técnico sobre a arquitetura (especialmente o NAT traversal e modelo de capabilities) é extremamente bem-vindo nos comentários!