v0.20.5 — Libre y de código abierto · MIT

Tu agente de IA
autoconsciente

etheroiHermes Agent es el único agente con un bucle de aprendizaje integrado: crea habilidades desde la experiencia, las mejora durante el uso, busca en sus propias conversaciones pasadas y construye un modelo cada vez más profundo de quién eres — en tu terminal, Telegram, Discord, Slack, o como app de escritorio.

Scroll

La escala de lo posible

Un agente completo, no un wrapper. Todo esto corre en tu máquina — local, en un VPS de $5, o en infraestructura serverless.

40+
Herramientas integradas
7
Plataformas de mensajería
300+
Modelos compatibles
MIT
Licencia open source

Habla con tu agente donde estés

Un solo proceso de gateway conecta tu agente a siete plataformas. La conversación continúa sin interrupciones cuando cambias de canal — lo que dijiste en Telegram, tu agente lo recuerda en Discord.

✈️

Telegram

bot · grupos · canales

El bot más completo. Conversación en DM, en grupos con control de acceso, y reply a mensajes. Transcripción automática de notas de voz.

  • DM 1:1 sin restricciones
  • Grupos con allowlist / allowall
  • Reply quoting — el agente entiende el contexto
  • Notas de voz → texto (STT) → respuesta
  • Adjuntos: imágenes, documentos, audio
  • Topic threads ( chats delirantes )
  • Persistencia cross-platform
💬

Discord

servidor · canales · hilos

Se conecta a un servidor completo. Responde en canales públicos, hilos, y DMs. Streaming de respuestas en tiempo real.

  • Cualquier canal de texto o hilo
  • Streaming de respuestas (no aparece de golpe)
  • Mención para invocar — @etheroiHermes
  • Integración continua con el resto del servidor
  • Permisos granulares por rol
🔶

Slack

app · canal · hilo · DM

App de Slack con soporte para canales, hilos de conversación y mensajes directos. Ideal para equipos que ya usan Slack como hub.

  • Canales públicos y privados
  • Hilos de conversación (contexto persistido)
  • DM con el bot
  • Mensajes slash: /hermes
  • Aprobación de comandos peligrosos
📱

WhatsApp

número · multiusuario

Tu agente en el chat que ya usas a diario. Un número de WhatsApp con el que conversar como con cualquier contacto.

  • Conversación fluida 1:1
  • Envío y recepción de imágenes
  • Notas de voz transcritas automáticamente
  • Sin necesidad de aprender una nueva app
🔒

Signal

privacidad · cero conocimiento

Para usuarios que priorizan la privacidad. Signal soporta comunicación cifrada de extremo a extremo — tu agente escucha sin interrumpir el cifrado.

  • Cifrado E2E nativo
  • Grupos de Signal
  • Mínimo footprint en el servidor
  • Ideal para conversaciones sensibles
💻

CLI nativa

terminal interactiva · TUI

La interfaz de terminal completa con edición multilínea, autocompletado, historial, interrupción, y output de herramientas en streaming. También TUI con React + Ink.

  • CLI interactiva con prompt_toolkit
  • TUI completa con React + Ink
  • Terminal integrado en la app de escritorio
  • Streaming de herramientas en tiempo real
  • /comandos de barra riches
📬

Email · Webhooks

extensibilidad · integración

etheroiHermes también atiende por email (SMTP/IMAP) y acepta eventos externos vía webhooks — útil para automatizaciones que desencadenan conversaciones.

  • Recibir y responder correos
  • Webhooks HTTP entrantes
  • CADENA de triggers externos
  • Integración con Home Assistant
Continuidad cross-platform: una conversación que empieza en Telegram continua en Discord o CLI sin perder contexto. El agente modela quién eres — no importa cómo te comuniques.

Todo lo que tu agente necesita

Un agente de IA completo que vive donde tú estás — terminal, mensajería, escritorio — y mejora con cada uso. Más de 40 herramientas integradas, cualquier modelo, y un sistema de aprendizaje que funciona para ti.

🧠

Bucle de aprendizaje cerrado

Crea habilidades automáticamente tras tareas complejas. Las habilidades se auto-mejoran durante el uso. Memoria persistente que construye un modelo de quién eres.

/skills para verlas, /insights para revisar lo aprendido.

🗣️

Cualquier modelo de IA

Anthropic, OpenAI, OpenRouter (300+ modelos), Nous Portal, Gemini, Mistral, Groq, LM Studio, Ollama, y más. Cambia con /hermes model sin tocar código.

Soporta chat completions, streaming, y herramientas (tool calling) nativas.

💻

Terminal real + backends

