v0.12.0

Hermes Agent v0.12.0 — The Curator Release


Overview

v0.12.0 — The Curator Release. Released April 30, 2026. 1,096 commits · 550 merged PRs · 1,270 files changed · 217,776 insertions · 213 community contributors.

The Curator Release answers a question every long-running agent user eventually faces: who maintains the agent’s knowledge? The answer is now the agent itself. An autonomous background Curator grades, consolidates, and prunes your skill library on a 7-day cycle — no human intervention needed. The self-improvement loop (the core engine that decides what to save after each turn) was substantially rewritten from free-form judgment to rubric-based grading. Four new inference providers landed, messaging platforms hit 19 with the first plugin-shipped adapter (Microsoft Teams), ComfyUI v5 and TouchDesigner-MCP moved from optional to bundled-by-default, Spotify and Google Meet got native integrations, and TUI cold start dropped by over half.


Major Features

1. Autonomous Curator — The Agent Maintains Itself

After months of heavy use, your skill library inevitably accumulates duplicates, stale drafts, and one-off skills that never got touched again. The Curator is a background agent that fixes this autonomously.

How it works:

  • Runs on the gateway’s cron ticker with a 7-day cycle by default
  • Grades every skill in the library for usage and relevance
  • Consolidates overlapping skills into unified entries
  • Prunes dead skills that haven’t been touched
  • Classifies archived skills as “consolidated” or “pruned” using model + heuristic
  • Writes per-run reports to logs/curator/run.json and REPORT.md
# Check curator status — ranks skills by usage
hermes curator status
# Output: most-used vs. least-used skills, recent consolidations, per-run reports

Built-in protections:

  • Bundled and hub skills are locked with defense-in-depth gates — the Curator won’t touch them
  • Pinned skills are protected from mutation
  • skill_manage refuses writes on pinned skills
  • External directory skills are respected as-is

Unified management:

# hermes.config.yaml
auxiliary:
  curator:
    provider: openrouter
    model: deepseek-v4-flash  # cheap aux model is ideal
    enabled: true

curator:
  cycle_days: 7
  max_prunes_per_run: 20
  min_skill_age_days: 3  # protect very new skills

Pick the Curator’s model under auxiliary.curator in hermes model and manage it from the dashboard. Run it on a cheap auxiliary model like DeepSeek V4 Flash — a 7-day cycle on a 500-skill library typically costs less than a single coding session.

2. Self-Improvement Loop — The Rubric Rewrite

The self-improvement loop is Hermes’ core learning engine: after every conversation turn, a background review fork decides what memories and skills to save or update. v0.12 rewrote this system from top to bottom.

What changed:

  • Rubric-based grading instead of free-form “should we update this?” questions — prevents the model from second-guessing obvious improvements
  • Active-update bias — prefers updating the skill the agent just loaded rather than creating duplicates
  • Handles sub-filesreferences/ and templates/ directories within skills are properly tracked and updated
  • Proper runtime inheritance — provider, model, and credentials actually propagate from the parent to the review fork now
  • Scoped toolsets — the review fork is restricted to memory + skills tools only; no shell, no web access, no sprawl
  • Clean shutdown — memory providers exit cleanly after review
  • Clean context — prior-turn tool messages are excluded from the review summary so the fork sees a fresh view

These changes make the self-improvement loop more predictable, more accurate, and significantly safer. The agent won’t accidentally modify files outside its scope or inherit stale credentials from previous sessions.

3. LM Studio — First-Class Provider

LM Studio graduated from a custom-endpoint alias to a full native provider:

# Dedicated auth, first-class setup flow
hermes setup --provider lmstudio

# Live model listing from running LM Studio instance
hermes model --provider lmstudio

Now with dedicated authentication, hermes doctor health checks, reasoning transport support, and live /models listing. Point Hermes at your local LM Studio instance and it discovers available models automatically.

4. Four New Inference Providers

Provider Details
GMI Cloud First-class API-key provider, same tier as Arcee/Kilocode/Xiaomi
Azure AI Foundry Auto-detection, full wiring for enterprise deployments
MiniMax OAuth PKCE browser flow with full OAuth integration
Tencent Tokenhub New provider for Tencent’s model ecosystem

Plus new models in the catalog: gpt-5.5 / gpt-5.5-pro, deepseek-v4-pro / deepseek-v4-flash, qwen3.6-plus, and a remote model catalog manifest so new OpenRouter and Nous Portal models appear without a Hermes release.

5. Pluggable Gateway + Microsoft Teams (19th Platform)

The gateway is now a plugin host — messaging adapters can ship as drop-in plugins outside the core codebase. Microsoft Teams is the first platform to ship this way.

# Platform Type
18 Tencent Yuanbao (元宝) Native adapter with text + media delivery
19 Microsoft Teams First plugin-shipped platform adapter

Gateway plugin architecture:

  • pre_gateway_dispatch hook — intercept messages before dispatch
  • pre_approval_request / post_approval_response hooks — customize approval flows
  • duration_ms on post_tool_call — performance tracking per tool invocation

6. Native Spotify Integration

