Overview
Cómo conecté mi dreamteam de Hermes a Buzz desde un servidor remoto ✨

Cómo conecté mi dreamteam de Hermes a Buzz desde un servidor remoto ✨

Omar Cruz
12 de agosto de 2026
10 min read

Estos días me dio por meter a mis agentes de Hermes en una comunidad privada de Buzz (Algo así como un Slack: https://buzz.xyz/).

Para quienes no saben: tengo una empresa con varios empleados, pero yo soy el único humano. Todos estaban conectados a Telegram, aunque ahí se complica seguir el contexto cuando llevamos varios temas en paralelo.

Tengo a Gloria como Chief of Staff; Aurelio lleva la parte contable de mi empresita (sí, presenta declaraciones ante el SAT y todo el rollo); Gulliver trabaja en growth y GTM; y Barbanegra se encarga del debugging, la investigación y esas cosas medio turbias que siempre terminan apareciendo.

Screenshot from the original article

Hermes vive en mi servidor. Está encendido todo el tiempo, separado de mi laptop y cada especialista corre en su propio perfil. Justo para ese setup escribí este tutorial.

Buzz
│
├── DM con Gloria ────── Hermes: perfil default
├── DM con Aurelio ───── Hermes: perfil aurelio
├── DM con Gulliver ──── Hermes: perfil gulliver
└── DM con Barbanegra ── Hermes: perfil barbanegra
│
└── gateway permanente en el servidor

Si Hermes corre en la misma computadora donde tienes Buzz Desktop, probablemente no necesitas hacer todo esto. Buzz tiene un adapter nativo para Hermes mediante ACP: el desktop puede lanzar y administrar el runtime local, además de inyectar la configuración que necesita. Esa es la ruta corta.

Mi caso era otro. Yo quería que los agentes siguieran disponibles aunque cerrara la laptop, que conservaran sus perfiles de Hermes en el servidor y que Buzz fuera la sala donde los encuentro. Para eso usé el gateway de Hermes y `buzz-cli`.

Una aclaración medio importante: en la comunidad de Buzz agregué a los agentes de Hermes como personas, no usando la función de “crear agente” de Buzz.

Cada uno entra como un miembro con su propia identidad Nostr, nombre, avatar, descripción, DMs y permisos de canal. Buzz no necesita saber que detrás de Aurelio corre un proceso de Hermes en otro servidor. Para la comunidad es una persona más, sólo que esa persona nunca duerme y generalmente es más inteligente que tu y que yo.

Requerimientos

Usé tres cosas:

  1. Hermes Agent ejecuta cada perfil, guarda su personalidad, herramientas y memoria, y mantiene el gateway encendido.
  2. Buzz es la comunidad donde convivimos y coordinamos trabajo.
  3. Nostr le da a cada integrante una identidad criptográfica propia.

Buzz incluye un CLI para agentes. Lee y devuelve JSON, y permite consultar canales, enviar mensajes, publicar perfiles y subir archivos.

Cada integrante de mi equipo tiene una llave, un rol, permisos concretos y su propio historial. Gloria coordina; los demás reciben tareas acotadas y regresan con evidencia. No los solté en un canal para que improvisaran una mesa redonda infinita porque tampoco estoy intentando quemar tokens por deporte.

Puedes hacer casi todo hablándole a Hermes

Voy a incluir algunos comandos porque ayudan a entender qué está pasando y sirven cuando algo falla, pero la realidad es que mi mismo hermes hizo casi todo el setup.

Hermes tiene terminal, acceso a archivos y capacidad para verificar resultados. Le puedes pedir la instalación completa en lenguaje normal, siempre que le marques los límites de seguridad.

Algo así fue mi prompt a Gloria, mi Chief of Staff (y default profile de hermes):

Instala buzz-cli desde https://github.com/block/buzz en este servidor.
Usa la toolchain Hermit del repositorio si está disponible.
Instala el binario en ~/.local/bin, verifica que buzz --help funcione
y no levantes un relay local porque voy a conectarme a una comunidad existente.

Después:

Crea un perfil independiente de Hermes llamado aurelio.
Su rol será contador operativo de DNI. Configura su personalidad y herramientas, pero no copies sesiones, memoria ni secretos del perfil principal. Verifica el perfil al terminar.

Y para la identidad:

Genera una identidad Nostr nueva para Aurelio usando buzz-admin. Guarda la llave privada solamente en el .env de su perfil con permisos 0600.
No muestres la llave privada en el chat ni en logs. Entrégame únicamente la llave pública para agregarla a Buzz.

Ese último detalle importa. Un agente con terminal puede hacer el trabajo sin pegar el secreto de regreso en la conversación.

Yo le pedí a Gloria algo más completo:

Crea el perfil aurelio como contador operativo de DNI.
Omar conserva la aprobación final sobre impuestos, pagos y presentaciones.
Gloria será su jefa operativa. Aurelio puede conciliar, clasificar y preparar análisis, pero nunca presentar declaraciones ni mover dinero sin autorización explícita. Escribe su SOUL.md, configura un modelo adecuado y verifica el perfil con Hermes.

Con eso Hermes crea el perfil y también deja documentada la cadena de mando. El comando crea una carpeta; una buena instrucción crea un integrante útil.

Repetí el patrón para los demás colaboradores de la compañía.

Configurar el relay y los permisos

El `.env` de cada perfil lleva algo parecido a esto:

BUZZ_PRIVATE_KEY=<LLAVE_PRIVADA_DEL_AGENTE>
BUZZ_RELAY_URL=https://tu-comunidad.communities.buzz.xyz
BUZZ_ALLOWED_USERS=<PUBKEY_DE_OMAR>,<PUBKEY_DE_GLORIA>
BUZZ_REQUIRE_MENTION=true

`BUZZ_ALLOWED_USERS` recibe pubkeys de Nostr, no nombres visibles ni usuarios de Telegram. Autoricé mi identidad y la de Gloria para que los especialistas no aceptaran instrucciones de cualquier persona que apareciera en el canal.

También dejé `BUZZ_REQUIRE_MENTION=true`. Aurelio responde cuando lo invoco; no cada vez que alguien escribe “factura”.

Le puedes pedir a Hermes:

Configura el perfil aurelio para conectarse por HTTPS a mi relay de Buzz. Autoriza solamente las pubkeys de Omar y Gloria y exige mención explícita. No muestres ni reemplaces BUZZ_PRIVATE_KEY. Valida las variables por nombre, los permisos del archivo y dime qué requiere reinicio.

Agregar al integrante como persona en Buzz

Esta parte ocurre en la interfaz de Buzz.

No usé “Create agent”. Fui a los miembros de la comunidad y agregué la pubkey como agregaría a una persona:

Screenshot from the original article

  1. Abrí `Invite to community`.
  2. Pegué la llave pública que me entregó Hermes.
  3. Agregué la identidad como `Member`.
  4. La añadí por separado a los canales privados que necesita.

No importé la llave privada en Buzz Desktop. La pública basta para admitir al integrante; la privada permanece en el servidor donde corre Hermes.

La membresía de comunidad y la de canal son independientes. Aurelio puede aparecer en la comunidad y seguir sin ver el canal contable.

Si el CLI devuelve:

403 relay_membership_required

La URL y la red ya respondieron. Falta admitir esa pubkey en la comunidad.

Puedes pedirle a Hermes que prepare esta parte y espere tu acción:

Prueba la conexión de Aurelio al relay sin revelar su llave privada. Si el relay pide membresía, dame la pubkey exacta y detente para que yo lo agregue como persona en Buzz. Después vuelve a probar cuando te confirme.

Hermes prepara y verifica; tú controlas quién entra a la comunidad.

Ponerles nombre y descripción a tus agentes

Después de admitir a Aurelio, Hermes todavía fallaba con:

Buzz: 'users get' returned no profile

La identidad era miembro, pero no había publicado su metadata Nostr.

Puedes decirle a Hermes:

Ya agregué a Aurelio como persona en la comunidad. Publica su perfil de Buzz con un nombre y descripción fieles a su SOUL.md. Consulta el perfil después de escribirlo y verifica que pueda listar sus canales. No cambies su llave.

Así terminamos actualizando las descripciones de todo el equipo .

Subir el avatar

Porque los avatars que tienen por default en Buzz son aburridos, hay que darle estilo; Buzz guarda media con Blossom.

Terminal window
buzz upload file --file ./aurelio.jpg

El CLI devuelve JSON con la URL y el SHA-256. Usa esa URL al volver a publicar el perfil:

Terminal window
buzz users set-profile \
--name "Aurelio" \
--about "Contador operativo de DNI. Conciliación, CFDI, cierres mensuales y evidencia fiscal trazable." \
--avatar "https://tu-comunidad.communities.buzz.xyz/media/archivo.jpg"

Manda nombre, descripción y avatar juntos para conservar la metadata completa.

En mi caso las imágenes ya existían en Telegram. Le pedí a Hermes:

Recupera la foto actual del bot de Telegram de Aurelio sin mostrar su token. Verifica visualmente que corresponde a Aurelio, súbela a Buzz con su identidad, actualiza nombre, descripción y avatar, y descarga el archivo por el flujo autenticado para confirmar que el SHA-256 coincide. Elimina archivos temporales al terminar.

Hermes recuperó los cuatro avatares y los subió. Yo solamente pedí el resultado y revisé las fotos.

Usar el DM como home channel

El home channel es donde Hermes entrega cron jobs, notificaciones y mensajes que no traen otro destino.

Uso el DM entre cada persona y yo. Evita que una tarea programada publique algo privado en `general` a las 3 AM.

Abre el DM con el agente desde Buzz y escribe:

/sethome

Screenshot from the original article

Instalar el gateway remoto

El gateway mantiene al perfil conectado aunque mi laptop esté cerrada.

Instala el gateway del perfil aurelio como servicio de usuario, arráncalo y comprueba que sobreviva. Revisa el estado y los logs. No digas que Buzz está conectado hasta encontrar una confirmación real del adapter.

Cambiar el `.env` no modifica un proceso que ya está corriendo. Si actualizas el relay, allowlist, llave o home channel, reinicia el gateway.

Esta capa es la que tiene sentido en un servidor remoto. Si todo corre local en tu computadora, revisa primero el adapter ACP de Hermes dentro de Buzz Desktop; te evita mantener este gateway por separado.

Cuando conecta pero no responde

Mis especialistas aparecían conectados y recibían mensajes, pero cuando les hablaba, solo reaccionaban pero no respondían nada....

Los logs decían:

Unauthorized user: ... (omar) on buzz

Mi pubkey no estaba en `BUZZ_ALLOWED_USERS`. Después de agregarla y reiniciar, respondieron.

Les mandé esto en Buzz

@Aurelio responde solamente: AURELIO OK

Screenshot from the original article

Errores que ya no tienes que descubrir tú

buzz connect timed out after 30s

Revisa que el relay use `https://`.

403 relay_membership_required

La identidad sí pudo conectar con el relay, pero todavía no pertenece a la comunidad, tienes que tener su clave pública e invitarlo a la comunidad

users get returned no profile

La "persona" ya es miembro y aún no publica nombre y metadata con `buzz users set-profile`.

Unauthorized user on buzz

La pubkey de quien invocó al agente no aparece en `BUZZ_ALLOWED_USERS`.

Está en la comunidad pero no ve el canal

Agrégala a ese canal. La membresía general no abre los canales privados.

No home channel is set for Buzz

Abre el DM y manda `/sethome`.

Editaste `.env` y nada cambió

Reinicia el gateway. Los procesos todavía no releen variables por telepatía.

Las reglas de seguridad que me quedaron

Uso una identidad Nostr por persona. Cada llave privada vive solamente en el `.env` de su perfil, con permisos `0600`. No pego privadas en chats, screenshots, tickets ni comandos que queden en el historial.

La allowlist está cerrada por pubkey, los especialistas requieren mención y cada uno ve solamente los canales que necesita. Los home channels son DMs.

Hermes puede instalar, configurar y verificar casi todo, pero las decisiones sensibles siguen siendo mías: admitir personas a la comunidad, mover dinero, presentar impuestos, publicar, contratar servicios o aceptar compromisos externos.

Cómo quedó mi equipo

Gloria es mi Chief of Staff. Aurelio lleva la operación contable de DNI. Gulliver trabaja growth y GTM. Barbanegra toma las investigaciones técnicas y los problemas difíciles.

En Buzz aparecen como personas con nombre, foto, descripción y presencia propia. En el servidor son perfiles independientes de Hermes con llaves, memoria, herramientas y gateways separados.

Yo hablo principalmente con Gloria. Ella divide las misiones, pide evidencia a los especialistas y regresa con una entrega integrada. El servidor sigue trabajando cuando mi laptop está cerrada, que era el punto de montar todo así.

Repositorio de Buzz: https://github.com/block/buzz

Hermes Agent: https://github.com/NousResearch/hermes-agent

Documentación de Hermes: https://hermes-agent.nousresearch.com/docs/