Hermes Agent v0.9.0 — The Everywhere Release
Overview
v0.9.0 — The Everywhere Release. Released April 13, 2026. Since v0.8.0: 487 commits · 269 merged PRs · 167 resolved issues · 493 files changed · 63,281 insertions · 24 contributors.
This release is about one thing: being everywhere. Hermes broke out of the terminal and a handful of chat platforms, diving into the Apple ecosystem (iMessage), the Chinese ecosystem (WeChat), and even mobile (Android/Termux). A brand-new local Web Dashboard lets you manage everything without editing config files. Fast Mode eliminates wait time for latency-sensitive workflows. Background process monitoring frees you from polling hell. And 11 security hardening fixes make sure it all runs fast and safe.
Major Features
1. Local Web Dashboard — Manage Everything in Your Browser
Hermes now ships with a browser-based management dashboard for local use. Configure settings, monitor sessions, browse skills, and manage your gateway — all from a clean web interface, no config files, no terminal needed. The easiest way to get started with Hermes.
The dashboard is built on FastAPI + Uvicorn, running at 127.0.0.1:9119 by default, with real-time gateway status, session history, and usage analytics.
2. Fast Mode (/fast) — Priority Inference Pipeline
Type /fast in chat to route your current session through priority processing queues for OpenAI and Anthropic models, dramatically reducing inference latency. Supported models include GPT-5.4, Codex, Claude, and more.
# Enable fast mode
/fast
# All subsequent LLM calls go through priority queues with much lower latency
# Type /fast again to disable
Backed by OpenAI Priority Processing and Anthropic’s fast tier, expanded across all eligible models. (#6875, #6960, #7037)
3. iMessage via BlueBubbles — Hermes Enters the Apple Ecosystem
Full iMessage integration through BlueBubbles. Auto-webhook registration, setup wizard integration, and crash resilience — Hermes can now send and receive iMessages from your Mac.
# Select BlueBubbles in the setup wizard and follow the pairing guide
hermes setup
4. WeChat (Weixin) & WeCom Callback Mode — Full Chinese Messaging Ecosystem
WeChat (Weixin): Native WeChat support via the iLink Bot API, with streaming cursor, media uploads, and Markdown link handling.
WeCom Callback Mode: A callback-mode adapter for self-built enterprise apps with atomic state persistence.
Hermes now covers the Chinese messaging ecosystem end-to-end — from personal WeChat to enterprise WeCom. (#7166, #7943)
5. Termux / Android Support — Hermes Goes Mobile
Run Hermes natively on Android via Termux. Adapted install paths, TUI optimized for mobile screens, voice backend support, and /image command works on-device.
# Install in Termux using the specialized termux bundle
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --bundle termux
(#6834)
6. Background Process Monitoring (watch_patterns) — Get Notified, Don’t Poll
Set regex patterns to watch for in background process output and get real-time notifications when they match. Monitor for errors, wait for specific events (“listening on port 3000”), or watch build logs — no more polling.
# hermes.config.yaml
watch_patterns:
- pattern: "Error:.*"
notify: true
- pattern: "listening on port \\d+"
notify: true
label: "Service ready"
(#7635)
7. xAI (Grok) & Xiaomi MiMo — Native Provider Support
Two major model providers gain first-class support:
- xAI (Grok): Direct API access, model catalog, setup wizard integration
- Xiaomi MiMo: Setup wizard, model catalog, empty response auto-recovery
Plus Qwen OAuth with portal request support. (#7372, #7855)
8. Pluggable Context Engine — Customize What the Agent Sees
Context management is now a pluggable slot via hermes plugins. Swap in custom context engines that control exactly what the agent sees each turn — filtering, summarization, or domain-specific context injection.
# Install a custom context engine plugin
hermes plugins install my-context-engine
(#7464)
9. Unified Proxy Support — Works Behind Firewalls
SOCKS proxy, DISCORD_PROXY, and system proxy auto-detection across all gateway platforms. Hermes works behind corporate firewalls — macOS auto-detects system proxy settings, Windows/Linux just need manual configuration. (#6814)
10. Comprehensive Security Hardening — 11 Critical Fixes
The deepest security hardening pass in Hermes history:
| Vulnerability | Fix | PR |
|---|---|---|
| SMS RCE | Twilio webhook signature validation | #7933 |
| Shell Injection | Sandbox write path quoting | #7940 |
| Git Argument Injection | Path traversal + argument injection guard | #7944 |
| SSRF | Slack image upload redirect guard | #7151 |
| Path Traversal | Checkpoint manager + skill manager boundary enforcement | #7156 |
| API Bind Guard | Enforce API_SERVER_KEY for non-loopback bindings |
#7455 |
| Approval Button Auth | Require authentication for session continuation | #6930 |
11. hermes backup & hermes import — One-Click Backup & Restore
Full backup and restore of your Hermes configuration, sessions, skills, and memory. Migrate between machines or snapshot before major changes — one command does it all.
# Backup everything
hermes backup
# Restore on a new machine
hermes import ./backup-2026-04-13.tar.gz
(#7997)
12. 16 Supported Platforms — Truly Everywhere
As of this release, Hermes supports 16 messaging platforms:
Telegram, Discord, Slack, WhatsApp, Signal, Matrix, iMessage (new), WeChat (new), WeCom, Email, SMS, DingTalk, Feishu, Mattermost, Home Assistant, Webhooks
13. Debugging Toolkit — /debug & hermes debug share
New debugging commands: /debug slash command available on all platforms for quick diagnostics, plus hermes debug share to upload a full debug report to a pastebin for easy sharing when troubleshooting. (#8681)
# Quick diagnostics in CLI
/debug
# Export and share a debug report
hermes debug share
Core Agent & Architecture
Provider & Model Support
- xAI (Grok) native provider with direct API access and model catalog
- Xiaomi MiMo as first-class provider — setup wizard, model catalog, empty response recovery
- Qwen OAuth provider with portal request support
- Fast Mode —
/fasttoggle for OpenAI Priority Processing + Anthropic fast tier - Structured API error classification for smart failover decisions
- Rate limit header capture shown in
/usage - API server model name derived from profile name
- Custom providers now included in
/modellistings and resolution - Fallback provider activation on repeated empty responses with user-visible status
- OpenRouter variant tags (
:free,:extended,:fast) preserved during model switch - Credential exhaustion TTL reduced from 24 hours to 1 hour
- OAuth credential lifecycle hardening — stale pool keys, auth.json sync, Codex CLI race fixes
- Empty response recovery for reasoning models (MiMo, Qwen, GLM)
- MiniMax context lengths, thinking guard, endpoint corrections
- Z.AI endpoint auto-detect via probe and cache
Agent Loop & Conversation
- Pluggable context engine slot via
hermes plugins - Background process monitoring —
watch_patternsfor real-time output alerts - Improved context compression — higher limits, tool tracking, degradation warnings, token-budget tail protection
/compress <focus>— guided compression with a focus topic- Tiered context pressure warnings with gateway dedup
- Staged inactivity warning before timeout escalation
- Prevent agent from stopping mid-task — compression floor, budget overhaul, activity tracking
- Propagate child activity to parent during
delegate_task - Truncated streaming tool call detection before execution
- Empty response retry (3 attempts with nudge)
- Adaptive streaming backoff + cursor strip to prevent message truncation
- Compression uses live session model instead of stale persisted config
- Strip
<thought>tags from Gemma 4 responses - Prevent
<think>in prose from suppressing response output - Turn-exit diagnostic logging to agent loop
- Scope tool interrupt signal per-thread to prevent cross-session leaks
Memory & Sessions
- Hindsight memory plugin — feature parity, setup wizard, config improvements (@nicoloboschi)
- Honcho — opt-in
initOnSessionStartfor tools mode (@Kathie-yu) - Orphan children instead of cascade-deleting in prune/delete
- Doctor command only checks the active memory provider
Messaging Platforms (Gateway)
New Platforms
- BlueBubbles (iMessage) — full adapter with auto-webhook registration, setup wizard, and crash resilience
- WeChat (Weixin) — native support via iLink Bot API with streaming, media uploads, markdown links
- WeCom Callback Mode — self-built enterprise app adapter with atomic state persistence
Platform Improvements
Discord:
- Allowed channels whitelist config
- Forum channel topic inheritance in thread sessions
DISCORD_REPLY_TO_MODEsetting- Accept
.logattachments, raised document size limit - Decouple slash command sync from readiness
Slack:
- Consolidated Slack improvements — 7 community PRs salvaged into one
- Handle assistant thread lifecycle events
Matrix:
- Migrated from matrix-nio to mautrix-python
- SQLite crypto store replacing pickle (fixes E2EE decryption)
- Cross-signing recovery key verification for E2EE migration
- DM mention threads + group chat events for Feishu
Gateway Core
- Unified proxy support — SOCKS, DISCORD_PROXY, multi-platform with macOS auto-detection
- Inbound text batching for Discord, Matrix, WeCom + adaptive delay
- Surface natural mid-turn assistant messages in chat platforms
- WSL-aware gateway with smart systemd detection
- All missing platforms added to setup wizard
- Per-platform
tool_progressoverrides - Configurable “still working” notification interval
/modelswitch persists across messages/usageshows rate limits, cost, and token details between turns- Drain in-flight work before restart
- Don’t evict cached agent on failed runs — prevents MCP restart loop
- Replace
os.environsession state withcontextvars - Derive channel directory platforms from enum instead of hardcoded list
- Validate image downloads before caching (cross-platform)
- Cross-platform webhook delivery for all platforms
- Cron Discord thread_id delivery support
- Feishu QR-based bot onboarding
- Gateway status scoped to active profile
- Prevent background process notifications from triggering false pairing requests
CLI & User Experience
Interactive CLI
- Termux / Android support — adapted install paths, TUI, voice,
/image - Native
/modelpicker modal for provider → model selection - Live per-tool elapsed timer restored in TUI spinner
- Stacked tool progress scrollback in TUI
- Random tips on new session start (CLI + gateway, 279 tips)
hermes dump— copy-pasteable setup summary for debugginghermes backup/hermes import— full config backup and restore- WSL environment hint in system prompt
- Profile creation UX — seed SOUL.md + credential warning
- Shell-aware sudo detection, empty password support
- Flush stdin after curses/terminal menus to prevent escape sequence leakage
- Handle broken stdin in prompt_toolkit startup
Setup & Configuration
- Per-platform display verbosity configuration
- Component-separated logging with session context and filtering
network.force_ipv4config to fix IPv6 timeout issues- Standardize message whitespace and JSON formatting
- OpenClaw → Hermes rebrand during migration
- config.yaml takes priority over env vars for auxiliary settings
- Harden setup provider flows + live OpenRouter catalog refresh
- Normalize reasoning effort ordering across all surfaces
- Remove dead
LLM_MODELenv var + migration to clear stale entries - Remove
/promptslash command — prefix expansion footgun HERMES_HOME_MODEenv var to override permissions- Fall back to default model when model config is empty
- Warn when compression model context is too small
Tool System
Environments & Execution
- Unified spawn-per-call execution layer for environments
- Unified file sync with mtime tracking, deletion, and transactional state
- Persistent sandbox envs survive between turns
- Bulk file sync via tar pipe for SSH/Modal backends
- Daytona — bulk upload, config bridge, silent disk cap
- Foreground timeout cap to prevent session deadlocks
- Guard invalid command values
MCP
hermes mcp add --envand--presetsupport- Combine
contentandstructuredContentwhen both present - MCP tool name deconfliction fixes
Browser
- Browser hardening — dead code removal, caching, scroll perf, security, thread safety
/browser connectauto-launch uses dedicated Chrome profile dir- Reap orphaned browser sessions on startup
Voice & Vision
- Voxtral TTS provider (Mistral AI)
- TTS speed support for Edge TTS, OpenAI TTS, MiniMax
- Vision auto-resize for oversized images, raise limit to 20 MB, retry-on-failure
- STT provider-model mismatch fix (whisper-1 vs faster-whisper)
Other Tools
hermes dumpcommand for setup summary- TODO store enforces ID uniqueness during replace operations
- List all available toolsets in
delegate_taskschema description - API server: tool progress as custom SSE event to prevent model corruption
- API server: share one Docker container across all conversations
Skills Ecosystem
- Centralized skills index + tree cache — eliminates rate-limit failures on install
- More aggressive skill loading instructions in system prompt (v3)
- Google Workspace skill migrated to GWS CLI backend
- Creative divergence strategies skill (@SHL0MS)
- Creative ideation — constraint-driven project generation (@SHL0MS)
- Parallelize skills browse/search to prevent hanging
- Read name from SKILL.md frontmatter in skills_sync
Security & Reliability
Security Hardening
- Twilio webhook signature validation — SMS RCE fix
- Shell injection neutralization in
_write_to_sandboxvia path quoting - Git argument injection and path traversal prevention in checkpoint manager
- SSRF redirect bypass in Slack image uploads + base.py cache helpers
- Path traversal, credential gate, DANGEROUS_PATTERNS gaps
- API bind guard — enforce
API_SERVER_KEYfor non-loopback binding - Approval button authorization — require auth for session continuation
- Path boundary enforcement in skill manager operations
- DingTalk/API webhook URL origin validation, header injection rejection
Reliability
- Contextual error diagnostics for invalid API responses
- Prevent 400 format errors from triggering compression loop on Codex
- Don’t halve context_length on output-cap-too-large errors
- Recover primary client on OpenAI transport errors
- Credential pool rotation on billing-classified 400s
- Auto-increase stream read timeout for local LLM providers
- Fall back to default certs when CA bundle path doesn’t exist
- Disambiguate usage-limit patterns in error classifier
- Harden cron script timeout and provider recovery
- Gateway interrupt detection resilient to monitor task failures
- Prevent unwanted session auto-reset after graceful gateway restarts
- Prevent duplicate update prompt spam in gateway watcher
- Deduplicate reasoning items in Responses API input
Infrastructure
- Multi-arch Docker image — amd64 + arm64
- Docker runs as non-root user with virtualenv
- Use
uvfor Docker dependency resolution - Container-aware Nix CLI — auto-route into managed container
- Nix shared-state permission model for interactive CLI users
- Per-profile subprocess HOME isolation
- Profile paths fixed in Docker — profiles go to mounted volume
- Docker container gateway pathway hardened
- Enable unbuffered stdout for live Docker logs
- Install procps in Docker image
- Shallow git clone for faster installation
hermes updatealways reset on stash conflict- Write update exit code before gateway restart (cgroup kill race)
- Nix:
setupSecretsoptional, tirith runtime dep - launchd stop uses
bootoutsoKeepAlivedoesn’t respawn
Notable Bug Fixes
- Fix:
/modelswitch not persisting across gateway messages - Fix: session-scoped gateway model overrides ignored
- Fix: compaction model context length ignoring config (3 related issues)
- Fix: OpenCode.ai context window resolved to 128K instead of 1M
- Fix: Codex fallback auth-store lookup
- Fix: duplicate completion notifications when process killed
- Fix: agent daemon thread prevents orphan CLI processes on tab close
- Fix: stale image attachment on text paste and voice input
- Fix: DM thread session seeding causing cross-thread contamination
- Fix: OpenClaw migration shows dry-run preview before executing
- Fix: auth errors misclassified as retryable
- Fix: Copilot-Integration-Id header missing
- Fix: ACP session capabilities
- Fix: ACP PromptResponse usage from top-level fields
- Fix: several failing/flaky tests on main
- Fix: backup marker filenames
- Fix:
NoneTypein fast_mode check - Fix: missing imports in uninstall.py
Documentation
- Platform adapter developer guide + WeCom Callback docs
- Cron troubleshooting guide
- Streaming timeout auto-detection for local LLMs
- Tool-use enforcement documentation expanded
- BlueBubbles pairing instructions
- Telegram proxy support section
hermes dumpandhermes logsCLI referencetool_progress_overridesconfiguration reference- Compression model context length warning docs
Upgrade
hermes update
For new installations, visit the install guide.
← Hermes Agent Changelog