Hermes Agent v0.11.0 — The Interface Release
Overview
v0.11.0 — The Interface Release. Released April 23, 2026. ~1,556 commits · 761 merged PRs · 1,314 files changed · ~224,000 insertions · 29 community contributors (290 including co-authors).
This is the architecture release Hermes Agent needed. The Interface Release does three things simultaneously: it rewrites the interactive CLI as a React/Ink TUI with a JSON-RPC backend, extracts a pluggable transport layer that decouples every provider from the core agent loop, and dramatically expands the plugin surface so third-party code can hook into tool execution, terminal output, and the dashboard. All while adding five new inference paths, native AWS Bedrock, and GPT-5.5.
This release folds in all highlights deferred from v0.10.0 (which shipped only the Nous Tool Gateway), so it covers roughly two weeks of work across the full stack.
Major Features
1. New Ink-based TUI — hermes --tui
The interactive CLI has been completely rewritten as a React/Ink terminal UI with a Python JSON-RPC backend (tui_gateway). This is not a skin overlay — it is a ground-up rebuild with ~310 commits across ui-tui/ and tui_gateway/.
Key capabilities:
- Sticky composer that freezes during scroll — your input stays pinned at the bottom no matter how much agent output is streaming
- Live streaming with OSC-52 clipboard support — copy agent output into your system clipboard even over SSH
- Status bar with per-turn stopwatch, git branch label, and activity indicators
- Stable picker keys — model and tool pickers use deterministic keybindings that don’t shift
/clearconfirm — no more accidental session wipes- Light-theme preset alongside the default dark theme
- Subagent spawn observability overlay — see when and where subagents are spawned, in real time
For users who live in the terminal:
hermes --tui
# or set it permanently
export HERMES_TUI=1
The TUI also ships slash command autocomplete (complete.slash), path autocomplete (complete.path), virtualized history rendering for performance, and dozens of resize/ghosting/sticky-prompt fixes. Internally, app.tsx was decomposed into app/event-handler, app/slash-handler, app/stores, and app/hooks — a clean separation of concerns that makes the TUI maintainable and extensible.
Primary authors: @OutThisLife + Teknium.
2. Transport ABC — Pluggable Provider Architecture
This is the most significant architectural change in the release. Previously, every provider lived as branching logic inside run_agent.py — format conversion, HTTP transport, and API shape were all tangled together in the core inference path. Adding a new provider meant modifying the core.
The Transport ABC extracts all of this into agent/transports/, where each transport owns its own format conversion and API shape:
| Transport | Provider | Purpose |
|---|---|---|
AnthropicTransport |
Anthropic | Messages API path |
ChatCompletionsTransport |
OpenAI-compatible | Default for most providers |
ResponsesApiTransport |
OpenAI | Responses API + Codex wiring |
BedrockTransport |
AWS Bedrock | Converse API transport |
Why this matters: Adding a new provider is now a plugin operation instead of a core patch. This is the foundation that lets five new inference paths land in a single release — NIM, Bedrock, Arcee, Step Plan, and Vercel ai-gateway all ship as self-contained transports. If you maintain a Hermes profile or write skills against it, this is the architecture you are building on.
3. Native AWS Bedrock Support
AWS Bedrock is now a first-class provider via the Converse API, built on top of the new BedrockTransport. Enterprise AWS deployments no longer need a third-party gateway to use Hermes.
# hermes.config.yaml
providers:
- name: bedrock-claude
provider: bedrock
model: us.anthropic.claude-sonnet-4-20250514-v1:0
region: us-east-1
This opens up Hermes to organizations that run inference inside their AWS account for compliance, data residency, or cost reasons.
4. Five New Inference Paths
The transport architecture made it possible to ship five entirely new inference backends in one release cycle:
- NVIDIA NIM — Native provider for NVIDIA’s inference microservices, allowing Hermes to call models deployed on your own infrastructure
- Arcee AI — Direct provider for Arcee’s specialized fine-tuned models
- Step Plan — Provider salvaged from community PR #6005
- Google Gemini CLI OAuth — Authenticate with Gemini via OAuth instead of API keys
- Vercel ai-gateway — With dynamic model discovery, pricing metadata, and attribution tracking (@jerilynzheng)
Additionally, Gemini is now routed through the native AI Studio API for better performance.
5. GPT-5.5 over Codex OAuth
OpenAI’s GPT-5.5 reasoning model is now available through your ChatGPT Codex OAuth credentials. Live model discovery is wired into the model picker — new OpenAI model releases appear automatically without catalog updates.
/hermes model:openai/gpt-5.5
This means Hermes users get access to OpenAI’s latest models the moment they are available, without waiting for a Hermes release to add them to the catalog.
6. QQBot — 17th Messaging Platform
Native QQBot adapter via QQ Official API v2 joins the messaging lineup:
- QR scan-to-configure setup wizard — scan a QR code, done
- Streaming cursor support with emoji reactions
- DM and group policy gating — parity with WeCom/Weixin adapters
This makes Hermes Agent available to hundreds of millions of QQ users.
7. Plugin Surface — Major Expansion
The plugin system gained significant new capabilities in this release:
| Hook / Capability | Description |
|---|---|
register_command() |
Plugins can add slash commands to the agent |
dispatch_tool() |
Plugins can invoke tools directly from their code |
pre_tool_call blocking |
Plugins can veto tool execution before it happens |
transform_tool_result() |
Plugins rewrite tool results generically after execution |
transform_terminal_output() |
Plugins rewrite terminal tool output |
Pluggable image_gen backends |
Plugins can ship their own image generation providers |
| Custom dashboard tabs | Plugins can extend the web dashboard with their own views |
| Shell hooks | Wire any shell script as a lifecycle hook — no Python required |
The bundled disk-cleanup plugin is now opt-in by default as a reference implementation, showing plugin authors how to use the new hooks.
8. /steer — Mid-Run Agent Nudges
/steer "Stop using SQLite, switch to PostgreSQL"
/steer <prompt> injects a note that the running agent sees after its next tool call — without interrupting the turn or breaking the prompt cache. For when the agent is heading in the wrong direction mid-task and you want to course-correct without restarting.
9. Smarter Delegation — Orchestrator Role
Subagents now have an explicit orchestrator role that can spawn their own workers, with configurable max_spawn_depth. The default is flat (no recursive spawning), keeping things predictable.
Concurrent sibling subagents share filesystem state through a file-coordination layer so they do not clobber each other’s edits:
delegate_task:
max_spawn_depth: 2 # allow orchestrators to spawn one level of workers
10. Auxiliary Models — Configurable UI
hermes model now has a dedicated “Configure auxiliary models” screen for per-task overrides:
- Compression model
- Vision model
- Session search model
- Title generation model
The auto routing now defaults to the main model for all auxiliary tasks across all users. Previously, aggregator users were silently routed to a cheap provider-side default — a behavior that caused confusion.
11. Web Dashboard — Plugin System & Live Theme Switching
The web dashboard is now extensible. Third-party plugins can add custom tabs, widgets, and views without forking the dashboard codebase.
Paired with a live-switching theme system — themes control colors, fonts, layout, and density — so users can hot-swap the dashboard look without a reload. Same theming discipline the CLI has, now on the web.
Dashboard polish highlights:
- i18n (English + Chinese) with language switcher
- react-router sidebar layout with sticky header
- Mobile-responsive design
- Vercel deployment support
- Real per-session API call tracking
- One-click update + gateway restart buttons
12. Shell Hooks
Wire any shell script as a Hermes lifecycle hook — no Python plugin required:
# pre_tool_call hook — runs before every tool execution
hermes config set hooks.pre_tool_call "./scripts/audit.sh"
# on_session_start hook
hermes config set hooks.on_session_start "./scripts/notify.sh"
Supported hooks: pre_tool_call, post_tool_call, on_session_start, on_session_end, and more.
13. Webhook Direct-Delivery Mode
Webhook subscriptions can now forward payloads straight to a platform chat without going through the agent — zero-LLM push notifications for alerting, uptime checks, and event streams. This saves token costs and latency for notifications that do not need AI processing.
Messaging Platforms — Major Updates
Telegram
- Dedicated
TELEGRAM_PROXYenv var +config.yamlproxy support — finally closes multiple proxy-related issues ignored_threadsconfig for Telegram groups — ignore noisy threads- Config option to disable link previews
- Auto-wrap markdown tables in code blocks for proper rendering
- Fixes: duplicate replies on cancelled streams, streaming cursor artifacts, Unicode dash normalization for iOS smart punctuation
Discord
- Forum channel support — Hermes can now participate in Discord forum threads
DISCORD_ALLOWED_ROLES— role-based access control for who can interact with the agent- Config option to disable slash commands
- Native
send_animationfor inline GIF playback send_messagemedia attachments/skillcommand group with category subcommands
Feishu
- Intelligent reply on document comments with 3-tier access control
- Show processing state via reactions on user messages
- Preserve @mention context for agent consumption
DingTalk
require_mention+allowed_usersgating — parity with Slack/Telegram/Discord- QR-code device-flow authorization for the setup wizard
- AI Cards streaming + emoji reactions + media handling
send_voice— native audio message deliverydm_policyandgroup_policy— parity with WeCom/Weixin/QQ adapters
Other Platforms
- WeCom: QR-scan bot creation + interactive setup wizard
- Signal: Media delivery support via
send_message - Slack: Per-thread sessions for DMs by default
- BlueBubbles (iMessage): Group chat session separation, webhook fixes
Gateway Core
- Gateway proxy mode — forward messages to a remote API server
- Per-channel ephemeral prompts (Discord, Telegram, Slack, Mattermost)
- Surface plugin slash commands natively on all platforms
--allflag forgateway startandrestart- Notify active sessions on gateway shutdown
- Fix: block agent from self-destructing the gateway via terminal
Tools & Skills
New Skills
| Skill | Description |
|---|---|
| concept-diagrams | Generate system concept diagrams |
| architecture-diagram | Cocoon AI port for architecture visualization |
| pixel-art | Hardware-palette pixel art with video animation support |
| baoyu-comic | Comic-style image generation |
| baoyu-infographic | 21 layouts × 21 styles for data visualization |
| page-agent | Embed Alibaba’s in-page GUI agent in your webapp |
| fitness-nutrition | Nutrition tracking with optional env var support |
| drug-discovery | ChEMBL, PubChem, OpenFDA, ADMET integration |
| touchdesigner-mcp | TouchDesigner integration for creative coding |
| adversarial-ux-test | UX testing from adversarial perspective |
Skill System Improvements
- Namespaced skill registration for plugin bundles
hermes skills resetto un-stick bundled skills- Skills guard opt-in —
config.skills.guard_agent_created - Fuzzy
@file completions with mtime sorting xitterreplaced withxurl— the official X API CLI
Tool Expansions
- Browser:
browser_cdp— raw Chrome DevTools Protocol passthrough for advanced browser automation - Execute Code: Project/strict execution modes (default: project)
- Image Generation: Multi-model FAL support, Recraft V3→V4, GPT Image 2, xAI image generation provider
- TTS/STT: Google Gemini TTS, xAI Grok STT, xAI TTS, KittenTTS local provider, CLI record beep toggle
- Cron:
wakeAgentgate for LLM-less jobs, per-jobenabled_toolsetsto cap token overhead - API Server: Stream
/v1/responsesSSE tool events, inline image inputs on both chat completions and responses endpoints - Docker/Podman: Entry-level Podman support, file-sync back to host on teardown
- MCP: 12 improvements across status tracking, timeout handling, and tool-call forwarding
Provider & Model Support
An extensive refresh of the model catalog:
| Addition | Details |
|---|---|
| Kimi K2.6 | OpenRouter, Nous Portal, native Kimi, HuggingFace |
| Kimi K2.5 | Promoted to first position in all model suggestion lists |
| Xiaomi MiMo v2.5-pro + v2.5 | OpenRouter, Nous Portal, and native |
| Claude Opus 4.7 | Nous Portal catalog |
| GLM-5V-Turbo | For coding plan |
| GPT-5 family | Corrected context lengths in fallback defaults |
| xAI Grok | Upgraded to Responses API |
| Ollama | Cloud provider support, GLM continuation, think=false control |
| minimax-m2.5 | OpenRouter free tier |
Configurable request_timeout_seconds per-provider and per-model, configurable agent.api_max_retries, and ctx_size context length key for Lemonade server.
Agent Loop & Conversations
/steer <prompt>— mid-run course correction without breaking prompt cache- Orchestrator role + configurable spawn depth for hierarchical delegation
- Cross-agent file state coordination for concurrent subagents
- Compressor upgrades: smart collapse, dedup, anti-thrashing, template upgrade
- Compression summaries respect the conversation’s language
- Auto-continue interrupted agent work after gateway restart
- Activity heartbeats prevent false gateway inactivity timeouts
- PLATFORM_HINTS for Matrix, Mattermost, and Feishu
Multiple agent-loop fixes: reset retry counters after compression, break compression-exhaustion infinite loops, prevent premature loop exits with weak models, improve interrupt responsiveness during concurrent tool execution, and preserve pre-start terminal interrupts.
Session & Memory
- Auto-prune old sessions + VACUUM state.db at startup
- Honcho overhaul — context injection, 5-tool surface, cost safety, session isolation
- Hindsight richer session-scoped retain metadata
- Fixes: deduplicate memory provider tools, discover user-installed memory providers, preserve
session_idacrossprevious_response_idchains
CLI & UX
- Dynamic shell completion for bash, zsh, and fish
- Light-mode skins + skin-aware completion menus
- Numbered keyboard shortcuts on approval and clarify prompts
- Markdown stripping + compact multiline previews
--ignore-user-configand--ignore-rulesflags- Account limits section in
/usage - ESC cancels secret/sudo prompts with clearer skip messaging
- Doctor: Command Installation check for
hermesbin symlink
Performance
- Virtualized history rendering in the TUI — smooth scrolling through thousands of messages
- Concurrent tool execution with improved interrupt responsiveness
- Session auto-prune + VACUUM keeps the state database lean
- Faster session switching with lazy-loaded platform adapters
Security & Reliability
- Global toggle to allow private/internal URL resolution — off by default
- Block agent from self-destructing the gateway via terminal
- Telegram callback authorization on update prompts
SECURITY.mdadded to the repository- Complete ASCII-locale UnicodeEncodeError recovery for
api_messagesandreasoning_content - Prevent stale
os.environleak afterclear_session_vars - Prevent agent hang when backgrounding processes via terminal tool
- Warn about legacy
hermes.serviceunits duringhermes update
Upgrade
hermes update
This is a non-breaking upgrade. Existing profiles continue working as-is. If you spend significant time in interactive sessions, try the new TUI with hermes --tui. If you deploy on AWS, prototype the Bedrock transport against your existing prompts and compare latency and per-token cost.
For new installations, visit the install guide.
← Hermes Agent Changelog