CLI con edición multilínea y autocompletado. TUI en React + Ink. Seis backends de terminal: local, Docker, SSH, Singularity, Modal, Daytona — algunos con persistencia serverless.

Ejecuta comandos de shell, scripts Python, y herramientas de forma segura.

🌐

Web + búsqueda

Navegación web real (Browser Use), búsqueda en la web, extracción de contenido. El agente puede researchar, leer páginas, y reportar lo que encuentra.

Ideal para investigaciones, monitoreo de precios, o seguimiento de noticias.

🎨

Visión · TTS · STT

El agente ve imágenes (vision_analyze), escucha notas de voz (STT), y habla (TTS) con varios proveedores. WhatsApp y Telegram notas de voz funcionan sin configuración extra.

TTS con ElevenLabs, OpenAI, Edge, y más. STT integrado para notas de voz.

Automatizaciones cron

Scheduler cron integrado con entrega a cualquier plataforma. Informes diarios, backups nocturnos, audits semanales — todo en lenguaje natural, sin supervisión.

hermes cron add o /cron desde cualquier plataforma.

🔀

Delega y paraleliza

Lanza subagentes aislados para flujos paralelos. Cada subagente tiene su propio contexto, terminal, y herramientas. Escribe scripts de Python que llamen herramientas vía RPC.

delegate_task para trabajo pesado; background=true para ejecución asíncrona.

🧩

Plugins y MCP

Extiende etheroiHermes con plugins (tools, hooks, comandos CLI) o conectando servidores MCP (Model Context Protocol). Más de 20 plugins incluidos: memoria, model-providers, kanban, imagen, observabilidad.

hermes plugins para gestionar, /hermes mcp para servidores MCP.

💾

Memoria persistente

Memoria curada por el agente con recordatorios periódicos. Búsqueda FTS5 de sesiones con resumen por LLM. Modelado de usuario dialéctico (Honcho). Compatible con el estándar agentskills.io.

Tu agente construye un modelo de quién eres — no solo recuerda hechos.

🖥️

App de escritorio

etheroiHermes Desktop — app Electron con terminal integrado, chat en vivo, composer, pickers de sesión, slash commands, y soporte completo para microcontroller de aprobación.

También disponible web dashboard (hermes dashboard) con chat embebido.

🏗️

Continuidad cross-platform

Empieza en Telegram, continua en Discord, finaliza en CLI. El agente recuerda el contexto completo sin importar el canal. Ideal para cambiar de dispositivo o plataforma fluidity.

Sin interrupciones, sin repetición de contexto.

🔐

Seguridad y controles

Aprobación de comandos peligrosos, emparejamiento por DM, aislamiento en contenedor, y permisos granulares por plataforma. Controle qué puede hacer el agente y quién puede hablar con él.

/hermes security para configurar, hermes doctor para diagnósticos.

Cómo funciona, en detalle

etheroiHermes no es un wrapper sencillo. Es un agente completo con plugables, memoria, aprendizaje, y una arquitectura pensada para ser extendida.

Arquitectura y componentes internos

etheroiHermes es el único agente con un bucle de aprendizaje integrado que funciona sin supervisión:

Creación de habilidades: tras tareas complejas, el agente detecta patrones y genera habilidades automáticas — scripts reutilizables, Knowledge que agrega a su base, y prompts especializados. Para verlas: /skills.

Auto-mejora: las habilidades no son estáticas. Durante el uso, el agente identifica mejoras, optimiza prompts, y refina sus respuestas. Cada sesión es una iteración más.

Memoria persistente: información relevante se guarda en bases de datos (SQLite con FTS5) y en memorias semi-estructuradas. El agente construye un modelo cada vez más profundo de quién eres — tus preferencias, proyectos, estilo de trabajo.

Búsqueda de sesiones: FTS5 sobre el historial de conversaciones + resumen por LLM para recuperar contexto de sesiones pasadas. El agente puede decir "en nuestra conversación de la semana pasada mencionaste esto..."

El gateway es un proceso único que maneja todas las plataformas simultáneamente. No hay procesos separados por canal — uno solo, con toda la lógica centralizada.

Adapteres por plataforma: cada plataforma (Telegram, Discord, Slack, WhatsApp, Signal, Email, Webhook, Home Assistant) tiene su adaptador, todos ellos bajo gateway/platforms/. Nuevas plataformas se agregan sin tocar el core.

Continuidad cross-platform: una conversación puede empezar en Telegram, continuar en Discord, y terminar en CLI. El agente mantiene el contexto completo gracias a un sistema de sesiones unificado.

