Hermes Agent

Edited by Lawrence Beckwith on August 24, 2026 at 1:41 AM UTC

Hermes Agent is the layer that decides what to do; Ember is the engine that runs the model. Hermes handles channel routing (Telegram, Signal, WhatsApp), tool dispatch, memory and scheduling, and calls Ember as a custom OpenAI-compatible provider.

To wire it up, see Connect Hermes Agent. For where it sits in the wider system, see Architecture Overview.

Reasoning and routing

A single inference engine handles all reasoning tiers. The model is selected by prompt complexity and tool requirements:

Tier Purpose When used
FAST Greetings, acks Short, low-complexity prompts
DEFAULT Conversation + memory retrieval General queries
REASONING Deep analysis Complex multi-step reasoning
COMPLEX Tool execution loop Any action requiring tool calls

Routing path:

User Message (Telegram)
    │
    ▼
Hermes Agent
    │  ┌── custom provider: http://127.0.0.1:8000/v1
    │  │   model: deepseek-v4-flash (ember-server)
    │  │   backend: ROCm 7.14 on AMD Radeon 8060S
    │  ▼
ember-server (Docker container, port 8000)
    │
    ├── FAST → single-turn response
    ├── DEFAULT → streaming chat completion
    ├── REASONING → high-temperature chain-of-thought
    └── COMPLEX → tool-calling agent loop with Hermes tool dispatch

The inference server runs as a Docker container with ROCm GPU passthrough (/dev/kfd, /dev/dri). The KV cache is disk-persisted — see Ember for the current deployment parameters.

Action: typed tools

Hermes Agent executes constrained operations through typed tools:

  • Desktop/HID actions — JetKVM (WebRTC capture + USB HID) driven by Hermes computer-use tools
  • Coordinate translation — vision model coordinates inverse-transformed to real screen coordinates before HID injection
  • Code execution — sandboxed shell commands
  • File operations — workspace read/write
  • Messaging — post to Telegram topics, send alerts, create summaries
  • Web & research — web search, page extraction
  • Delegation — spawn sub-agents for parallel work

Memory

Hermes Agent provides three memory systems:

Hindsight (Long-Term Fact Storage)

Hindsight is the durable memory layer. It stores structured facts extracted from conversations and retrieves them on future turns via three parallel mechanisms:

  • Semantic search — embedding-based similarity across all stored entries
  • Keyword matching — full-text search over entity names and descriptions
  • Entity graph traversal — follows relationships between entities (people, projects, systems) to surface connected facts

Three query modes:

Tool Purpose
hindsight_recall(query) Search across all stored memories — returns ranked results
hindsight_reflect(query) Synthesize a reasoned answer from all relevant memories
hindsight_retain(content, context, tags) Store a new fact with automatic entity extraction and indexing

Hindsight recall runs automatically (auto_recall), and the agent can also call hindsight_recall or hindsight_reflect explicitly when it needs long-term context. Writing is likewise automatic — auto_retain captures durable facts from conversations, and the retain tool is also called proactively when the agent learns a durable fact about the user, their environment, or a project.

Configuration:

Setting Value Description
provider hindsight Active memory backend
memory_enabled true Memory system enabled
memory_char_limit 8000 Max characters for memory entries
user_char_limit 3000 Max characters for user profile
nudge_interval 10 Prompt to save memory every 10 turns
flush_min_turns 6 Minimum turns before memory flush

Session Search (Conversation History)

FTS5-indexed archive of every past conversation session across all Hermes profiles. Accessed via session_search:

Mode Description
session_search(query) Discovery — FTS5 search across all sessions, returns top matches with context windows
session_search(session_id, around_message_id) Scroll — read ±N messages around a specific message in a session
session_search(session_id) Read — dump the full session (first 20 + last 10 messages)
session_search() Browse — list recent sessions chronologically

Session search is not automatically injected — it is called on demand when the user references past work.

Skills (Procedural Memory)

Reusable markdown files stored in ~/.hermes/skills/ that encode workflows for recurring task types. Each skill has a YAML frontmatter block (trigger conditions, description, category) and a markdown body with numbered steps, commands, and pitfalls. Skills are loaded explicitly via skill_view(name) and listed via skills_list().