Hermes multi-institución sin conflictos: guía completa de perfiles


Cuando la gente prueba Hermes por primera vez, suele meter todo en la sesión por defecto: programar, correos, investigación, tareas programadas, todo mezclado. En poco tiempo la memoria se confunde, la personalidad se desdibuja y la factura de la API resulta imposible de atribuir.

Hermes tiene una respuesta más elegante: los perfiles. Un perfil es un directorio home de Hermes independiente con su propio:

  • config.yaml (modelo, herramientas, configuración del gateway)
  • .env (claves API, tokens de bot)
  • SOUL.md (personalidad / prompt del sistema)
  • memories/ (memoria)
  • sessions/ (historial de conversaciones)
  • skills/ (habilidades)
  • cron (tareas programadas)
  • estado del gateway

Piensa en ello como ejecutar varias instancias aisladas de Hermes en una sola máquina. Esta guía te muestra cómo convertir esa máquina en un verdadero estudio de IA multi-inquilino.


1. Inicio rápido: crear un perfil de programación

hermes profile create coder
coder setup
coder chat

Tres líneas. coder es ahora un comando propio con su propia configuración, memoria y sesiones. Puedes:

coder config set model.default anthropic/claude-sonnet-4
echo "Eres un ingeniero senior especializado en Python e infraestructura." > ~/.hermes/profiles/coder/SOUL.md
coder chat

Mientras tanto, hermes chat sigue sin verse afectado.


2. Qué es realmente un perfil: aislamiento por HERMES_HOME

Hermes decide dónde está “home” mediante la variable de entorno HERMES_HOME. El comando coder chat es esencialmente:

HERMES_HOME=~/.hermes/profiles/coder hermes chat

Como get_hermes_home() se usa en más de 119 lugares, la configuración, memoria, sesiones, habilidades, PID del gateway, logs y cron se scopan automáticamente a ese directorio.

Pero atención: un perfil no es un sandbox. En el backend de terminal local por defecto, Hermes sigue ejecutándose como tu usuario del sistema operativo y puede acceder a todo el sistema de archivos. Para aislamiento del sistema de archivos, usa Docker.


3. Tres formas de crear un perfil

3.1 Perfil en blanco

hermes profile create mybot

Crea un perfil nuevo con skills incluidos. Luego ejecuta mybot setup para configurar las claves API.

3.2 Clonar solo la configuración (--clone)

hermes profile create work --clone

Copia el config.yaml, .env, SOUL.md y skills del perfil actual. Mismo modelo y capacidades, pero memoria y sesiones nuevas.

Ideal para: mismo modelo, diferente personalidad o directorio de trabajo.

3.3 Clonar todo (--clone-all)

hermes profile create backup --clone-all

Copia todo: configuración, claves, personalidad, todas las memorias, habilidades, cron. Una instantánea de trabajo.

Nota: el historial de sesiones, state.db, backups, state-snapshots y checkpoints se excluyen porque pueden pesar decenas de GB. Para un backup completo incluyendo historial, usa hermes profile export o hermes backup.

3.4 Clonar desde un perfil específico

hermes profile create work --clone-from coder
hermes profile create work-backup --clone-from coder --clone-all

3.5 Añadir descripción para el enrutamiento de kanban

hermes profile create researcher --description "Lee código fuente y documentación externa, escribe hallazgos."

El orquestador de kanban usa esta descripción para enrutar tareas al perfil adecuado.


4. Cambiar y usar perfiles

Alias de comandos automáticos

Cada perfil obtiene un wrapper en ~/.local/bin/<name>:

coder chat
personal-bot gateway start
research config set model.default openai/gpt-4o

Flag explícito -p

hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "hello"    # funciona en cualquier posición

Default pegajoso (hermes profile use)

hermes profile use coder
hermes chat          # ahora apunta a coder
hermes profile use default

Como kubectl config use-context.

Saber dónde estás

  • El prompt cambia a coder ❯
  • El banner de inicio muestra Profile: coder
  • hermes profile muestra nombre, ruta, modelo y estado del gateway

5. Múltiples gateways: un bot por perfil

Cada perfil puede ejecutar su propio gateway:

coder gateway start
personal-bot gateway start
research gateway start

Cada gateway es un proceso independiente con su propio token de bot. Configura tokens diferentes de Telegram/Discord/Slack por perfil:

nano ~/.hermes/profiles/coder/.env
nano ~/.hermes/profiles/personal-bot/.env

Seguridad: bloqueo de tokens