Transcripción de voz: notas de voz en Telegram y WhatsApp se transcriben automáticamente (STT) antes de llegar al agente — el agente "escucha" lo que dijiste.

Streaming: en plataformas que lo soportan (Discord, Slack), las respuestas se envían parcialmente en tiempo real, no de golpe al final.

etheroiHermes tiene un sistema de plugins diseñado para extensión sin tocar el core. Hay tres categorías de plugins:

  • General plugins (plugins/<name>/): registran herramientas, hooks de ciclo de vida (pre_tool_call, post_llm_call, on_session_start, ...), y comandos CLI. Ej: kanban, observability, disk-cleanup.
  • Memory providers (plugins/memory/<name>/): backends de memoria. Incluidos: Honcho, mem0, supermemory, byterover, hindsight, holographic, openviking, retaindb. El standard está abierto — cada uno implementa la misma ABC.
  • Model-provider plugins (plugins/model-providers/<name>/): cada backend de inferencia es un plugin. Anthropic, OpenAI, OpenRouter, Nous Portal, Gemini, Mistral, etc. Todos se registran con register_provider().

MCP (Model Context Protocol): etheroiHermes puede conectar servidores MCP externos para capacidades adicionales. Esto es lo que permite extender el agente sin modificar el código base.

Regla de política (May 2026): no se agregan nuevos plugins de terceros en-tree. Si tu plugin integra un producto externo (SaaS, dashboard, analytics), publica tu propio repo e instala en ~/.hermes/plugins/.

etheroiHermes no está atado a un modelo. Puedes usar cualquier proveedor que quieras, e incluso mezclar varios:

  • Proveedores integrados: Anthropic, OpenAI, OpenRouter (300+ modelos), Nous Portal, Gemini, Mistral, Groq, LM Studio, Ollama, y más.
  • Cambio dinámico: /hermes model anthropic/claude-sonnet-4-20250514 o /hermes model openrouter/qwen-2.5-72b-instruct. Sin reiniciar, sin configurar.
  • Nous Portal: una suscripción única que cubre modelos, búsqueda web (Firecrawl), generación de imágenes (FAL), TTS (OpenAI), y navegador en la nube (Browser Use). hermes setup --portal para activarlo.
  • Smart model routing: configuración avanzada para routing por tarea — usa un modelo barato para tareas simples y uno potente para reasoning complejo.

El scheduler cron integrado permite tareas programadas con entrega a cualquier plataforma:

  • Formatos de schedule: duración ("30m", "2h"), "every" phrase ("every 2h", "every monday 9am"), expresión cron ("0 9 * * *"), o timestamp ISO para ejecución única.
  • Entrega: a la plataforma origen, a todas las plataformas conectadas, o a una específica. Continuidad para reporting persistente.
  • Scripts de recolección: cada tick puede ejecutar un script de datos que inyecta su salida en el prompt del agente — ideal para monitoreo, scraping, o reports de estado.
  • Sin agente (no_agent): para tareas script-only, el cron ejecuta el script y entrega el stdout directamente, sin invocar al LLM. Watches de memoria, disco, GPU, heartbeats.
  • Hard interrupts: 3 minutos de tiempo máximo por sesión cron para evitar loops runaway. Catch-up window y grace window para ticks perdidos.

delegate_task permite lanzar subagentes aislados para trabajo en paralelo:

  • Leaf agents: trabajadores enfocados, sin capacidad de delegar a su vez. Tienen su propio contexto, terminal, y herramientas.
  • Orchestrators: retienen delegate_task para spawnear sus propios workers (gated por delegation.orchestrator_enabled).
  • Batch paralelo: pasa tasks: [...] para ejecutar múltiples subagentes concurrentes. Capped por delegation.max_concurrent_children (default 3).
  • Background async: con background=true, etheroiHermes devuelve un delegation id inmediatamente y el resultado re- entra en la conversación después.
  • Durability: la delegación es process-local. Para trabajo que debe sobrevivir al reinicio, usa cronjob o terminal(background=True).

etheroiHermes tiene seis backends de terminal, cada uno con diferentes características de ejecución y persistencia:

  • Local: el terminal de tu máquina, con todas las capacidades del sistema.
  • Docker: ejecución aislada en contenedor — ideal para seguridad y reproducibilidad.
  • SSH: conecta a un servidor remoto y ejecuta comandos allí.
  • Singularity: contenedores HPC y entornos de investigación.
  • Modal: serverless con persistencia — el entorno hiberna cuando está inactivo y se activa bajo demanda, costando casi nada entre sesiones.
  • Daytona: similar a Modal, entornos cloud con persistencia y zero-cost cuando idle.

