v0.15.0

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 commandhermes kanban swarm creates 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_progress concurrency 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:

  1. Single source of truthtools/threat_patterns.py with ~15 new Brainworm/C2 patterns shared across all scanning code.
  2. Memory scanning at load time — recalled memory is scanned before it enters the context window.
  3. 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: false to 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), and web-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 --version cold: 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>/.env when 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-oauth base_url pinned to x.ai origin — credential-leak vector closed.
  • Dead OAuth tokens quarantined on refresh failure (xAI, Codex, MiniMax).
  • Nous Portal inference_base_url validated against host allowlist.

Supply Chain

  • On-demand supply-chain audithermes audit checks dependencies against OSV.dev.
  • hermes update syntax-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 patch tool — 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_id for 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_mention filter 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 mcp presents 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

  • /update slash command in CLI and TUI with auto-rollback on syntax check failure.
  • --branch flag for hermes update.
  • ▶ N indicator in status bar for running /background tasks.
  • Configurable paste-collapse thresholds (TUI + CLI).
  • /resume accepts position numbers.
  • TUI session orchestrator — multiple live sessions in one TUI window.
  • mouse_tracking DEC 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 supervisionServiceManager protocol (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 dump reporting.
  • hermes update prints docker pull guidance 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.


Full changelog on GitHub

← Hermes Agent Changelog