v0.9.0

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

(#6437, #6460, #6494)

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/fast toggle 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 /model listings 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 monitoringwatch_patterns for 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 initOnSessionStart for 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_MODE setting
  • Accept .log attachments, 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_progress overrides
  • Configurable “still working” notification interval
  • /model switch persists across messages
  • /usage shows 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.environ session state with contextvars
  • 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 /model picker 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 debugging
  • hermes 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_ipv4 config 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_MODEL env var + migration to clear stale entries
  • Remove /prompt slash command — prefix expansion footgun
  • HERMES_HOME_MODE env 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 --env and --preset support
  • Combine content and structuredContent when both present
  • MCP tool name deconfliction fixes

Browser

  • Browser hardening — dead code removal, caching, scroll perf, security, thread safety
  • /browser connect auto-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 dump command for setup summary
  • TODO store enforces ID uniqueness during replace operations
  • List all available toolsets in delegate_task schema 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_sandbox via 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_KEY for 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 uv for 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 update always reset on stash conflict
  • Write update exit code before gateway restart (cgroup kill race)
  • Nix: setupSecrets optional, tirith runtime dep
  • launchd stop uses bootout so KeepAlive doesn’t respawn

Notable Bug Fixes

  • Fix: /model switch 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: NoneType in 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 dump and hermes logs CLI reference
  • tool_progress_overrides configuration reference
  • Compression model context length warning docs

Upgrade

hermes update

For new installations, visit the install guide.


Full changelog on GitHub

← Hermes Agent Changelog