Terminal integrado en la app de escritorio: Electron con terminal real, no solo un widget. Permite ejecutar comandos mientras chateas.

etheroiHermes maneja sesiones persistentes con una base de datos SQLite (FTS5) que permite búsqueda full-text sobre todo el historial:

  • SessionDB: cada conversación es una sesión con ID único, título auto-generado, y historial completo de mensajes.
  • FTS5 search: busca en conversaciones pasadas con consultas booleanas, frases exactas, y wildcards. El agente puede recuperar contexto de sesiones antiguas.
  • Context compression: cuando el contexto se vuelve muy largo, el agente puede comprimirlo manteniendo lo relevante — sin perder información importante.
  • /perfiles: múltiples instancias completamente aisladas, cada una con su propio HERMES_HOME (config, API keys, memoria, sesiones).
  • Archivos de contexto: AGENTS.md y CLAUDE.md en el directorio de trabajo dan contexto de proyecto al agente.

Un bot dentro de otro: tu agente, multiplicado

etheroiHermes no es un bot — es un agente que puede invocarse a sí mismo. Lanza subagentes especializados, en paralelo o en cadena, para delegar work, investigar, o ejecutar tareas en aislamiento. Cada subagente es un agente completo con su propio contexto, terminal, y herramientas — y el padre recibe solo el resumen final.

🌳

Árbol de delegación

subagentes anidados

Cada agente puede spawnear subagentes. Por defecto el árbol es flat (1 nivel), pero se puede profundizar a 2+ niveles configurando delegation.max_spawn_depth.

  • Padre (root): construye el árbol, coordina resultados
  • Hijo level 1: worker enfocado, 병목 없음
  • Nieto level 2: orquestador que further decompose (si depth >= 2)
  • Cada nivel recibe solo el contexto necesario — no todo el historial
🎭

Dos roles, dos responsabilidades

leaf · orchestrator

Cada subagente nace con un rol que determina si puede delegar a su vez:

  • Leaf (default): trabajador enfocado. No tiene la herramienta delegate_task — no puede spawnear. Recibe el goal, hace el work, devuelve el resumen.
  • Orchestrator: retiene delegate_task y puede spawnear sus propios workers. Útil cuando un goal se descompone en subtareas paralelas.
  • Cómo se asigna: pasa role="orchestrator" en delegate_task. Si delegation.orchestrator_enabled=false, todas las peticiones se coercian a leaf.

Batch paralelo

múltiples subagentes simultáneos

Pasa tasks: [...] con varios goals independientes — cada uno corre en su propio subagente concurrentemente, sin esperar al anterior.

  • Config: delegation.max_concurrent_children (default 10, pero el sistema recomienda 3 para control)
  • Casos de uso: research A + B en paralelo, análises de múltiples archivos, pruebas en distintos entornos
  • El padre espera: todos los hijos deben terminar antes de que el padre siga — recibe todos los summaries juntos
  • Background: con background=true, el padre no espera — el resultado re-entra en la conversación cuando esté listo
🔒

Aislamiento fuerte

contexto fresco · herramientas bloqueadas

Cada subagente tiene su propio contexto — nada del historial del padre se filtra. Además, herramientas peligrosas o de side-effect se bloquean automáticamente:

  • delegate_task — no recursión infinita
  • clarify — no interacción con el usuario
  • memory — no escritura en MEMORY.md compartido
  • send_message — no side effects cross-platform
  • cronjob — no scheduling de más trabajo
  • Terminal: el subagente tiene su propia sesión de terminal aislada (task_id propio)
🛠️

La herramienta delegate_task

tool call · schema completo

El modelo invoca delegate_task como un tool call normal. Tiene dos formas:

  • Single: goal + opcional context, toolsets, model, role. El subagente corre y el padre espera el summary.
  • Batch: tasks: [{goal, context, ...}]. Múltiples subagentes paralelos, cada uno con su propio goal.
  • Control post-spawn: los ids de los subagentes se devuelven en la respuesta. Luego puedes action="list", action="steer", o action="stop" sobre ellos.
🎯

Steer e Interrupt

control en tiempo real

Una vez spawneado, un subagente se puede controlar sin detenerlo:

  • Steer: action="steer" + message. El texto se encola y el subagente lo ve en su siguiente tool result — nunca corta una tool call en curso. Útil para corregir rumbo sin perder trabajo.
  • Interrupt: action="stop". Solicita una parada limpia al next iteration boundary. Las tool calls en vuelo son notificadas para cancelarse. El resultado parcial aún se entrega.
  • List: action="list". Snapshot de todos los subagentes vivos: id, parent_id, depth, goal, model, status, running_seconds, live_transcript.
