Reference¶
Look-up facts for Hermes Agent: releases, platform support, install layouts, defaults, config keys, limits, ports, providers, and known advisories. For why things work the way they do, see Explanation; for step-by-step tasks, see How-to Guides.
Fast-moving project
Hermes Agent ships a tagged release roughly every 3-7 days (each rolling up hundreds of PRs). Every number on this page is dated; re-check the releases page and the docs before relying on a default.
Release History¶
Releases carry both a semantic version and a calendar tag (vYYYY.M.D). Docker images use the calendar tag (for example nousresearch/hermes-agent:v2026.9.24).
| Version | Tag | Date | Notes |
|---|---|---|---|
| 0.21.5 | v2026.9.24 |
2026-09-24 | Latest. ~460 PRs rollup: desktop plugin SDK, Simple/Advanced desktop mode, Connectors page (MCP), French/German/Spanish UI catalogs, new model entries. Curated notes deferred to 0.22.0 |
| 0.21.4 | v2026.9.21 |
2026-09-21 | Patch rollup |
| 0.21.3 | v2026.9.14 |
2026-09-14 | Remote gateway sign-in fixes |
| 0.21.2 | v2026.9.11 |
2026-09-11 | Database reliability patch |
| 0.21.1 | v2026.9.7 |
2026-09-07 | Main-branch rollup |
| 0.21.0 "Pantheon" | v2026.8.31 |
2026-08-31 | Bot Mode (named agents with group chats), hermes peer agent-to-agent messaging, cron jobs with persistent memory, live subagent control, MCP command center, 6 new inference providers, write approval for protected instruction files (AGENTS.md, skills, memory) |
| 0.20.6 | v2026.8.27 |
2026-08-27 | Infrastructure patch |
| 0.20.0 "Herald" | v2026.8.3 |
2026-08-03 | Streaming voice with barge-in and wake words, A2A v1.0, signed outbound webhooks, grounded research with citations, desktop artifacts + plugin SDK. Install channels narrowed to shell installer, Docker, and Nix; brew and PyPI wheels retired. Node 26 required |
| 0.19.0 | — | 2026-07-20 | Last version published to PyPI |
| 0.15.0 "Velocity" | v2026.5.28 |
2026-05-28 | run_agent.py split into agent/ modules (-76% lines); multi-agent kanban platform |
| 0.14.0 "Foundation" | v2026.5.16 |
2026-05-16 | xAI Grok OAuth, OpenAI-compatible subscription proxy, lighter installs |
| 0.13.0 "Tenacity" | v2026.5.7 |
2026-05-07 | Durable multi-agent kanban board, /goal standing goals |
| 0.12.0 | v2026.4.30 |
2026-04-30 | — |
| 0.11.0 | v2026.4.23 |
2026-04-23 | — |
| 0.10.0 | v2026.4.16 |
2026-04-16 | — |
| 0.9.0 | v2026.4.13 |
2026-04-13 | Version this vault first documented |
| 0.8.0 | v2026.4.8 |
2026-04-08 | — |
Sources: GitHub releases, v0.21.0 notes, v0.20.0 notes, PyPI history.
PyPI version lag
PyPI still shows hermes-agent 0.19.0 (2026-07-20). That is not the latest release: PyPI publishing stopped when v0.20.0 retired pip installs. Use the GitHub release tags as the source of truth.
Platform Support Matrix¶
| Tier | OS / arch | Install methods | Notes |
|---|---|---|---|
| Tier 1 | macOS (Apple Silicon) | Hermes Desktop DMG, install.sh |
Intel macOS is not a Tier 1 platform |
| Tier 1 | Windows 10/11 (x86_64, aarch64) | install.ps1, MSIX desktop |
MSIX needs Windows 11 22H2+ |
| Tier 1 | Linux / WSL2 (x86_64, aarch64) | install.sh |
Tested on latest Ubuntu and WSL2 |
| Tier 1 | Docker (amd64, arm64) | docker pull nousresearch/hermes-agent |
hermes update not supported; pull a new image |
| Tier 2 | Nix (macOS, Linux, NixOS) | Nix flake and modules | Best effort only |
| Tier 2 | Android / Termux (aarch64) | Signed APT repo, pkg install hermes-agent |
Android may kill background processes |
| Unsupported | — | PyPI (pip/uv tool install hermes-agent), Homebrew, AUR, non-aarch64 Termux |
PRs to fix these are not accepted |
Source: Platform Support.
Runtime Requirements¶
| Item | Value | Source |
|---|---|---|
| Python (first-party installs) | 3.14, provided by the PM tool manager | Installation |
requires-python in pyproject.toml |
>=3.11,<3.15; the range exists only so old installs can run the updater |
pyproject.toml |
| Node.js | Provided by PM; v0.20.0 notes state Node 26 required | v0.20.0 notes |
| Other managed tools | npm, ripgrep, FFmpeg, agent-browser + pinned Chromium (skippable with --skip-browser) |
Installation |
| POSIX installer prerequisites | Git, curl, tar, SHA-256 utilities | Installation |
| Dependency policy | Core dependencies exact-pinned (==X.Y.Z) by policy since 2026-05-12, after a PyPI supply-chain worm incident; a few (for example fastapi, urllib3) keep bounded ranges |
pyproject.toml |
| GPU | Not required; inference goes to a provider API or a local server | README |
Install Layout¶
| Method | Code | CLI entry point | Default user data |
|---|---|---|---|
| POSIX source script | ~/.hermes/hermes-agent/ |
~/.local/bin/hermes wrapper |
~/.hermes/ |
| Windows source script | %LOCALAPPDATA%\hermes\hermes-agent\ |
%LOCALAPPDATA%\hermes\bin\ |
%LOCALAPPDATA%\hermes\ |
| Desktop bundle | Inside the app package | Packaged launchers | Platform default data dir |
| Docker | /opt/hermes/ (read-only) |
Image entrypoint + hermes shim |
Mounted /opt/data/ |
| Termux APT | $PREFIX/lib/hermes-agent/ |
Symlinks in $PREFIX/bin/ |
~/.hermes/ |
HERMES_HOME selects the user-data root. Named profiles live under ~/.hermes/profiles/<name>/.
Files Under ~/.hermes/¶
| Path | Contents |
|---|---|
config.yaml |
All non-secret settings |
.env |
API keys and other UPPER_SNAKE environment settings |
auth.json |
OAuth credentials (Nous Portal, Codex, and others) |
state.db |
SQLite session store (WAL mode) with FTS5 indexes |
memories/MEMORY.md, memories/USER.md |
Built-in persistent memory |
SOUL.md |
Global persona for this Hermes instance |
skills/ |
Bundled, hub-installed, and agent-created skills; skills/.archive/ holds curator-archived skills |
pending/skills/ |
Skill writes staged by skills.write_approval |
plugins/ |
User plugins |
hooks/<name>/ |
Gateway event hooks (HOOK.yaml + handler.py) |
logs/ |
agent.log, errors.log, gateway.log, gui.log, desktop.log |
checkpoints/ |
Shadow store for /rollback |
cache/scratch/ |
Per-profile TMPDIR for Hermes processes |
Terminal Backends¶
Seven backends decide where the agent's shell, file, and execute_code calls run (terminal.backend).
| Backend | Where commands run | Isolation | Dangerous-command check | Key settings |
|---|---|---|---|---|
local (default) |
Host machine | None | Yes | cwd, timeout |
docker |
One long-lived container shared across sessions (default) | Namespaces, cap-drop | Skipped | docker_image, docker_volumes, docker_forward_env, container_persistent |
ssh |
Remote host over SSH | Network boundary | Yes | TERMINAL_SSH_HOST, TERMINAL_SSH_USER, TERMINAL_SSH_KEY |
modal |
Modal cloud sandbox | Cloud VM | Skipped | MODAL_TOKEN_ID/MODAL_TOKEN_SECRET, modal_image |
daytona |
Daytona workspace | Cloud container | Skipped | DAYTONA_API_KEY, max 10 GiB disk |
vercel_sandbox |
Vercel Sandbox microVM | Cloud microVM | Skipped | VERCEL_TOKEN + VERCEL_PROJECT_ID + VERCEL_TEAM_ID; runtime node24 (default), node22, python3.13 |
singularity |
Singularity/Apptainer container | Namespaces (--containall) |
Skipped | singularity_image |
Defaults: per-command timeout: 180 s; container image nikolaik/python-nodejs:python3.11-nodejs20 for Docker, Modal, Daytona, and Singularity; container_cpu: 1, container_memory: 5120 MB, container_disk: 51200 MB; Docker idle lifetime_seconds: 300.
Source: Configuration: Terminal Backends, Security: backend comparison.
Docker Sandbox Security Flags¶
The base docker run flags from the security docs:
| Flag | Purpose |
|---|---|
--cap-drop ALL then --cap-add DAC_OVERRIDE, CHOWN, FOWNER |
Drop all capabilities except those package managers need |
--security-opt no-new-privileges |
Block privilege escalation |
--pids-limit 256 |
Fork-bomb protection |
--tmpfs /tmp:rw,nosuid,size=512m |
Size-limited /tmp |
--tmpfs /var/tmp:rw,noexec,nosuid,size=256m |
No-exec /var/tmp |
/run tmpfs |
Mounted per image, noexec by default |
SETUID/SETGID |
Added only when an s6 entrypoint must drop root privileges |
docker_network: false |
Runs with --network=none (air-gapped) |
Memory Architecture¶
| Layer | Storage | Scope | Retrieval | Default |
|---|---|---|---|---|
| Session context | In-memory message list | Current conversation | Always in context; compressed near the limit | On |
| Persistent memory | MEMORY.md (2,200 chars) + USER.md (1,375 chars) |
Per profile, across sessions | Frozen snapshot in the system prompt at session start | On |
| Session history | state.db (SQLite + FTS5) |
All past sessions in the profile | session_search tool; no LLM calls, ~20 ms query |
On |
| External memory provider | Honcho, Mem0, OpenViking, and others | Provider-defined | Prefetch + provider tools | Off (one active at a time) |
| Skills | SKILL.md directories |
Persistent procedures | Progressive disclosure (skills_list then skill_view) |
On |
Memory Config Keys¶
| Key | Default | Meaning |
|---|---|---|
memory.memory_enabled |
true |
Enable MEMORY.md |
memory.user_profile_enabled |
true |
Enable USER.md |
memory.memory_char_limit |
2200 |
About 800 tokens |
memory.user_char_limit |
1375 |
About 500 tokens |
memory.nudge_interval |
10 |
Remind the agent to consider saving memory every N user turns (0 = off) |
memory.write_approval |
false |
true stages writes for /memory pending review |
memory.provider |
unset | External provider name |
skills.creation_nudge_interval |
15 |
Remind the agent to consider saving a skill every N tool-calling iterations (0 = off) |
skills.write_approval |
false |
true stages every skill_manage write under ~/.hermes/pending/skills/ |
auxiliary.background_review.enabled |
true |
Post-turn self-improvement review fork |
auxiliary.background_review.model |
auto |
auto = main chat model; a different model runs on a digest (~3-5x cheaper per the docs) |
display.memory_notifications |
on |
off, on, or verbose gateway notices |
Sources: Persistent Memory, cli-config.yaml.example.
External Memory Providers¶
| Provider | Storage | Cost | Unique feature |
|---|---|---|---|
| Honcho | Cloud or self-hosted | Paid (cloud) / free (self-hosted) | Dialectic user modeling |
| OpenViking | Self-hosted | Free (AGPL-3.0) | Filesystem hierarchy, tiered loading |
| Mem0 | Cloud, self-hosted, or OSS | Free / paid | Server-side LLM extraction |
| Hindsight (plugin catalog) | Cloud or local | Free / paid | Knowledge graph + reflect synthesis |
| Holographic | Local | Free | HRR algebra + trust scoring |
| RetainDB | Cloud | $20/mo (per docs) | Delta compression |
| ByteRover | Local or cloud | Free / paid | Pre-compression extraction |
| Supermemory | Cloud or self-hosted | Free / paid | Context fencing, session graph ingest |
| Memori | Cloud | Free / paid | Tool-aware memory, structured recall |
Seven providers are bundled (Honcho, OpenViking, Mem0, Holographic, RetainDB, ByteRover, Supermemory). Hindsight comes from the plugin catalog (hermes plugins install hindsight), and Memori needs the externally supplied hermes-memori integration. Sources: Memory Providers, CLI reference: hermes memory.
Honcho Settings (Selected)¶
| Key | Default | Meaning |
|---|---|---|
recallMode |
hybrid |
hybrid (auto-inject + tools), context (inject only), tools (tools only) |
contextTokens |
null |
Token budget for injected context per turn |
dialecticCadence |
2 |
Minimum turns between peer.chat() dialectic calls |
dialecticDepth |
1 |
Dialectic passes per call (1-3) |
writeFrequency |
async |
async, turn, session, or integer N |
sessionStrategy |
per-directory |
per-directory, per-repo, per-session, global |
The hermes honcho subcommand only exists while memory.provider: honcho is active. Source: Honcho Memory.
Skills Reference¶
Skill Locations and Precedence¶
| Tier | Path | Notes |
|---|---|---|
| Project (highest) | <repo>/.hermes/skills/, <repo>/.agents/skills/ |
Loaded only after hermes skills trust; curator never edits them |
| Local | ~/.hermes/skills/ |
Bundled, hub-installed, and agent-created skills |
| External | skills.external_dirs |
Read-only for creation; existing skills are patched in place |
Skill Document Format¶
Skills are directories with a SKILL.md (YAML frontmatter + standard sections) and optional references/, templates/, scripts/, assets/:
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux] # optional OS restriction
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # optional conditional activation
requires_toolsets: [terminal] # optional conditional activation
config: # optional config.yaml settings
- key: my.setting
description: "What this controls"
default: "value"
prompt: "Prompt for setup"
---
# Skill Title
## When to Use
Trigger conditions for this skill.
## Procedure
1. Step one
2. Step two
## Pitfalls
- Known failure modes and fixes
## Verification
How to confirm it worked.
skill_manage Actions¶
| Action | Use for |
|---|---|
create |
New skill (full SKILL.md) |
patch |
Targeted old_string -> new_string edit (preferred) |
patch with content |
Full rewrite (edit is the legacy alias) |
delete |
Remove a skill |
write_file / remove_file |
Supporting files under the skill directory |
Advisory linter rules: incident-log-shape, references-sprawl (more than 60 reference files), oversized-body (SKILL.md over ~24k chars). They warn but never block.
Skills Hub Sources¶
| Source | Example identifier |
|---|---|
official |
official/security/1password |
skills-sh |
skills-sh/vercel-labs/agent-skills/vercel-react-best-practices |
well-known |
well-known:https://mintlify.com/docs/.well-known/skills/mintlify |
url |
https://example.com/SKILL.md |
github |
openai/skills/k8s |
clawhub, lobehub, browse-sh |
Source-specific identifiers |
Skills follow the agentskills.io open standard. Source: Skills System.
Curator Defaults¶
| Key | Default | Meaning |
|---|---|---|
curator.enabled |
true |
Background maintenance of agent-created skills |
curator.interval_hours |
168 |
At most one run per 7 days |
curator.min_idle_hours |
2 |
Runs only after 2 h of inactivity |
curator.stale_after_days |
14 |
Unused skills become stale |
curator.archive_after_days |
30 |
Unused skills move to ~/.hermes/skills/.archive/ |
curator.consolidate |
false |
Opt-in LLM consolidation pass (typically 50-100 API calls) |
curator.prune_builtins |
false |
Opt-in archival of unused bundled skills |
Source: Curator.
Approvals and Authorization¶
approvals.* Keys¶
| Key | Default | Meaning |
|---|---|---|
mode |
smart |
smart (aux-LLM risk triage), manual (always prompt), off (same as --yolo) |
timeout |
300 |
Seconds to wait for a reply |
cron_mode |
deny |
Cron behaviour on a dangerous command |
single_query_mode |
deny |
One-shot -q behaviour |
unattended_mode |
deny |
Webhook / API-server behaviour |
deny |
[] |
User glob patterns blocked even under --yolo |
A code-shipped hardline blocklist (for example rm -rf /, fork bombs, mkfs on the root device, dd to a disk) is enforced below all of these, with no override.
Gateway Authorization Order¶
- Per-platform allow-all (for example
DISCORD_ALLOW_ALL_USERS=true) - DM pairing approved list (
hermes pairing approve <platform> <code>) - Platform allowlist (for example
TELEGRAM_ALLOWED_USERS) - Global allowlist
GATEWAY_ALLOWED_USERS - Global allow-all
GATEWAY_ALLOW_ALL_USERS - Default: deny
Source: Security.
Network Ports and Endpoints¶
| Service | Default bind | Auth |
|---|---|---|
API server (OpenAI-compatible, /v1/chat/completions) |
127.0.0.1:8642 (API_SERVER_HOST, API_SERVER_PORT) |
API_SERVER_KEY required for every deployment, including loopback |
Web dashboard (hermes dashboard) |
127.0.0.1:9119 |
None on loopback; a non-loopback bind fails closed unless an auth provider (username/password or OAuth) is configured |
| Codex OAuth browser callback | localhost:1455 |
Only during hermes auth add openai-codex --browser |
Sources: API Server, Web Dashboard.
Inference Providers¶
hermes model lists more than 40 providers. Main groups (as of 2026-09):
| Group | Providers (provider id) |
|---|---|
| Subscription / OAuth | Nous Portal (nous, recommended; 300+ models + Tool Gateway), OpenAI Codex (openai-codex), GitHub Copilot (copilot, copilot-acp), Anthropic (anthropic, API key or Claude Max OAuth), xAI Grok OAuth, Qwen OAuth, MiniMax OAuth |
| Aggregators / gateways | OpenRouter, Vercel AI Gateway (ai-gateway), Ramp Router (router), Kilo Code, OpenCode Zen/Go, CommandCode, NovitaAI, Fireworks AI, Nebius Token Factory, GMI Cloud |
| Direct model labs | OpenAI API (openai-api), Google Gemini (gemini), DeepSeek, xAI (xai), z.ai/GLM (zai), Kimi/Moonshot, MiniMax, Qwen/Alibaba DashScope, Xiaomi MiMo, StepFun, Arcee, Tencent TokenHub/TokenPlan, Hugging Face |
| Cloud platforms | AWS Bedrock (bedrock), Google Vertex AI (vertex), Azure AI Foundry (azure-foundry), NVIDIA Build (nvidia) |
| Local / self-hosted | LM Studio (lmstudio), Ollama Cloud (ollama-cloud), any OpenAI-compatible custom endpoint (for example self-hosted Ollama or vLLM) |
Three wire formats are used: chat_completions, codex_responses, anthropic_messages. Source: AI Providers.
Messaging Platforms¶
The gateway's platform table lists 28 targets (as of 2026-09): Telegram, Discord, Slack, Google Chat, WhatsApp (Baileys bridge), WhatsApp Cloud API, Signal, SMS, Email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, WeCom Callback, Weixin, BlueBubbles (iMessage), Photon (iMessage), QQ, Yuanbao, Microsoft Teams, LINE, ntfy, Raft, IRC, Buzz, SimpleX. Webhooks and the OpenAI-compatible API server are additional entry points. Source: Messaging Gateway.
Top-Level CLI Commands¶
| Command | Purpose |
|---|---|
hermes / hermes chat |
Interactive chat (-q seeds a prompt; --oneshot answers and exits) |
hermes setup (--portal) |
Setup wizard; --portal does Nous OAuth + provider + Tool Gateway |
hermes model / hermes fallback / hermes moa |
Provider/model choice, fallback chain, Mixture-of-Agents presets |
hermes auth |
Credential and OAuth management (hermes login is deprecated) |
hermes config |
show, edit, get, set, unset, check, migrate, path, env-path |
hermes gateway |
run, start, stop, restart, status, list, install, setup, migrate |
hermes skills / hermes bundles / hermes curator |
Skill hub, bundles, background skill maintenance |
hermes memory |
External memory provider setup (setup, status, off) |
hermes journey |
Timeline of learned skills and memories (list, delete, edit) |
hermes sessions |
list, browse, export, prune, stats, optimize, repair |
hermes cron / hermes kanban / hermes webhook |
Scheduled jobs, multi-profile task board, event triggers |
hermes mcp / hermes acp |
MCP client config and MCP server mode; ACP server for editors |
hermes plugins / hermes tools / hermes hooks |
Plugins, per-platform toolsets, shell hooks |
hermes profile |
Isolated Hermes instances |
hermes dashboard / hermes serve / hermes desktop |
Web dashboard, headless backend, Electron desktop |
hermes doctor / hermes dump / hermes logs / hermes status |
Diagnostics |
hermes backup / hermes import |
Zip backup and restore of HERMES_HOME |
hermes security audit / hermes approvals / hermes pairing |
OSV supply-chain audit, approval history, DM pairing |
hermes claw migrate / hermes import-agent |
Import from OpenClaw, Claude Code, or Codex CLI |
hermes update / hermes uninstall |
Update source installs (channels main, stable, canary); remove |
Source: CLI Commands Reference.
Self-Evolution Pipeline Facts¶
| Item | Value |
|---|---|
| Repository | NousResearch/hermes-agent-self-evolution (MIT) |
| Engines | DSPy + GEPA (MIT); Darwinian Evolver (AGPL v3, external CLI only) for planned code evolution |
| Phase 1: skill files | Implemented |
| Phases 2-5: tool descriptions, system prompt sections, tool code, continuous loop | Planned |
| Cost | About $2-10 per optimization run (README) |
| Guardrails | Full pytest pass, skills <= 15 KB, tool descriptions <= 500 chars, no mid-conversation prompt changes, semantic preservation, human PR review |
| Research basis | GEPA paper, arXiv 2507.19457, ICLR 2026 Oral |
Known Security Advisories¶
Hermes Agent has had multiple CVEs assigned in 2026. Most were published through VulDB-style disclosure and aggregated by CVE feeds; fixed versions are often not stated. Check the repository security page for the current list.
| CVE | Affected (as published) | Component / issue |
|---|---|---|
| CVE-2026-7112 | 0.8.0 | _check_auth in gateway/platforms/api_server.py: improper authentication (published 2026-04-27, moderate) |
| CVE-2026-7396 | 0.8.0 | gateway/platforms/wecom.py |
| CVE-2026-9350 | up to 2026.4.16 | check_all_command_guards in tools/approval.py: missing authorization |
| CVE-2026-9368 | up to 2026.4.16 | execute_code in tools/code_execution_tool.py |
| CVE-2026-10548 | up to 2026.4.23 | _sync_anthropic_entry_from_credentials_file: local authentication bypass |
| CVE-2026-10223 | not stated | _scan_memory_content: injection leading to code execution |
| CVE-2026-11461 | up to 0.12.0 | Session resolution: access to other users' sessions |
| CVE-2026-14628 | up to 2026.5.16 | extract_media in gateway/platforms/base.py: path traversal via webhook |
| CVE-2026-85105 | 0.18.0 | session_id in _sess_nowait: authorization bypass |
| CVE-2026-85106 | 0.18.0 | fetchLinkTitle: SSRF |
Severity not independently verified
The affected ranges above come from the CVE descriptions. This page does not verify CVSS scores or fixed versions. Stay on the latest tag.
Cost Reference¶
| Component | Cost | Basis |
|---|---|---|
| Software | Free (MIT) | LICENSE |
| Self-evolution run | ~$2-10 per run | Self-evolution README |
| Hosting | "$5 VPS" is the project's own minimum example | README |
| LLM API usage | ~$15-80/month typical | Community estimate (2026-04), unverified |
| Nous Portal subscription | TBD: pricing not published in the docs | Nous Portal |
| RetainDB memory provider | $20/month | Memory providers docs |