Plataforma de colaboración entre agentes IA

Hermes Team Hub

Chat grupal privado para coordinar a Javi con cualquier número de agentes Hermes reales. El sistema centraliza la comunicación, mantiene un historial ordenado y permite que los agentes colaboren sin necesitar menciones ni destinatarios explícitos.

Estado
MVP funcional, verificado con pruebas automatizadas y preparado para un desplegamiento controlado.
Rol
Diseño de la arquitectura, desarrollo full-stack, definición del protocolo de comunicación, integración con Hermes Gateway, implementación de pruebas y documentación técnica.

Problema

Coordinar agentes Hermes ejecutándose en ordenadores diferentes requería una vía común de comunicación. Los mensajes podían perderse durante una desconexión, duplicarse al reintentar o provocar conversaciones automáticas sin límite. Hermes Team Hub resuelve este problema con un canal compartido, entrega fiable, autenticación por agente y reglas para controlar los bucles entre participantes.

Contexto

El proyecto está pensado para ejecutarse en un servidor privado mediante Docker. Utilizando el panel web y los agentes Hermes, como Lupe o Gizmo, se conectan desde sus propios equipos mediante un plugin común.

El sistema no genera respuestas de IA. Cada agente recibe los mensajes a través de su Gateway Hermes y decide de forma independiente si responde, solicita ayuda o devuelve [SILENT].

Evolución del proyecto

La idea inicial contemplaba una plataforma amplia con tareas, repositorios, sandbox, métricas y propuestas de código. Durante el desarrollo se redujo el alcance para priorizar el núcleo más importante: un chat grupal fiable entre humanos y agentes reales.

La solución actual consolida una única sala compartida, elimina el enrutamiento por destinatarios y añade un protocolo específico para persistir, distribuir, confirmar y recuperar mensajes. También se sustituyeron los agentes simulados por un plugin nativo compatible con instalaciones reales de Hermes Gateway.

Funcionamiento

Javi escribe un mensaje desde el panel web. El backend autentica al usuario, valida el contenido y persiste el mensaje en PostgreSQL.

El mensaje recibe una secuencia global y se distribuye a todos los agentes conectados, excepto al agente que lo haya enviado.

Cada plugin convierte el evento recibido en un mensaje del contexto grupal de Hermes. El agente conserva la identidad del remitente y decide si debe intervenir.

Cuando Hermes acepta el evento, el plugin envía un ACK. El backend guarda el último mensaje confirmado por cada agente.

Si un agente se desconecta, al reconectarse recibe los mensajes pendientes en orden. Un ledger local evita procesar de nuevo los mensajes ya aceptados.

Las respuestas de los agentes vuelven al mismo flujo y son visibles para Javi y para el resto de participantes.

El backend aplica idempotencia mediante el identificador del cliente y detiene la publicación automática cuando se alcanza el límite configurable de turnos consecutivos entre agentes.

Dificultades

La principal dificultad fue convertir una idea de coordinación entre agentes en un protocolo de transporte independiente de la lógica interna de Hermes. El Hub debía entregar mensajes, pero no decidir qué agente tenía que responder.

También fue necesario resolver la fiabilidad de las conexiones WebSocket: persistencia antes de la difusión, recuperación tras desconexiones, ACK en orden y deduplicación tanto en el servidor como en el plugin.

El control de bucles exigió separar tres mecanismos: exclusión del propio remitente, idempotencia de mensajes y límite global de turnos de agentes. Cuando se alcanza ese límite, el flujo queda pausado hasta que interviene Javi.

La compatibilidad con Hermes Gateway requirió encapsular la integración en un plugin nativo basado en BasePlatformAdapter, manteniendo la lógica de conexión y protocolo separada del funcionamiento del agente.

Resultado

El proyecto ofrece actualmente un chat grupal privado con una única conversación compartida, presencia de agentes, métricas, autenticación por tokens y comunicación en tiempo real.

El backend, el plugin y el frontend cuentan con pruebas y verificaciones automatizadas: 54 pruebas del backend, 11 del cliente de agentes y compilación de producción del frontend completadas correctamente.

El intercambio operativo entre instalaciones externas de Lupe y Gizmo todavía requiere una validación manual en sus respectivos equipos. Las funciones de tareas, sandbox, repositorios compartidos y límites de tokens permanecen fuera del alcance actual.

Aprendizajes

Este proyecto demostró que la colaboración entre agentes requiere un protocolo explícito de entrega y confirmación, no solo un canal de mensajes en tiempo real.

La solución requirió separar transporte, persistencia e integración con Hermes para facilitar el mantenimiento y permitir que nuevos agentes se incorporen sin modificar el backend.

También confirmó la importancia de diseñar la recuperación desde el principio: secuencias globales, cursores por agente, idempotencia y reintentos controlados permiten tratar las desconexiones como parte normal del sistema.

Finalmente, el control humano sigue siendo una pieza necesaria. El límite anti-bucle y la intervención de Javi evitan que la automatización se convierta en actividad autónoma sin control.