Dos Gmails, un solo Hermes: las cuentas de los connectors por fin tienen nombre


Nueve de la mañana: le preguntas a Hermes en el chat si hoy ha caído algo importante en tu bandeja de entrada. Abre el correo personal que creaste para un proyecto de fin de semana, y la respuesta del cliente que llevas esperando en tu correo del trabajo se queda ahí, sin que nadie la lea. Así que le sueltas «quería decir el del trabajo» — y lo mejor que sabe responderte es «Gmail está conectado», porque, sinceramente, no sabe nada más.

El modelo no estaba siendo torpe. Hermes conocía exactamente un login conectado por app, sin nombre y sin una segunda cuenta entre la que elegir.

Una app, una sola cuenta

Hermes llega a las apps externas a través de connectors: el gateway los hospeda como tools con nombres del tipo connectors__gmail__SEND_EMAIL, que encuentras con tool_search y llamas con tool_call. En ese modelo, la versión antigua daba por hecho que había una cuenta por app, y las consecuencias eran muy concretas:

  • Un segundo login de Gmail no tenía ningún nombre que el modelo pudiera usar, así que elegía la cuenta más reciente;
  • reconnect gmail consultaba el flag «connected» de todo el connector. Con una cuenta sana y otra caducada, respondía que estaba conectado y no reparaba nada;
  • Una tarjeta de conexión de Gmail ya abierta se reutilizaba para cualquier otra petición de conexión de Gmail;
  • Los resultados nunca decían bajo qué cuenta se había ejecutado una llamada.

Para una persona en una sola máquina eso es solo una molestia. Pero en cuanto el mismo gateway sirve a más de una persona, se convierte en un problema de control de acceso: el mismo muro con el que se topó la comunidad en el issue #15602, al conectar un único gateway de Hermes al Gmail de dos personas a la vez.

Las cuentas estrenan nombre: el alias

La nueva versión da a cada cuenta un nombre corto, llamado alias en el formato de datos: de 1 a 32 letras minúsculas, dígitos o guiones, empezando por una letra o un dígito. Una cuenta sin alias se muestra con la etiqueta que da la propia app.

La regla es sencilla: en cuanto una app tiene dos cuentas activas, el gateway añade un campo connector_alias al schema de la tool de ese connector, con la lista de nombres que puede aceptar. El modelo pasa uno en la llamada:

tool_call  connectors__gmail__SEND_EMAIL
           {"connector_alias": "work", ...}

El resultado devuelve account, y la etiqueta en vivo de la tool se renderiza como Gmail · send email (work). De un vistazo sabes con qué identidad salió el correo.

Además del nombre, cambiaron otras cosas:

  • Los objetos target de manage_connections aceptan alias (qué cuenta) y to (el nombre nuevo), más una acción rename. Una llamada con alias arrastra ese único target; los targets MCP rechazan ambos campos;
  • connect con nombre le pide esa cuenta al gateway: añade una nueva, o responde connected cuando ya hay una cuenta activa con ese nombre;
  • reconnect con nombre lee la fila propia de esa cuenta en lugar del flag global del connector, así que repara la rota mientras la sana sigue funcionando. Si esa fila no se puede leer, la tool reporta el error en vez de crear una cuenta nueva sin avisar;
  • status lista las cuentas de cada connector con alias, label, status y active.

El CLI: hermes connectors

Un comando nuevo cubre listar, conectar, renombrar y eliminar:

hermes connectors list
hermes connectors accounts
hermes connectors accounts gmail --all
hermes connectors connect gmail --alias home
hermes connectors rename gmail work --to office
hermes connectors disconnect gmail --alias home --yes
Subcomando Qué hace
list (alias ls) Todos los connectors y si están conectados
accounts [app] [--all] Cuentas conectadas; las filas retiradas se pliegan salvo que pases --all
connect <app> [--alias NAME] [--reconnect] [--force] Conecta una cuenta nueva; --reconnect repara una rota; --force vuelve a iniciar sesión en una sana
rename <app> <name-or-label> --to <new> Renombra una cuenta
disconnect <app> [--alias NAME] [--yes] Elimina una cuenta; con stdin no interactivo hace falta --yes

