1

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!

Carregando publicação patrocinada...