Si dos perfiles usan accidentalmente el mismo token de bot, el segundo gateway falla e indica el perfil conflictivo. Soportado en Telegram, Discord, Slack, WhatsApp y Signal.

Servicios persistentes

coder gateway install      # crea el servicio hermes-gateway-coder
personal-bot gateway install

Los servicios systemd/launchd son independientes y se reinician de forma independiente.

Script de gestión masiva

Guarda esto como ~/.local/bin/hermes-gateways:

#!/bin/sh
set -eu

profiles="default coder personal-bot research"

usage() {
  echo "Usage: hermes-gateways {start|stop|restart|status|list}"
}

run_for_profile() {
  profile="$1"
  action="$2"
  if [ "$profile" = "default" ]; then
    hermes gateway "$action"
  else
    hermes -p "$profile" gateway "$action"
  fi
}

action="${1:-}"
case "$action" in
  start|stop|restart|status)
    for profile in $profiles; do
      echo "==> $action $profile"
      run_for_profile "$profile" "$action"
    done
    ;;
  list)
    hermes gateway list
    ;;
  *)
    usage
    exit 2
    ;;
esac

Luego:

chmod +x ~/.local/bin/hermes-gateways
hermes-gateways start
hermes-gateways stop
hermes-gateways restart
hermes-gateways status

6. Multiplexación: un gateway para todos los perfiles

Cuando tienes muchos perfiles, ejecutar un proceso por perfil se vuelve pesado. Hermes soporta multiplexación: solo corre el gateway del perfil por defecto, y este sirve los mensajes entrantes de todos los perfiles.

Activarla

hermes config set gateway.multiplex_profiles true
hermes gateway restart

O en ~/.hermes/config.yaml:

gateway:
  multiplex_profiles: true

Qué cambia en modo multiplexado

  1. Los perfiles secundarios no pueden iniciar su propio gateway Si coder ya es atendido por el multiplexor, ejecutar coder gateway start dará error.

  2. Las plataformas HTTP usan el prefijo /p/<profile>/

    POST http://host:8644/webhooks/<route>          # perfil por defecto
    POST http://host:8644/p/coder/webhooks/<route>  # perfil coder

    Las plataformas de enlace de puerto (webhook, api_server, msgraph_webhook, feishu, wecom_callback, bluebubbles, sms, whatsapp_cloud, line) solo se pueden configurar en el perfil por defecto. Los demás perfiles se alcanzan mediante el prefijo.

  3. Las plataformas de sondeo/conexión aún necesitan un token por perfil Telegram, Discord, Slack, Matrix, Signal, etc. funcionan multiplexados, pero cada perfil debe tener su propio token de bot. Dos perfiles no pueden sondear el mismo par (plataforma, token).

  4. Las claves de sesión se namespacing por perfil agent:<profile>:... asegura que dos perfiles en la misma plataforma/chat nunca colisionen. El perfil por defecto conserva el namespace histórico agent:main:....

  5. Un solo PID, lock y superficie de estado hermes status informa el multiplexor y los perfiles que sirve; hermes status -p coder muestra solo coder.

Cuándo usar multiplexación

  • Despliegues en contenedor/VPS donde N unidades de supervisor son una carga.
  • Muchos perfiles de bajo tráfico que no justifican un proceso cada uno.
  • Quieres una única cosa para iniciar, monitorear y reiniciar.

Cuándo no usarla:

  • Necesitas aislamiento a nivel de proceso.
  • El fallo de un perfil no debe afectar a los demás.
  • Quieres reiniciar un perfil de forma independiente.

7. Rutas de perfil: asignar comunidades distintas a agentes distintos

Cuando varias comunidades comparten un mismo token de bot — por ejemplo un bot de Discord sirviendo muchos guilds — puedes enrutar guilds/canales/hilos específicos a diferentes perfiles:

gateway:
  multiplex_profiles: true
  profile_routes:
    - name: acme-server
      platform: discord
      guild_id: "1234567890"
      profile: acme

    - name: acme-support
      platform: discord
      guild_id: "1234567890"
      chat_id: "9876543210"
      profile: acme-support

    - name: tg-group
      platform: telegram
      chat_id: "-1001234567890"
      profile: tg-profile

Reglas de coincidencia

  • Todos los campos declarados deben cumplirse (AND).
  • Los campos no declarados se ignoran.
  • Especificidad: thread_id (8) > chat_id (4) > guild_id (2) > solo plataforma.
  • Una ruta con chat_id también coincide con hilos/posts de foro cuyo padre sea ese canal.

Si una ruta nombra un perfil que no existe, los mensajes vuelven al perfil por defecto.


8. Directorio de trabajo y aislamiento de HOME