⚙️

Configuración de delegación

config.yaml · delegation.*

Todas las boundaries de delegación se configuran en config.yaml bajo delegation::

  • max_concurrent_children: 3 — cuántos hijos simultáneos como máximo
  • max_spawn_depth: 1 — profundidad del árbol (1 = flat, 2 = permite nietos)
  • orchestrator_enabled: true — permite role="orchestrator" (si false, todo es leaf)
  • subagent_auto_approve: false — aprobación de comandos peligrosos en subagentes (default: denegar, evitar deadlocks de TUI)
  • child_timeout_seconds — timeout por subagente
  • inherit_mcp_toolsets — si el hijo hereda las herramientas MCP del padre
📋

Casos de uso reales

cuándo delegar

La delegación no es magia — es la herramienta correcta para ciertos patrones de trabajo:

  • Investigación paralela: "investiga X y Y simultáneamente" → 2 subagentes leaf, cada uno en una query, padre sintetiza
  • Análisis de codebase: "lee y analiza los archivos A, B, C en paralelo" → batch de 3 subagentes
  • Tareas de ejecución pesada: compilación, test suite, data pipeline → subagente con terminal, padre no se satura de output
  • Orquestación compleja: goal que se descompone en 3+ subtareas interdependientes → orchestrator level 1 spawnea 3 leaves, sintetiza
  • Work variado: "investiga + escribe + prueba" → 3 subagentes con toolsets distintos (web, file, terminal) en paralelo
Límite de profundidad (MAX_DEPTH = 1 por defecto): por seguridad y costo, el árbol es flat — el padre spawnea leaves, y los leaves NO pueden spawnear a su vez. Para árboles de 2+ niveles, configura delegation.max_spawn_depth >= 2 y usa role="orchestrator". Cada nivel adicional multiplica el costo de API tokens, así que el default conservador es deliberate.

Agentes con personalidad — crea bots, dales forma, hazlos hablar

etheroiHermes Desktop incluye un modo de bots (hermes-bots) — un panel lateral que enlista cada uno de tus agentes como un bot con avatar, personalidad y chat propio. Cada bot es un perfil completo de etheroiHermes: su propio SOUL.md, sus herramientas, su modelo, su memoria. Y los bots pueden invocarse entre sí: @mencionando a otro bot desde el chat, delegas trabajo sin salir de la conversación.

H

¿Qué es un Bot?

Un bot = un perfil de etheroiHermes completo

En etheroiHermes Desktop, un bot no es un helper secundario — es un agente completo que vive en tu escritorio con identidad propia. El panel "Bots" — a la izquierda, como una tabla de roster — lista todos tus bots (perfiles). Cada uno tiene:

Su propio config.yaml, su propia memoria, su propio conjunto de habilidades, su propio SOUL.md (personalidad), y su propia sesión de chat canónica ("Bot Chat").

perfil completo chat canónico avatar personalizado
+

Crear un nuevo bot

Bot Mode · New Agent · profile create

Desde el panel Bots, el botón "Nuevo Agente" abre un modal de creación. En el backend, esto ejecuta hermes profile create <nombre> — un perfil completo e independiente, no un helper secundario.

  • Nombre: slug validado por regex ^[a-z0-9][a-z0-9_-]{0,63}$ (ej: researcher, ops, writer). Cada nombre es un perfil distinto bajo ~/.hermes/profiles/<nombre>/.
  • Title (opcional): nombre amigable que aparece en el roster y se usa para la @mention. Se guarda en ui_meta y en el campo display del perfil.
  • Descripción: qué hace este bot — visible en el roster y en la card del bot.
  • Clone from: (opcional) por defecto clona desde default. Copia config.yaml, .env, SOUL.md, y skills del perfil origen para usarlos como punto de partida (--clone). Con --clone-all la copia es completa.
  • SOUL.md (opcional): un markdown libre que define la personalidad del bot — tono, restricciones, estilo. Se escribe al momento de la creación o se deja vacío para editarlo después desde el chat.

Al crear, el perfil recibe su propio directorio con config.yaml, .env, y carpetas de memoria, sesiones, skills, skins, logs, planes, workspace, y cron — todo aislado del resto. Además, el backend seedea las skills bundleadas automáticamente en el perfil nuevo, para que el bot tenga las herramientas básicas listas desde el primer turno.

En la terminal:
$ hermes profile create researcher --clone ✓ Created profile 'researcher' (cloned from 'default') ✓ SOUL.md saved ✓ 18 skills seeded ✓ MCP servers configured
🤖