Detalles que conviene conocer antes de teclearlos:

  • connect imprime el enlace de login y espera hasta que la cuenta se asiente o venza el plazo. Ctrl-C cierra el connect abierto y sale con 130, para que el siguiente connect de esa app no se quede bloqueado;
  • Un nombre que rompa el formato, o que ya tenga otra cuenta viva de la misma app, se rechaza antes de que salga ninguna petición;
  • Si una app tiene más de una cuenta, un comando sin --alias da error y te lista los nombres entre los que puedes elegir.

El overlay /connectors en el TUI

Escribe /connectors en la interfaz de terminal y se abre un overlay flotante, con una fila por cuenta que muestra app, nombre y estado:

  • r renombra ahí mismo — Enter guarda, Esc cancela;
  • a añade una cuenta: elige la app, escribe un nombre, abre el enlace. El overlay espera hasta que la cuenta se asiente, el enlace caduque o el gateway rechace;
  • c reconecta la cuenta seleccionada. Nunca borra nada, una cuenta sana responde connected al momento, y una fila sin nombre te pide que la nombres primero;
  • x elimina la cuenta seleccionada tras el prompt de confirmación compartido del TUI;
  • Tab muestra o pliega las cuentas retiradas, que no se pueden reconectar mientras estén plegadas.

Se aplica una regla conservadora de principio a fin: mientras haya una pregunta o confirmación del agente abierta, el overlay deja de leer teclas, así que responder a un prompt no puede borrar una cuenta por accidente.

La app de escritorio

En Capabilities → Connectors, cada app lista ahora todas sus cuentas, con acciones para nombrar, renombrar, añadir, reconectar y eliminar; eliminar pasa por una confirmación. Cuando el agente nombra una cuenta nueva, el chat dice qué nombre eligió — por ejemplo «Hermes ha llamado work a esta cuenta de Gmail. Cámbialo cuando quieras.» El nombre lo elige el agente; no hay ningún prompt de nombre que responder.

Salvedades

  • Hace falta iniciar sesión en el Nous Portal. Los connectors son tools hospedadas, así que hermes login va primero; sin eso, el comando te pide que inicies sesión en lugar de fallar con algo indescifrable.
  • Renombrar depende del Portal. Hasta que el Portal publique la ruta de rename, rename responde «This Nous Portal cannot rename connector accounts yet.» y el editor de escritorio muestra ese rechazo y restaura el nombre anterior. Todo lo demás funciona.
  • Eliminar una cuenta sigue siendo cosa tuya. El CLI te pide confirmación, el escritorio te pide un clic. Ningún flujo automático borra una cuenta por ti.
  • Status: este trabajo (PRs #135097 / #135151 / #135173) se fusionó en main el 2026-10-11. La release etiquetada actual, v0.21.6 del 8 de octubre, todavía no lo incluye — llegará con la próxima release.
  • Los connectors solo existen para cuentas de Nous con sesión iniciada, y por eso hermes connectors list puede responder «Connectors are not available. Sign in with hermes login first.»

Para terminar

«Usa la del trabajo» ya es algo que el agente puede llevar de verdad a la práctica: la cuenta tiene nombre, el modelo lo indica en la llamada, el resultado dice qué identidad se ejecutó y una reparación toca solo la cuenta rota. Poner un nombre te cuesta un comando y te compra trazabilidad en cada acción de salida — algo que importa mucho más que la comodidad cuando una máquina guarda a la vez tus logins del trabajo y los personales.

Si la propia capa de connectors es nueva para ti, empieza por cómo funciona la búsqueda de tools y luego mira de dónde salen las tools hospedadas en el catálogo oficial de MCP remoto. ¿Instalas Hermes por primera vez? La guía de instalación es el punto de partida.