Hermes Agent v0.15.0 — The Velocity Release
Overview
v0.15.0 — The Velocity Release. Released May 28, 2026. 1,302 commits · 747 merged PRs · 1,746 files changed · 282,712 insertions · 36,699 deletions · 560+ issues closed (15 P0, 65 P1, 19 security-tagged) · 321 community contributors.
This is the release where Hermes got dramatically faster — to start, to run, to ship work, and to grow. The 16,083-line run_agent.py collapsed to 3,821 (-76%), redistributed across 14 cohesive agent/* modules. Kanban evolved from a task board into a real multi-agent platform: orchestrator auto-decomposition, swarm topology, scheduled tasks, worktree-per-task, per-task model overrides — 104 PRs end to end. session_search was rebuilt from the ground up to be instantaneous and free. Promptware defense landed against Brainworm-class attacks. Bitwarden Secrets Manager replaced every per-provider API key with one bootstrap token. Two new image_gen providers, skill bundles, ntfy as the 23rd messaging platform, and a deep xAI integration round rounded out one of the most ambitious releases yet.
Major Features
1. The Big Refactor — run_agent.py Goes from 16k to 3.8k Lines
This is the headline engineering story of the release. The file at the heart of Hermes — the agent conversation loop — was reduced from 16,083 lines to 3,821 (-76%). The extracted code was redistributed across 14 cohesive modules under the agent/ directory. Even the run_conversation function alone was 3,877 lines before the refactor.
What matters is the impact: every extraction keeps a thin forwarder on AIAgent, every test patch path is preserved, and every external caller stays compatible. The file that took 90 seconds to load in your editor now opens in a blink. Plugin authors can finally grep the codebase. Future Hermes development moves faster.
# The codebase is now navigable — explore the agent internals:
ls agent/
# agent/loop.py agent/conversation.py agent/tools.py
# agent/memory.py agent/review.py agent/compression.py
# ... and 8 more cohesive modules
2. Kanban Becomes a Real Multi-Agent Platform
104 PRs transformed Kanban from a task board into a production-grade multi-agent orchestration layer. Here’s everything that changed:
Orchestration & Dispatch:
- Auto-decomposition on triage — drop one task, the orchestrator breaks it into a tree of sub-tasks. No more manually planning your decomposition.
- Swarm topology in one command —
hermes kanban swarmcreates a complete Swarm v1 graph: root → parallel workers → gated verifier → gated synthesizer, all connected through a shared blackboard. - Review agents are dispatched from the review column — completed work gets an automatic review before landing.
# Create a full swarm topology for complex work
hermes kanban swarm --title "Build the API"
# Watch your workers in real time
hermes kanban inspect
Task Configuration & Scheduling:
- Per-task model overrides — use cheap models for boilerplate tasks, expensive ones for hard sub-tasks. One config per task card.
- Scheduled start times — set a task to begin at 3 AM on Tuesday. Useful for batch jobs and maintenance windows.
- Board-level default workdir — every task on the board inherits a working directory unless overridden.
- Configurable worktree paths and branches — each worker runs in an isolated git worktree.
max_in_progressconcurrency cap — limit how many tasks run simultaneously per board.- Claim TTL, retry fingerprinting, stale-task detection, and respawn guards prevent worker storms.
# Per-task configuration example
tasks:
- title: "Refactor auth module"
model_override: "claude-sonnet-4-20250514" # expensive model for hard work
- title: "Update docs"
model_override: "gpt-4.1-mini" # cheap model for boilerplate
- title: "Nightly backup"
scheduled_at: "2026-06-01T03:00:00Z"
Dashboard & Reliability:
- Drag-to-delete trash zone + bulk delete.
- Worker visibility endpoints:
/workers/active,/runs/{id},/inspect. - Cross-profile cron jobs surface in the dashboard.
- Fingerprint crash errors to prevent fleet-wide retry exhaustion.
- Mobile dashboard UX polish for on-the-go management.
3. session_search Rebuilt — 4,500× Faster, Zero Cost
The old session_search was an auxiliary-LLM tool that cost ~$0.30 per call, took ~90 seconds to summarize three sessions, and sometimes confabulated results when the right session wasn’t even in the search hits.
The new session_search is one tool with three modes (discovery, scroll, browse) inferred from which args are set — no mode parameter, no auxiliary LLM, no config knob, no companion skill.
Discovery: ~20ms (was ~90s) → 4,500× faster
Scroll: ~1ms → instantaneous
Cost: $0.00 → completely free
# Discovery mode — find relevant past sessions
session_search(query="user auth refactor")
# Scroll mode — browse through session contents
session_search(session_id="abc123", scroll_offset=0)
# Browse mode — deep-dive into a specific session
session_search(session_id="abc123", browse=True)
4. Promptware Defense — Brainworm-Class Attacks Blocked
Inspired by recent Brainworm / Promptware Kill Chain research, Hermes now defends the context window against prompt-injection attacks that try to hijack the agent through tool output, recalled memory, or stored skills.
Three layers of defense:
- Single source of truth —
tools/threat_patterns.pywith ~15 new Brainworm/C2 patterns shared across all scanning code. - Memory scanning at load time — recalled memory is scanned before it enters the context window.
- Tool-result delimiters — malicious files or remote services can no longer impersonate Hermes’ own system instructions.
Paired with a new security-guidance plugin that pattern-matches dangerous code writes before they execute.
5. Bitwarden Secrets Manager — One Token Replaces Every API Key
Stop keeping plaintext API keys in ~/.hermes/.env. Bitwarden Secrets Manager integrates natively — bws auto-installs lazily on first use, and you configure Hermes with a single bootstrap token:
# Set your Bitwarden access token
export BWS_ACCESS_TOKEN="your-bootstrap-token"
# Hermes pulls every credential from Bitwarden at startup
hermes chat
Key features:
- Rotate a key in the Bitwarden web app → rotation actually takes effect. Bitwarden defaults to source-of-truth, overwriting matching env vars on startup.
- Credentials are labeled with their source so you can see which keys came from Bitwarden vs. the local environment.
- EU Cloud and self-hosted Bitwarden server URLs supported.
- Flip
secrets.bitwarden.override_existing: falseto let local env vars take priority.
6. Skill Bundles — One Slash Command, Multiple Skills
A skill bundle is a named group of skills that loads them all together with one slash command. Set up your “writing day” bundle and /writing-day activates everything for the session.
# Define a bundle in your config
# Then activate with one command:
/writing-day
# Loads: humanizer + ideation + obsidian + youtube-content
Skills Hub improvements:
- Health checks and freshness badges on every skill.
- Watchdog cron job keeps your installed skills up to date.
- Three new optional skills:
code-wiki(Karpathy’s LLM-Wiki, persistent indexed dev wiki),openhands(delegate to OpenHands for parallel coding agents), andweb-pentest(OWASP web pentest recipes).
7. Deep xAI Integration
Six interlocking xAI improvements:
| Feature | Description |
|---|---|
| xAI Web Search | New plugins/web/xai/ provider — reuses your existing Grok OAuth or XAI_API_KEY, no new env vars |
hermes proxy xAI upstream |
Local OpenAI-compatible proxy backed by xai-oauth — no PKCE code to write in your client |
| Model retirement detection | grok-4, grok-3, and other retired models detected at startup with hermes migrate xai to one-shot config migration |
| Natural TTS pauses | Opt-in auto_speech_tags inserts [pause] tags between paragraphs for more natural-sounding voice |
base_url security |
xai-oauth base_url pinned to x.ai origin — closes a credential-leak vector |
| Execution guidance | Grok models get the same family-specific execution discipline as GPT/Codex — stops claiming completion without tool calls |
# Migrate from retired xAI models
hermes migrate xai
# Check which models are still active
hermes doctor
8. Krea Image Generation + FAL Plugin Architecture
Two new image_gen providers land, and the architecture gets cleaner:
- Krea 2 Medium ($0.03) and Krea 2 Large ($0.06) — auto-discovered, selectable via
hermes tools→ Image Generation → Krea. - FAL.ai backend ported from a monolithic tool into
plugins/image_gen/fal/— now one file, not a fork. New image providers are a plugin away.
9. ntfy — 23rd Messaging Platform
ntfy joins as the 23rd messaging platform — a self-hostable push notification service with no signup, no API key, just a topic URL. Your agent can send you push notifications from any cron job, kanban task completion, or send_message call — to your phone, watch, desktop, or homelab.
# Your agent sends you a notification when a kanban task completes:
# "Task 'Refactor auth' completed — 3 files changed, 45 tests passed"
# All via a single ntfy topic URL, no account required
10. TUI Session Orchestrator
The Ink TUI gained an active-session switcher overlay. List, switch between, refresh, and close multiple live process-local sessions without leaving the TUI. Dispatch a new session with a session-scoped model picker. Plus mouse-tracking DEC mode presets, scrollback preservation, IME input rendering improvements, and more.
Performance
The cold-start perf wave continued with four major optimization rounds:
| Optimization | Impact |
|---|---|
Defer openai._base_client import |
-240ms, -17MB on every CLI invocation |
| Agent-loop hot-path optimizations | 47% fewer per-turn function calls (399k → 213k for 31-turn chat) |
| Defer compression-feasibility check | -170 to -290ms per agent construction |
| Adaptive subprocess polling | ~195ms per tool call, 1+ second per turn |
Benchmark results:
- Termux cold start: 2.9s → 0.8s (on mobile devices)
hermes --versioncold: 701ms → 258ms (-63%)- Head-to-head benchmark against Codex CLI flipped from 5/11 wins to 6/11
Security & Reliability
Promptware & Memory Hardening
- Promptware defense with shared threat patterns, memory load-time scanning, and tool-result delimiters.
- Hermes control-plane files protected from prompt injection (
auth.json,config.yaml,webhook_subscriptions.json,mcp-tokens/). - Write-deny on
<root>/.envwhen running under a profile. - Defense-in-depth read-deny on credential stores.
Credential Safety
- Runtime env-sourced API keys no longer leak into
auth.json. xai-oauthbase_urlpinned tox.aiorigin — credential-leak vector closed.- Dead OAuth tokens quarantined on refresh failure (xAI, Codex, MiniMax).
- Nous Portal
inference_base_urlvalidated against host allowlist.
Supply Chain
- On-demand supply-chain audit —
hermes auditchecks dependencies against OSV.dev. hermes updatesyntax-validates critical files post-pull, auto-rollback on failure.
New Built-in Tools & Commands
| Tool / Command | Description |
|---|---|
session_search |
Rebuilt — three modes (discovery/scroll/browse), zero cost, 4,500× faster |
hermes kanban swarm |
Create a full Swarm v1 multi-agent topology in one command |
hermes migrate xai |
One-shot migration from retired xAI models |
hermes audit |
On-demand supply-chain audit via OSV.dev |
hermes proxy |
New xAI upstream — local OpenAI-compatible endpoint backed by xai-oauth |
/exit --delete |
Remove session on quit |
/update |
Slash command to update Hermes from within CLI/TUI |
Core Agent & Architecture
Agent Loop & Conversation
- Auxiliary task layered fallback (primary → chain → main agent → graceful fail) on capacity errors (402/429/connection).
- Buffer retry/fallback status — only surface on terminal failure (no mid-run “retrying…” noise).
- Host contract for external context engines.
- Fallback immediately on provider content-policy blocks.
- Per-turn tool-outcome verifier for
patchtool — indent preservation, CRLF preservation, per-file failure escalation. - Single-knob native vision for custom-provider models.
- Recover from providers returning list-type tool content.
- ContextVars propagate to concurrent tool worker threads.
Sessions & Memory
- Persist
platform_message_idfor recall across gateway restarts. - Inline memory-context mentions stay visible in conversation.
- Recalled memory labeled informational, not authoritative.
- Memory + context-engine tool injection gated on
enabled_toolsets. - Guard against external drift in
MEMORY.md/USER.md. - Honcho runtime peer mapping with setup wizard and docs.
Codex / Responses-API Maturation
- TTFB watchdog for stalled Codex Responses streams.
- Actionable hint when stale-call detector fires on known silent-reject pattern.
- Drop SDK
responses.stream()helper — consume events directly. - Codex 429 quota now classified as rate-limit, not missing credentials.
Messaging Platforms (Gateway)
- Deliverable mode — agents ship artifacts as native uploads from any platform (Slack/Discord/Telegram/Teams/Email).
hermes send— pipe any script’s output to any messaging platform.- Discord adapter migrated to bundled plugin.
- Mattermost adapter migrated to bundled plugin.
- Telegram: edit status messages in place, skip-STT audio path, route image documents through vision pipeline, chat-scoped auth, configurable
disable_topic_auto_rename. - Signal:
require_mentionfilter for group chats. - Matrix: warn on clock-skew silent message drops + E2EE full dep set.
- Feishu: require webhook auth secret + enforce auth for approval buttons.
- DingTalk: transcribe native voice notes.
- WeCom: safe-parse untrusted XML.
Tool System
Browser & Image Generation
- All cloud browser providers (Browserbase, Anchor, Camofox, Hyperbrowser) migrated to image_gen-style plugins.
- Auto-launch Chromium-family browser for CDP.
- Cache xAI ephemeral URL responses to disk.
MCP
- Nous-approved MCP catalog with interactive picker —
hermes mcppresents a curated catalog of Nous-vetted servers, install with one keystroke. - TLS client certificate (mTLS) support for HTTP and SSE MCP servers.
- Stdin paste-back fallback for headless OAuth flow.
CLI & TUI
/updateslash command in CLI and TUI with auto-rollback on syntax check failure.--branchflag forhermes update.▶ Nindicator in status bar for running/backgroundtasks.- Configurable paste-collapse thresholds (TUI + CLI).
/resumeaccepts position numbers.- TUI session orchestrator — multiple live sessions in one TUI window.
mouse_trackingDEC mode presets + scrollback preservation across branches and Termux.- Active profile shown in TUI prompt.
- Clipboard copy on linux/wayland.
- Full assistant text in scrollback (no history truncation).
Docker
- s6-overlay container supervision —
ServiceManagerprotocol (systemd/launchd/Windows/s6 backends), per-profile gateway supervision, container-restart reconciliation. - Upgrade Node to 22 LTS via multi-stage from
node:22-bookworm-slim. - Bake build-time git SHA into image for
hermes dumpreporting. hermes updateprintsdocker pullguidance inside the container.- Discover agent-browser Chromium binary at boot.
Upgrade
hermes update
If you’re using xAI models retired on May 15, run the migration first:
hermes migrate xai
hermes update
For new installations, visit the install guide.
← Hermes Agent Changelog