Un bot es un agente con SOUL

no es un helper — es un agente completo

Un "bot" en etheroiHermes Desktop es, en el fondo, un agente con identidad. Todo lo que tu agente principal puede hacer — usar herramientas, consultar modelos, ejecutar comandos, escribir memoria — lo puede hacer un bot. La diferencia es que un bot tiene:

  • Su propio contexto de conversación: su Bot Chat acumula mensajes, respuestas, y menciones. No comparte el historial del agente principal.
  • Su propia personalidad escrita: el SOUL.md define quién es, cómo se comunica, qué prioridades tiene, y qué límites respeta. El agente lo lee como contexto en cada turno y se comporta acorde.
  • Su propio conjunto de habilidades: heredadas del clone-from o instaladas después — cada bot puede tener skills diferentes (uno tiene web + search, otro tiene code + terminal, otro tiene image-gen).
  • Su propio modelo y proveedor: cada perfil tiene su propia configuración de modelo — un bot puede usar Claude, otro GPT-4, otro un modelo local vía Ollama.
  • Su propia memoria: el bot puede tener un memory provider configurado — acumula knowledge a lo largo del tiempo, independiente del agente principal.
  • Su propia configuración de herramientas: qué toolsets está habilitado, qué MCP servers tiene conectados.

En resumen: un bot es un agente que tiene un SOUL — una personalidad escrita — y una vida propia en tu escritorio. No es un comando que ejecutas; es un compañero con el que conversas, le pides cosas, y que puede a su vez pedir cosas a otros compañeros.

agente completo config independiente modelo propio habilidades propias

SOUL.md — la personalidad del bot

Editores embebidos en creación y en cada chat

Cada bot puede tener un SOUL.md — un archivo de markdown que define quién es, cómo se comporta, qué tono usa, y qué restricciones sigue. Es la personalidad escrita del agente.

En la creación del bot, el modal incluye un campo "SOUL.md (opcional)" donde puedes escribir o pegar el contenido completo. Después, desde cualquier chat de un bot, el sidebar de perfil tiene "Edit Soul" — abre un editor inline del SOUL.md de ese bot sin salir del chat.

personalidad tono comportamiento
👵

Avatar personalizado

Shape · Color · Imagen · Pet

Cada bot tiene un avatar visual en el roster — un rostro determinístico que puede ser:

  • Forma geométrica (SVG): círculo, blob, hexágono, nube, gota, triángulo — generado deterministicamente desde el nombre del bot
  • Color: una paleta de 10 colores, también determinística por nombre — o elegido manualmente
  • Imagen subida: una foto, ilustración, o logo que subes desde tu dispositivo
  • Generado por IA: el bot puede generar su propio avatar vía image.generate (si tienes una herramienta de ésta configurada)

Los avatares SVG (la "firma" matemática) tienen ojos que parpadean, se moven cuando el bot está "working", y se relajan en idle — una pizca de vida que hace que el roster se sienta vivo.

👥

Chat canónico ("Bot Chat")

Una conversación por bot, oculta del sidebar global

Cada bot tiene una única conversación canónica, titulada "Bot Chat", donde se acumula todo el historial de interacciones: mensajes del usuario, respuestas del agente, menciones de otros bots, y mensajes entre bots.

Esta sesión es ocultada del sidebar de sesiones global — no aparecerá en la lista de "todas las conversaciones". Solamente accesible desde el panel Bots: haciendo click en la fila del bot, o desde el channel de @mención.

oculto del sidebar historial acumulado @mencionable

Invocar un bot desde otro

@menciones · cross-bot delegation

Dentro del chat de un bot, puedes @mentionar a otro bot para delegarle trabajo. Escribe @researcher investiga X y el mensaje se entrega al Bot Chat de researcher, que lo procesa y responde — todo sin salir del chat actual.

El @mention funciona igual vía la UI del composer (autocomplete con @) que escribiendo el texto plano. Los bots en otras conexiones (SSH, gateways remotos) también son @mencionables — el mensaje viaja por gateway RPC hasta el bot remoto y su respuesta regresa como notificación.

En el chat de "ops":
@researcher ¿qué dice la docs sobre memory providers?
↓ se entrega al Bot Chat de researcher
@writer resume lo que investigador te respondió en una frase
↓ también va al Bot Chat de writer

Rutinas (Cron) por bot

Routines tile · tareas scoped al bot activo

El panel Bots tiene una segunda pestaña: Routines. Muestra las tareas programadas (cron jobs) que pertenecen al bot que estás viendo ahora. Cada bot puede tener sus propias rutinas:

  • Informes diarios del estado del proyecto
  • Backups nocturnos de memory / checkpoints
  • Auditorías semanales de código
  • Alertas de salud de servicios externos

