--- title: Hermes Agent type: system status: active created: 2026-07-22 updated: 2026-07-25 verified_on: 2026-07-25 confidence: high tags: [system, hermes, agent, llm] sources: [raw/configs/hermes-config-sanitized.txt] --- # Hermes Agent ## Purpose Primary personal agent for Anthony. Runs automation, research, communication, knowledge management, browser control, and scheduled tasks. ## Current Status - **Version:** v0.19.0 (2026.7.20), upstream `9ecacd6b` - **Install method:** git - **Python:** 3.11.15 - **OpenAI SDK:** 2.24.0 - **Upstream status:** Up to date - **Install directory:** `/home/hermes/.hermes/hermes-agent` - **Community resources:** [Hermes Registry](https://babylondreams.de/hermes-registry/) — third-party plugins, skills, and extensions - **Binary:** `/home/hermes/.local/bin/hermes` - **Config:** `~/.hermes/config.yaml` (version 33) - **Profile:** `default` (`~/.hermes/profiles/default/`) ## Location - **Host:** Local Linux host (no containerized Hermes runtime confirmed) - **Filesystem root:** `~/.hermes/` - **Working directory:** `/home/hermes/workspace` ## Providers & Routing - **Default provider:** `custom:litellm` → `http://litellm:4000/v1` - **Fallback provider:** `custom:omniroute` → `http://omniroute:20128/v1` - **Default model:** `freellmapi-auto` - **Provider model count:** ~3430 (omniroute), ~1512 (litellm) - **free-stack combo (OmniRoute):** Nemotron 3 Ultra 550B configured with `max_tokens: 8192`, `reasoning_effort: medium`, `chat_template_kwargs.force_nonempty_content: true` (see [[omniroute]]) - See [[model-providers]] for full breakdown. ## Memory - **Backend:** Mnemosyne (local native) - **Memory enabled:** true - **Char limit:** 5000 - **User profile enabled:** true - **User char limit:** 3000 - **Flush every:** 6 turns - **Auto sleep:** true - **Default scope:** session - **Vector type:** int8 - **Shared surface:** `data/shared/mnemosyne.db` - See [[memory-backend]] for details. ## Browser - **Cloud provider:** Camoufox - **Managed persistence:** true - **Inactivity timeout:** 120 s - **Allow private URLs:** true - **cua-driver:** v0.9.0 at `/home/hermes/.cua-driver/packages/releases/0.9.0-x86_64-unknown-linux-gnu/cua-driver` - **DISPLAY:** `:102` (Xvfb/X11VNC/fluxbox confirmed working per session notes) - See [[browser-backend]] for details. ## Terminal - **Backend:** local - **Working directory:** `/home/hermes/workspace` - **Timeout:** 180 s - **Home mode:** auto - **Container CPU:** 1 - **Persistent shell:** true - See [[terminal-backend]] for details. ## Skills - **Total installed:** 66 - Key skills: hermes, hermes-gateway-troubleshooting, hermes-mcp-troubleshooting, hermes-api-vault, omniroute, job-search-automation, weekly-review, fresh-rss-intelligence-filter, etc. - See [[skills-index]] for categorized list. ## Multi-Profile Multiplexer The default gateway runs as a **profile multiplexer** (`gateway.multiplex_profiles: true`), serving both the `default` and `ops` profiles through a single gateway process with one Telegram connection. ### Profiles | Profile | Chat | Purpose | |---------|------|---------| | default | `-1004321904721` (Rhino chat) | Main agent | | ops | `-1003914987043` (Elephant ops), `-1003932503629` (OPS Tember rescue) | Operations/infra agent | ### How It Works - **One gateway, one Telegram bot token** — shared across profiles - **`profile_routes`** maps chat_id → profile at the gateway level - **`allowed_chats` on both profiles** must include ALL chats that either profile should hear, because the default profile's adapter processes all inbound messages before `profile_routes` stamps `source.profile` - The ops profile does NOT need `platforms.telegram.enabled` — the default adapter handles it ### Critical Rule: allowed_chats Is Pre-Route The `allowed_chats` gate runs on the **default profile's adapter** before `profile_routes` matching. If a chat_id is only in the ops profile's `allowed_chats` but not the default's, messages from that chat are silently dropped before routing ever fires. **Fix applied 2026-07-28:** Added both ops group IDs to the default profile's `allowed_chats` and `group_allowed_chats` (comma-separated). See [[multiplexer-setup]]. ## Messaging Integrations - **Telegram:** enabled, `allowed_chats: -1004321904721,-1003914987043,-1003932503629`, rich messages - **Discord:** enabled, streaming true - **Slack:** enabled - **Email:** connected - **Mattermost:** connected - **ntfy:** connected - **Google Chat:** available (`hermes-google_chat`) - **QQ:** available (`hermes-qqbot`) - **Yuanbao:** available - See [[messaging-integrations]] for details. ## Scheduled Tasks - **Cron jobs:** 25 active jobs - Delivery targets: Telegram (primary), Discord, origin, local - Notable: Birthday checker, job radar, newsletter digests, GitHub trending, mnemosyne health/watchdog/backup, AgentMail watcher - See [[scheduled-tasks]] for full table. ## Dependencies - LiteLLM proxy at `litellm:4000` - OmniRoute at `omniroute:20128` - cua-driver binary at path above - Xvfb + X11VNC + fluxbox for headed browser - Telegram bot token, Discord token, etc. (stored outside wiki) ## Known Issues - Router migration incomplete - Browser persistence not yet fully verified - Obsidian Git plugin auto-sync caused conflicts during vault reorganization ## Related - [[model-providers]] - [[memory-backend]] - [[browser-backend]] - [[terminal-backend]] - [[skills-index]] - [[messaging-integrations]] - [[scheduled-tasks]] - [[current-state]]