Seven tools behind PKCE OAuth with an interactive setup wizard:

# Interactive setup
hermes spotify setup
# Walks you through OAuth, then the bundled skill is ready
Tool Function
Play/pause Control playback on any device
Search Find tracks, albums, artists, playlists
Queue Manage the play queue
Playlists Create and manage playlists
Devices Switch between available devices

Surfaced in hermes tools and documented for cron usage — automate your music alongside everything else.

7. Google Meet Plugin

Join calls, transcribe conversations, speak responses, and follow up after meetings — all as a bundled plugin:

# Join a meeting
hermes meet join https://meet.google.com/xxx-xxxx-xxx
# Enables captions, generates transcript, can speak responses, sends follow-up

Built on Realtime OpenAI transport with a Node bot server. Full pipeline bundled as a plugin — no external services required.

8. ComfyUI v5 & TouchDesigner-MCP — Now Built-in by Default

ComfyUI v5 moved from optional to built-in, with official CLI + REST + hardware-gated local install. Hermes can now generate images, manage workflows, and control ComfyUI directly.

TouchDesigner-MCP is now bundled by default and significantly expanded:

  • GLSL shader generation and manipulation
  • Post-FX pipeline configuration
  • Audio reactive setups
  • Geometry node programming
  • 9 new reference documents covering advanced techniques

These integrations position Hermes as a creative production tool alongside its coding and messaging capabilities.

9. Skill Ecosystem Expansion

Skill Description
Humanizer Strips AI-isms from generated text — makes output sound natural
claude-design HTML artifact skill with disambiguation from other design tools
design-md Google’s DESIGN.md specification skill
airtable Airtable database integration with API keys from .env
pretext Creative browser demos using @chenglou/pretext
spike + sketch Throwaway experiments + HTML mockups

Skills UX improvements:

# Install skills from a direct URL
hermes skills install https://example.com/skill.tar.gz

# Reload skills without restarting
/reload-skills

# List skills with enabled/disabled status
hermes skills list

10. hermes -z — One-Shot Mode

Run Hermes non-interactively for scripting and automation:

# Single prompt, get result, exit
hermes -z "Summarize this codebase"

# With model and provider overrides
hermes -z "Review this PR diff" --model gpt-5.5 --provider openrouter

# Use environment variable
HERMES_INFERENCE_MODEL=claude-sonnet-4 hermes -z "Explain this error"

Perfect for CI/CD pipelines, git hooks, and any automation where you need a one-shot agent call.

11. Web Dashboard — Models Tab

A new Models tab with rich per-model analytics. Configure your main and auxiliary models directly from the browser:

  • Usage stats per model
  • Cost tracking and trends
  • Switch main and auxiliary models from the dashboard
  • Dashboard Chat tab with xterm.js + JSON-RPC sidecar

12. Performance — 57% Faster Cold Start

Visible TUI cold start time cut by more than half through:

  • Lazy agent initialization — don’t spin up the full agent until needed
  • Lazy imports — OpenAI, Anthropic, Firecrawl, and account_usage loaded on demand
  • mtime-cached load_config() — config re-reads avoided when nothing changed
  • Memoized get_tool_definitions() — TTL-cached check function results
  • Precompiled dangerous-command patterns — regex compilation done at startup, not per-invocation

Additional performance work: cached Ink text measurements across Yoga flex re-passes, stabilized long-session scrolling, and lazily seeded virtual history heights.

13. Native Multimodal Image Routing

Images now route based on the model’s actual vision capability rather than provider defaults. If a model supports vision, images go through. If not, they’re handled gracefully. No more guessing which providers support images — the system checks.

14. Gateway Media Parity

Native multi-image sending across Telegram, Discord, Slack, Mattermost, Email, and Signal. Centralized audio routing with FLAC support and Telegram document fallback. The gateway now handles rich media consistently across every supported platform.


New Built-in Tools & Commands

Tool / Command Description Usage
hermes curator Background agent for skill library maintenance hermes curator status
hermes -z Non-interactive one-shot mode hermes -z "<prompt>" --model gpt-5.5
hermes update --check Preflight check before update hermes update --check
hermes fallback Manage fallback provider chains hermes fallback list
/busy Busy input mode (steer/queue) /busy steer
/btw Alias for /background /btw <task>
/reload-skills Hot-reload skills without restart /reload-skills
/reload Hot-reload .env in TUI /reload
/mouse Toggle mouse mode (WSL2 ghost-mouse fix) /mouse
pre_gateway_dispatch Plugin hook before message dispatch Plugin API
pre_approval_request / post_approval_response Approval flow hooks Plugin API

TUI — Major Upgrade

The TUI caught up to and surpassed the classic CLI in several areas:

  • LaTeX rendering — mathematical expressions render natively
  • Pluggable busy-indicator styles — customize the loading animation
  • Opt-in auto-resume of last session on startup
  • Session deletion from /resume picker with d key
  • Line-by-line scroll on modified mouse wheel
  • Queue editing — delete queued messages with ctrl-x, cancel with esc
  • Expanded light-terminal auto-detection with HERMES_TUI_THEME env var
  • Voice mode parity with CLI — VAD loop + TTS + crash forensics
  • Mini help menu on ? in the input field
  • Per-section visibility for the details accordion
  • Proactive mouse disable on ConPTY + /mouse toggle (WSL2 ghost-mouse fix)