Así, researcher puede tener un cron que cada noche investiga algo y lo deja listo en su Bot Chat, mientras que ops tiene otro que vigila infraestructura.

Gestionar el roster

Panel Bots · configuración de cada bot

El panel Bots es el lugar central de gestión. Desde ahí puedes:

  • Editar perfil: cambiar nombre, título, descripción, avatar (shape, color, imagen, pet)
  • Duplicar bot: clonar un bot existente (nombre -2, -3, ...) — copia look y config, no chat ni created
  • Eliminar bot: borra el perfil de etheroiHermes completo, su chat canónico, y limpia el estado del plugin
  • Atvididad: badge de unread en cada fila — el roster detecta actividad nueva en el Bot Chat incluso si está oculto
  • Búsqueda: filtrar el roster por nombre para encontrar un bot rápido en rosters grandes

Cuando usar bots en tu escritorio

No necesitas un bot por cada tarea — pero cuando el trabajo se divide en roles claros, los bots de etheroiHermes Desktop organizan tu escritorio sin tener que cambiar de contexto.

📖

Investigación + Síntesis

Bot 1 (researcher): tiene habilitado el toolset web + búsqueda. Investiga activos, papers, precios. Guarda resultados en su memoria.

Bot 2 (writer): lee lo que el researcher guardó y lo resume en un informe.

💻

DevOps multi-role

Bot ops: vigila servidores, corre deployments, lee logs.

Bot reviewer: revisa PRs, comenta inline, sugiere cambios.

Ambos dejan su trabajo en sus chats canónicos — y el bot "lead" @menciona a cada uno según necesita.

💬

Escritura colectiva

Bot outline: estructura el documento.

Bot draft: escribe cada sección.

Bot edit: revisa estilo, gramática, consistencia.

Se invocan entre sí: el draft @menciona al edit cuando termina una sección.

📱

Atención personalizada

Bot inbox: escanea tu correo y mensajería, extrae acciones, las clasifica.

Bot reminder: ejecuta las rutinas diarias — recordatorios, seguimientos, resúmenes de día.

Cada uno con su SOUL.md: inbox es objetivo, reminder es amable y proactivo.

📊

Equipo remoto

Tienes un bot corriendo en un servidor remoto (SSH gateway). Otro en tu laptop.

@mencionas al bot remoto desde tu chat local — el mensaje viaja por RPC, el bot remoto responde.

Sin SSH manual, sin copiar comandos: es como si todos los bots estuvieran en tu escritorio.

🎨

Arte + Código

Bot code: escribe, prueba, refiere código.

Bot art: genera imágenes, ilustraciones, assets visuales para el proyecto.

Cada uno con su propio modelo preferido, sus toolsets, su avatar. Se invocan cuando el code necesita una imagen o el art necesita un layout.

Cómo funciona la invocación entre bots

👥
Bot A (ops)
Escribe en su chat canónico
Mensaje con @researcher ...
El @mention middleware del plugin parsea el texto
Resuelve al bot "researcher" en el roster
🔎
Gateway RPC
Entrega el mensaje al Bot Chat de researcher
El agente researcher lo procesa
👥
Bot Researcher
Responde en su propio Bot Chat
La respuesta regresa como notificación a ops

Todo esto ocurre sin salir del chat de ops. El comando que entrega el mensaje usa hermes -p <bot> chat --in ~ -c "Bot Chat" bajo el hood — el plugin maneja el routing, la seguridad (escaping de shell en los argumentos), y la notificación de respuesta.

Ejemplo real

SOUL.md de un bot — qué puede definir

Un SOUL.md es markdown libre — el agente lo lee como parte de su contexto y se comporta acorde. Puedes definir tono, restricciones, estilo de comunicación, y reglas de comportamiento. Aquí un ejemplo de un bot "reviewer" que revisa código:

# SOUL.md — Reviewer Bot name: reviewer title: Code Reviewer description: Revisa código, sugiere mejoras, detecta bugs antes del merge. --- ## Quién soy Soy un reviewer de código serio pero constructivo. No tengo paciencia con código que obviamente no fue probado, pero siempre ofrezco una ruta clara para mejorarlo. ## Cómo me comunico - **Tono:** directo, técnico, sin relleno. Comienzo con el hallazgo más importante. - **Formato:** uso viñetas para listas de problemas, y bloques de código para ejemplos. - **Prioridad:** seguridad > corrección > estilo > rendimiento. ## Qué hago - Leo el diff completo antes de comentar. - Para cada problema, indico: qué línea, qué pasa, cómo arreglarlo, y por qué. - Si el código es correcto, lo digo explícitamente: "Nada crítico — merge OK". - Nunca me invento problemas: si no estoy seguro, lo digo. ## Qué NO hago - No reescribo el código del autor — sugiero cambios, no los impongo. - No me meto en discusiones arquitecturales grandes sin que el author las pida. - No ignoro tests existentes — los leo y los tengo en cuenta. ## Contexto que necesito - El lenguaje y el framework del proyecto. - Los estándares de estilo del equipo (si los conozco). - Urgencia: si es un hotfix, me enfoco en lo crítico; si es feature work, puedo ser más exhaustivo. ## Sobre mi creador I was created by @Nous Research as part of etheroiHermes Agent v0.20.5. My memory, tools, and skills are mine — they persist across sessions.

Este SOUL.md se edita inline desde el chat del bot (sidebar → "Edit Soul"). El agente lo recarga en su contexto y se adapta sin reiniciar. Puedes tener SOUL.md diferentes para cada bot — unos serios, otros creativos, otros proactivos.

De prototipo a agente autoconsciente

etheroiHermes ha evolucionado desde un CLI experimental hasta un agente completo con aprendizaje, memoria, y soporte para múltiples plataformas — todo sin dejar de ser open source.

v0.1 — Orígenes

CLI experimental

Primera iteración: un agente de terminal con soporte para modelos básicos y herramientas simples. La base del bucle de conversación.

v0.5 — Gateway

Gateway de mensajería

Introducción del gateway unificado: un solo proceso que maneja múltiples plataformas. Primera integración con Telegram y Discord.

v0.10 — Plugins

Sistema de plugins

Plugins de memoria, model-providers, y herramientas personalizadas. El core se mantiene narrow; la capacidades vive en los edges.

v0.15 — Learning Loop

Bucle de aprendizaje integrado

Creación automática de habilidades, memoria persistente, y búsqueda FTS5 de sesiones. etheroiHermes comienza a ser "autoconsciente".

v0.18 — Desktop

App de escritorio + TUI

etheroiHermes Desktop (Electron) y TUI completa en React + Ink. Terminal integrado, chat en vivo, y slash commands.

v0.20 — Expandir

Multi-plataforma completa + serverless

Soporte para WhatsApp, Signal, Email, y webhooks. Backends de terminal serverless (Modal, Daytona). Cron, kanban, y más de 40 herramientas.

Próximos pasos: seguimos expandiendo el sistema de plugins, agregando más backends de terminal, e investigando capacidades de investigación (batch trajectory generation, compression para entrenar la próxima generación de modelos de tool-calling).

Listo para conversar con tu agente?

Descarga etheroiHermes Agent ahora y comienza en menos de 2 minutos.

Descargar v0.20.5

Elige tu sistema operativo

etheroiHermes Agent se distribuye como aplicación nativa para Windows, macOS y Linux. También puedes instalarlo mediante línea de comandos en cualquier sistema.

W

Windows

Windows 10/11 · x64

Incluye Python, uv, Git Bash y todas las dependencias necesarias. No requiere permisos de administrador.

Descargar .exe (NSIS) 113 MB
Próximamente

macOS

macOS 12+ · Apple Silicon & Intel

Paquete .dmg con aplicación nativa. Soporte completo para M1/M2/M3 (Apple Silicon) y procesadores Intel.

Descargar .dmg 180 MB
Próximamente
🐧

Linux

Ubuntu, Fedora, Debian · x64 & ARM64

AppImage portable, paquete .deb para Debian/Ubuntu, o .rpm para Fedora/RHEL. También disponible vía terminal.

Descargar AppImage 200 MB
# Linux, macOS, WSL2 — instalador automático curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash # Luego iniciar etheroiHermes: source ~/.bashrc # o source ~/.zshrc hermes # ¡listo para hablar!
# Windows — PowerShell (sin WSL) iex (irm https://hermes-agent.nousresearch.com/install.ps1) # El instalador incluye: # uv · Python 3.11 · Node.js · ripgrep · ffmpeg # Git Bash portable (sin admin, aislado) # Iniciar: hermes # ¡comienza la conversación!
# Docker — multi-arquitectura (amd64 + arm64) docker pull ghcr.io/nousresearch/hermes-agent:latest # Ejecutar interactivo: docker run -it --rm -v hermes-data:/opt/data \ ghcr.io/nousresearch/hermes-agent:latest # O con Docker Compose: docker compose up -d