Hermes Agent con clave Carpe Diem y plugins del catálogo

Hermes Agent, de Nous Research, es un agente en el terminal: llama a herramientas (archivos, comandos, web), guarda una memoria y habla con una API compatible con OpenAI. Puede confiarle un repositorio: lee el código, ejecuta las pruebas, y cada turno se factura como una llamada /chat/completions en Carpe Diem. El 3 de noviembre de 2026, con Hermes 0.22.2 y deepseek-v4-1-flash, hermes chat --oneshot respondió pong en 4 segundos.

Ilustración generada con seedream-v5-lite en Carpe Diem.
Qué necesita
- Una cuenta Carpe Diem con créditos o un saldo Prepaid, y una clave
cdm_(Credits & keys). - Hermes Agent 0.22.2 (el instalador está en el paso 2).
Si solo quiere un script Python sin agente, basta el tutorial del SDK OpenAI Python. Aquí lanzamos el agente.
Paso 1: crear una clave cdm_
Abra Credits & keys y la pestaña API Keys. Las claves empiezan por cdm_ y se muestran una sola vez: cópiela antes de cerrar la página. Elija Credits o Prepaid, un nombre opcional, luego Create a key. Los dos modos debitan el mismo catálogo; el detalle de los pagos está en la guía, §4.1.

Paso 2: instalar Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Nuestra prueba se hizo con Hermes Agent v0.22.2; hermes --version le indica qué versión tiene instalada. Los proveedores personalizados se describen en la sección Custom endpoint de la documentación de Hermes.
Paso 3: apuntar Hermes a Carpe Diem
Hermes guarda sus ajustes en ~/.hermes/: config.yaml para la configuración, .env para los secretos (configuración de Hermes). Los cuatro comandos siguientes escriben el proveedor custom, la URL de Carpe Diem, el modelo por defecto y una referencia a la variable de entorno que llevará la clave.
hermes config set model.provider custom
hermes config set model.base_url https://carpe-diem.xyz/api/operator/v1
hermes config set model.default deepseek-v4-1-flash
hermes config set model.api_key '${OPENAI_API_KEY}'
La clave en sí va en ~/.hermes/.env, nunca en el yaml:
OPENAI_API_KEY=cdm_your_key_here
custom es el proveedor genérico de Hermes para una API compatible con OpenAI. La URL debe terminar en /v1: es la URL base de Carpe Diem, y Hermes añade /chat/completions por su cuenta. Copie el identificador del modelo desde /models.
Un detalle: hermes config set model.default sí escribió el yaml, pero un chat lanzado sin -m envió igual un nombre de modelo vacío. Pase siempre -m de forma explícita. Después de los config set, el yaml (sin la clave en texto plano) se veía así:
model:
default: deepseek-v4-1-flash
provider: custom
base_url: https://carpe-diem.xyz/api/operator/v1
api_key: ${OPENAI_API_KEY}
Paso 4: lanzar la primera llamada
hermes chat --oneshot --max-turns 1 --safe-mode \
--provider custom -m deepseek-v4-1-flash \
-q "Reply with the exact word: pong"
--oneshot responde y luego sale, --safe-mode limita las herramientas que el agente puede usar, y --max-turns 1 corta después de un solo turno. Es la forma más prudente de comprobar que la clave y la URL son correctas. Sin --oneshot, hermes chat abre una sesión interactiva.
Esta es la salida obtenida:
Query: Reply with the exact word: pong
Initializing agent...
────────────────────────────────────────
pong
────────────────────────────────────────
Resume this session with:
hermes --resume 20261103_160550_5ad0d5
Session: 20261103_160550_5ad0d5
Duration: 4s
Messages: 2 (1 user, 0 tool calls)
La petición fue a https://carpe-diem.xyz/api/operator/v1/chat/completions. El resumen muestra 0 tool calls: el agente respondió sin usar ninguna herramienta. Hermes no muestra la cabecera X-Carpe-Cost-Usdc-Micro: el coste se consulta en el panel de consumo o, para un script, en el tutorial del SDK.
Paso 5: añadir un plugin
El catálogo se instala por nombre, en un commit fijado. Con --no-enable, la instalación clona sin activar; hermes plugins enable lo activa después.
hermes plugins browse
hermes plugins install mcp-serve --no-enable --yes-deps
hermes plugins enable mcp-serve
El plugin pasó de not enabled a enabled. Hermes pidió un hermes gateway restart. Identidad del paquete :
mcp-serve 1.0.0 6389dd08
Si no funciona
401 Unauthorized / AUTH_REQUIRED. Con OPENAI_API_KEY=cdm_invalid, Hermes mostró custom rejected your API key. La clave está incompleta o mal copiada, o .env no se ha leído: compruebe el archivo y vuelva a lanzar el comando.
400 INVALID_MODEL. Sin -m, el cuerpo de la petición contenía "model": "" y la API responde Invalid model name. Añada -m deepseek-v4-1-flash.
400 MODEL_ERROR. Con deepseek-v4-1-flash-typo, la API respondió This model is no longer available upstream. Un identificador mal escrito devuelve MODEL_ERROR: compárelo con el de /models.
Gateway sin token. hermes gateway mostró Hermes Gateway Starting y luego Press Ctrl+C to stop. Sin TELEGRAM_BOT_TOKEN ni DISCORD_BOT_TOKEN, no hay ninguna mensajería conectada.
Plugin instalado pero inactivo. Si ha instalado con --no-enable, el plugin sigue not enabled hasta hermes plugins enable <nombre> y luego hermes gateway restart.
Ir más allá
Para hablar con el agente desde Telegram o Discord, la pasarela es un proceso aparte. No hemos pegado un token de bot, así que no se intercambió ningún mensaje. Para configurarla, siga las guías de Telegram y Discord, luego en ~/.hermes/.env:
TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=...
Después, hermes gateway. Sin token, aparece el banner Hermes Gateway Starting y no hay ninguna mensajería conectada.
Una vez obtenido el pong, quite --safe-mode y --max-turns 1 cuando quiera que el agente use sus herramientas, y cambie de modelo modificando solo -m. Para un chat web en lugar de un agente en el terminal, vea el tutorial Vercel AI SDK. Para comparar modelos sin instalar nada, basta el Create Hub.
Procedimiento: prueba del 3 de noviembre de 2026 con Hermes 0.22.2. El pong corrió en --safe-mode durante un turno. El plugin mcp-serve se instaló y luego se activó. La pasarela arrancó sin token de bot. No se leyó el coste en la interfaz de Hermes.
Cree su clave en Credits & keys, apunte base_url y -m, y lance el pong.