TTS — Pluggable Provider Registry

Text-to-speech is now a pluggable system:

# hermes.config.yaml
tts:
  providers:
    piper:           # local TTS — no cloud needed
      voice: en_US-lessac-medium
    openai:          # cloud TTS
      voice: alloy

Piper ships as a native local TTS provider, closing a long-standing community request for offline speech. Pick your provider, switch between them, and Hermes handles the rest.


Improvements

Core Agent & Architecture

  • Configurable prompt cache TTLprompt_caching.cache_ttl (5m default, 1h opt-in) for cost savings in bursty sessions
  • Delegate child_timeout_seconds default bumped to 600s for longer subagent tasks
  • Diagnostic dump when subagent times out with 0 API calls — helps debug silent failures
  • Gateway busts cached agent on compression/context_length config edits — no stale agents
  • Opt-in runtime-metadata footer on final replies — shows model/provider info
  • /fast whitelist broadened to all OpenAI + Anthropic models
  • auxiliary.extra_body.reasoning translates into Codex Responses API

Compression

  • Retry summary on main model before giving up on unknown errors
  • Notify users when configured aux model fails, even if main-model fallback recovers
  • /compress wrapped in _busy_command to block input during compression

Session & Memory

  • Trigram FTS5 index for CJK (Chinese/Japanese/Korean) search with repair + migration
  • tool_name + tool_calls indexed in FTS5 for searchable tool history
  • Auto-prune orphan checkpoints at startup
  • Memory providers notified on mid-process session_id rotation
  • Preserve symlinks during atomic file writes

Messaging Platforms

Platform Improvement
Telegram Chat allowlists for groups/forums; markdown table rendering; native multi-image
Discord Opt-in toolsets + ID injection + tool split
Slack Every gateway command as native slash; strict_mention config; channel_skill_bindings
Signal Native markdown formatting (bodyRanges, reply quotes, reactions); multi-image
Feishu/Mattermost/Email Native multi-image sending

Cron

  • Honor hermes tools config for cron platform
  • Per-job workdir — project-aware cron runs
  • context_from field — chain cron job outputs

Browser

  • CDP supervisor — dialog detection + response + cross-origin iframe eval
  • Auto-spawn local Chromium for LAN/localhost URLs when cloud provider is configured

Execute Code

  • Vercel Sandbox backend for execute_code / terminal
  • Collapse subagent task_ids to shared container
  • Docker: run container as host user to avoid root-owned bind mounts

Observability

  • Bundled Langfuse observability plugin — trace every tool call, model request, and agent decision
  • Bundled hermes-achievements plugin — scans full session history for milestone detection

Security & Reliability

  • Secret redaction off by default — prevents the long-standing issue where fake secret-shaped substrings in tool outputs mangled patches and API payloads. Opt in via redaction.enabled: true when needed
  • [SYSTEM:[IMPORTANT: in all user-injected markers — dodges Azure content filter false positives
  • Hardline blocklist for unrecoverable commands — certain destructive commands now blocked outright
  • Canonical mask_secret helper — unified secret masking across the codebase
  • Sweep expired paste.rs uploads on a real timer
  • Preserve symlinks during atomic file writes
  • Probe /dev/tty by opening it, not bare existence check

Notable Bug Fixes

360 fix: PRs landed this window. Key highlights:

  • Background review fork inherits parent’s live runtime — provider/model/credentials now propagate correctly (previously the fork ran with stale config)
  • Streaming reasoning persists on assistant turns (was being dropped on DeepSeek/Kimi)
  • Cross-provider reasoning isolation — DeepSeek/Kimi reasoning content no longer leaks across provider histories
  • croniter promoted to core dependency — fixes cron scheduling failures
  • Compression recovery — retry on main model before giving up; user notified when aux fails
  • FTS5 search — tool_name + tool_calls indexed with repair + migration
  • Vision cache uses HERMES_HOME instead of cwd
  • MCP definitions refs rewritten to $defs in input schemas — fixes provider-side 400 errors
  • Azure content filter compatibility — renamed system markers avoid Azure content filter flags
  • Discord tool limit parameter coerced to int before min() call
  • ACP image prompt advertisement and forwarding

The vast majority of fixes landed in streaming, compression, and tool-calling paths across all major providers — DeepSeek, Kimi, Moonshot, GLM, Qwen, MiniMax, Gemini, Anthropic, and OpenAI.


Removed / Reverted

  • Kanban multi-profile collaboration board — landed then reverted for design rework
  • computer-use cua-driver — preparatory PRs landed then reverted
  • BOOT.md built-in hook removed — replaced by hooks tutorial showing how to build it yourself
  • /provider + /plan slash commands dropped
  • flush_memories removed entirely

Upgrade

hermes update

For new installations, visit the install guide.


Full changelog on GitHub

← Hermes Agent Changelog