Establecer un directorio de trabajo por defecto

Si quieres que un perfil arranque en una carpeta de proyecto específica:

terminal:
  backend: local
  cwd: /absolute/path/to/project

Nota: cwd: "." en el backend local significa “el directorio desde el que se lanzó Hermes”, no el directorio del perfil.

HOME por perfil

Por defecto, las instalaciones en host conservan el HOME real del usuario del SO para que herramientas como git, ssh, gh, npm, Claude Code y Codex reutilicen credenciales existentes. La contrapartida es que los perfiles comparten el estado CLI a nivel de usuario.

Para un aislamiento CLI estricto por perfil, configura:

terminal:
  home_mode: profile

Hermes lanza subprocesos con HOME={HERMES_HOME}/home. Deberás inicializar ~/.ssh, ~/.gitconfig, ~/.config/gh, etc. específicos dentro del home de ese perfil.

Hermes también expone HERMES_REAL_HOME para que los scripts puedan encontrar el home real de la cuenta.


9. Distribuciones de perfiles: compartir un agente completo

Una distribución de perfil empaqueta un agente Hermes completo como repositorio git:

my-research-agent/
├── distribution.yaml    # manifiesto
├── SOUL.md            # personalidad
├── config.yaml        # configuración
├── skills/            # habilidades incluidas
├── cron/              # tareas programadas
└── mcp.json           # servidores MCP

Instálalo con un comando:

hermes profile install github.com/you/my-research-agent --alias

Luego ejecútalo:

my-research-agent chat
my-research-agent gateway start

Actualízalo con:

hermes profile update my-research-agent

Qué no se incluye en una distribución

  • auth.json, .env y otros secretos;
  • memories/, sessions/, state.db, logs (datos del usuario);
  • checkpoints, backups, caches.

Cada persona aporta sus propias claves API y memorias; lo compartido es personalidad + habilidades + configuración.


10. Gestión de perfiles

hermes profile list           # listar todos los perfiles
hermes profile show coder     # ver detalles de un perfil
hermes profile rename coder dev-bot   # renombrar (actualiza alias + servicio)
hermes profile export coder   # exportar a coder.tar.gz
hermes profile import coder.tar.gz  # importar desde archivo
hermes profile delete coder   # eliminar (requiere confirmación)
hermes profile delete coder --yes  # forzar eliminación

No puedes eliminar el perfil por defecto. Para borrar todo, usa hermes uninstall.


11. Errores comunes y recomendaciones

Error común Enfoque correcto
Tratar un perfil como sandbox Los perfiles aíslan el estado de Hermes, no el sistema de archivos. Usa Docker para aislamiento de archivos.
Dos perfiles comparten un token de bot Cada plataforma de sondeo/conexión de cada perfil necesita su propio token.
Configurar plataformas de enlace de puerto en perfiles secundarios multiplexados Configura webhook/api_server/feishu/etc. solo en el perfil por defecto; alcanza los demás vía /p/<profile>/.
Creer que cwd: "." es el directorio del perfil En backend local significa el directorio de lanzamiento; usa una ruta absoluta para fijar el proyecto.
Fuga de memoria en Hermes compartido Crea perfiles separados para distintos propósitos; cada uno tiene su propia memoria.
Skills desincronizados tras actualizar hermes update sincroniza automáticamente los skills incluidos en todos los perfiles.

12. Una disposición multi-perfil recomendada

Si estás planificando desde cero, considera:

Perfil Propósito Modelo Toolsets
default Preguntas generales diarias modelo ligero herramientas básicas
coder Código, revisión, refactorización modelo de código fuerte code-wiki, git, docker
writer Documentación, blogs, copy modelo de contexto largo web, memory
research Investigación, papers, análisis de competencia modelo de razonamiento arxiv, web, browser
ops Despliegues, monitoreo, CI/CD modelo de herramientas fuerte docker, ssh, cron
personal-bot Asistente personal en Telegram/Discord modelo de chat plataformas de gateway

Cada perfil tiene su propia personalidad, memoria y claves API. Sin conflictos.


Conclusión

Los perfiles de Hermes no son simplemente “varias cuentas”. Son un sistema completo de aislamiento de estado multi-inquilino que te permite ejecutar varios agentes especializados en la misma máquina, cada uno con su propia identidad, memoria y herramientas.

Cuando un Hermes no sea suficiente, no fuerces todos los contextos en una sola sesión. Tómate dos minutos para crear un perfil. Descubrirás que cuando tus agentes de IA no compiten por el estado compartido, se vuelven mucho más útiles.