Hermes Agent
TL;DR
Hermes Agent is Nous Research's MIT-licensed, self-hosted Python agent that runs in a terminal UI or behind a messaging gateway (Telegram, Discord, Slack and more). It keeps curated memory, writes its own skills and delegates work to parallel subagents. It suits users who want a persistent personal agent on their own server.
Key facts
| Type | Harness |
|---|---|
| Languages / SDKs | Python |
| License | MIT |
| Pricing model | Open core |
| Orchestration pattern | Supervisor |
| GitHub stars | 250,234 (as of 2026-09-30) |
| GitHub forks | 53,432 |
| Last push | 2026-09-30 |
| Latest release | v2026.9.24 |
| Repository | NousResearch/hermes-agent |
| Website | hermes-agent.nousresearch.com |
| Documentation | hermes-agent.nousresearch.com |
| Last verified | 2026-09-30 |
Key features
- delegate_task spawns child agents with fresh context and their own terminal sessions; only each child's final summary returns to the parent, and batches run up to 10 children in parallel by default. (source)
- Nested delegation: children with role="orchestrator" can spawn their own workers once delegation.max_spawn_depth is raised above its default of 1. (source)
- Kanban board in a shared SQLite database lets several named Hermes profiles pick up, hand off and review tasks as separate OS processes. (source)
- Optional Codex app-server runtime hands OpenAI turns to the Codex CLI's own tool loop and sandbox while Hermes keeps sessions, memory and the gateway. (source)
- A2A plugin in the repository works both ways: Hermes can call remote A2A agents as tools and accept tasks from them over HTTP. (source)
- MCP client for stdio and HTTP servers with per-server tool filtering, plus hermes mcp serve to expose connected messaging platforms to MCP clients. (source)
- Runs as an ACP server over stdio so ACP-capable editors can show its chat, tool activity, diffs and approval prompts. (source)
- Bounded memory in MEMORY.md and USER.md, injected at session start and edited by the agent through a memory tool. (source)
Architecture and orchestration pattern
Pattern: Supervisor
Every entry point (CLI/TUI, messaging gateway, ACP adapter, API server, batch runner) drives the same AIAgent loop, which builds the prompt, resolves the provider and dispatches tools from a registry. Sessions are stored in SQLite with FTS5 search, and tools run on one of several terminal backends (local, Docker, SSH, Modal, Daytona and others).
In-process multi-agent work is supervisor-style. The model calls delegate_task with a goal and context; each child starts with a fresh conversation (plus the workspace's AGENTS.md/CLAUDE.md context files), inherits the parent's toolsets, and returns only a summary. Top-level delegation runs in the background and posts results back as a new message; children are leaf workers by default, and orchestrator children can delegate further only when delegation.max_spawn_depth is raised.
For longer-lived collaboration, the Kanban board stores tasks and handoffs in ~/.hermes/kanban.db, and a dispatcher starts each worker as a full OS process under its own profile. Across machines or frameworks, the A2A plugin connects independent agents. Memory is two capped Markdown files (MEMORY.md and USER.md) per profile, loaded as a frozen snapshot at session start, with optional external memory providers.
Human in the loop
Dangerous shell commands go through approvals.mode: smart (default; an auxiliary LLM auto-approves low-risk commands, denies clearly dangerous ones and escalates the rest), manual (always prompt) or off. In the CLI the prompt offers once, session, always or deny; on messaging platforms the user replies yes or no in chat. /yolo or --yolo bypasses prompts for a session. /stop ends a run and its background subagents, and the CLI, TUI and Desktop show live subagents that can be steered or stopped individually. Subagents cannot use the clarify tool, so they never ask the user directly. Unknown messaging users must be approved with hermes pairing approve.
Harnesses it can drive
- Codex (evidence)
- Claude Code (evidence)
- OpenCode (evidence)
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Yes evidence | Client for stdio and HTTP MCP servers configured under mcp_servers, and a stdio MCP server via hermes mcp serve that exposes connected messaging platforms. |
| A2A | Yes evidence | A2A v1.0 plugin shipped in the repo (plugins/platforms/a2a): inbound server over HTTP plus an outbound a2a toolset for calling peers; the outbound toolset is off by default. |
| AG-UI | Unknown | No AG-UI mention in the README, docs llms.txt or docs sitemap; GitHub code search for ag-ui and agui in NousResearch/hermes-agent returned no results; not in the AG-UI README integration list. |
Best for
- A personal agent on a VPS or home server that you reach from Telegram, Discord, Slack or the terminal. (shortlist)
- Research tasks split across parallel subagents with structured (JSON Schema) results. (shortlist)
- Coding work where Hermes runs Codex as its runtime or hands tasks to Claude Code or OpenCode through bundled skills. (shortlist)
- Recurring or multi-profile work queues coordinated through the Kanban board and cron scheduler.
Not for
- Embedding an agent inside your own application as a library; Hermes is a standalone agent and gateway.
- Setups where two agent processes would share one Hermes home directory; the docs warn their memory writes collide.
- Browser front ends expecting an AG-UI event stream; no AG-UI support is documented.
Quickstart
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc # or ~/.zshrc
hermes setup # provider, tools, optional messaging gateway
hermes model # pick provider and model
# allow one level of orchestrator subagents and cap parallel children
hermes config set delegation.max_spawn_depth 2
hermes config set delegation.max_concurrent_children 4
# let CLI sessions call remote A2A agents (toolset is off by default)
hermes tools enable a2a --platform cli
hermes # then ask it to research two topics in parallel
Common pitfalls
- The POSIX installer needs Git, curl, tar and SHA-256 utilities; first-party installs run on Python 3.14 and the installer pins its own uv.
- On Android/Termux use the signed APT repository, not the install script. On native Windows use the PowerShell one-liner; some antivirus tools flag the bundled
uv.exeas a false positive. - Subagents start with no knowledge of the parent conversation; everything they need must go in
goalandcontext. - Raising
delegation.max_spawn_depthmultiplies concurrent agents and cost (depth 3 with 3 children each can reach 27 leaf agents). - Do not run two agent processes against the same Hermes home directory; memory writes from both end up in each other's prompts.
Pros
- MIT-licensed and model-agnostic: works with OpenRouter, OpenAI, custom endpoints and Nous Portal, switched with hermes model. (source)
- Delegation supports background batches, JSON Schema output contracts, per-child steering and stop without affecting siblings. (source)
- Speaks MCP (client and server), A2A (both directions) and ACP (server), so it can sit next to editors, tools and other agent frameworks. (source)
- Three approval modes, a hardline blocklist and user deny rules gate dangerous shell commands. (source)
- Frequent tagged releases: four between 2026-09-11 and 2026-09-24. (source)
Cons
- The default approval mode (smart) lets an auxiliary LLM auto-approve commands it rates low-risk, and approvals can be switched off entirely with --yolo. (source)
- Memory is capped at 2,200 characters for MEMORY.md and 1,375 for USER.md and does not auto-compact; the agent must prune entries itself. (source)
- Delegation is flat by default, subagents cannot ask the user questions, and deeper trees multiply cost with no hard ceiling. (source)
- The Tool Gateway (managed web search, image generation, TTS and browser) needs a paid Nous Portal subscription; without it each tool needs its own account and key. (source)
- Open bug: a /goal waiting on a stalled delegated subagent can stay parked until another user turn arrives. (source)
Alternatives
FAQ
Does Hermes Agent support MCP and A2A?
Yes. It connects to MCP servers as a client and can run as an MCP server with hermes mcp serve. Its A2A plugin both serves tasks to other agents and calls remote A2A agents. AG-UI support is not documented.
Is Hermes Agent free?
The code is MIT-licensed and works with your own provider keys. Nous Research also sells Nous Portal subscriptions, which bundle model access and a managed Tool Gateway for Hermes; they are optional.
How does Hermes run multiple agents?
Three ways: delegate_task subagents inside one process, a Kanban board that coordinates several Hermes profiles as separate processes, and A2A for agents on other machines or frameworks.
Can I move from OpenClaw to Hermes Agent?
The README documents hermes claw migrate, and hermes setup offers to import settings, memories, skills and API keys when it finds ~/.openclaw.
What language is Hermes Agent written in?
Python; first-party installs run on Python 3.14, which the installer provisions.
Sources
- NousResearch/hermes-agent repository (README)
- Releases
- A2A plugin source
- Issue #120381: /goal can remain parked after a stalled subagent wait
- Hermes Agent homepage
- Hermes Agent documentation
- Installation
- Quickstart
- Architecture
- Subagent delegation
- Kanban (multi-agent board)
- Codex app-server runtime
- Bundled skill: Claude Code
- Bundled skill: OpenCode
- MCP
- A2A
- ACP host integration
- Security (approvals, pairing)
- Persistent memory
- Nous Portal integration
- Tool Gateway
- AG-UI README integration list