v0.19.0

Hermes Agent v0.19.0 — The Quicksilver Release


Overview

v0.19.0 — The Quicksilver Release. Released July 20, 2026. ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors.

Hermes is the messenger god, and this window we made him move like it. The Quicksilver Release is built around a single conviction: an autonomous agent that feels sluggish is an agent you won’t use. First-turn time-to-first-token dropped ~80% on every platform — cold start from ~4.3s to ~0.9s. Reasoning models stream their thinking live by default. The desktop app got 20+ targeted performance PRs (14× faster streaming markdown, virtualized diffs, snappy session switching). The TUI renders markdown incrementally.

Around that speed spine lies a release dense with capability: terminal billing (/subscription and /topup), password manager integration (Bitwarden & 1Password), smart approvals (LLM-reviewed commands by default), live subagent watch windows, a durable delivery ledger that survives gateway crashes, and profile-based message routing for multi-tenant deployments. New providers (Fireworks AI, DeepInfra) and the newest frontier models (GPT-5.6, grok-4.5, kimi-k3, Claude Sonnet 5) round out the catalog.

This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.


Highlights

1. Hermes Got Dramatically Faster — First Token in a Fraction of the Time

The cold-start “Initializing agent…” phase used to eat ~4.3 seconds before your first turn even reached the model. It’s now ~0.9s — an ~80% cut that applies to the CLI, gateway, TUI, desktop, and cron alike.

What changed under the hood:

  • Discord capability detection moved off the critical path with a token-keyed 24-hour disk cache plus background refresh
  • Ollama probe skipped for known non-Ollama providers
  • Agent-init blocking work removed from the cold path
  • Prompt-build caching and mtime-cached timezone resolution

Perceived-latency round 2 attacked what you see while waiting:

  • display.show_reasoning is now ON by default — reasoning models stream their thinking live instead of showing a spinner for 30+ seconds
  • Response box paints per token instead of per line, with width-aware force-flush
  • Mixed tool batches are now segmented to recover lost concurrency
  • Per-call base64 re-serialization dropped from request-size estimates

If Hermes ever felt like it took a deep breath before answering, that breath is gone.

2. Desktop App Speed Wave — 20+ Targeted Performance PRs

@OutThisLife led a focused performance overhaul that makes the desktop app feel native under load, even with massive transcripts and busy agents.

Area Improvement
Streaming markdown 14× less CPU via incremental block lexing
Diff rendering Virtualized review-pane diffs — no more full-Shiki freeze on giant files
Session switching Instant switching even with huge conversations, layout-thrash cascade eliminated
Startup Serialization cut + per-turn REST amplification removed; profile backends pre-warm on hover intent
Boot-hidden panes Mount at idle instead of on the cold-start critical path
Per-token re-renders Sidebar and tool rows no longer re-render during streaming; eager JSON.stringify of tool args/results eliminated
Profiling Systematized perf benchmark harness replacing 12 one-off scripts

The net effect: the fastest, smoothest Hermes desktop experience ever.

3. Manage Your Nous Plan from the Terminal — /subscription and /topup

Changing your subscription used to mean a trip to the billing website. Now it lives right in the terminal:

# Open the full subscription flow in TUI or classic CLI
/subscription

# What you see:
# - Current plan and remaining allowance
# - Upgrade preview: "Pay $46.30 & upgrade now"
# - Downgrade effective date: "Downgrade takes effect on Aug 1"
# - Scheduled-change banners with undo option

# Top up your account
/topup

The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard.

4. Smart Approvals — LLM-Reviewed Commands by Default

When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one. Each verdict covers only that exact command — a later command matching the same pattern gets its own fresh review.

The decision flow:

  • Safe → auto-approved, no interruption
  • Dangerous → auto-denied, with reason logged
  • Uncertain → escalated to the user for manual decision

Combined with user-defined deny rules (which block commands even under yolo mode) and /deny <reason> (which tells the agent why you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control.

# Deny with a reason — the agent learns from your rejection
/deny that would delete the production database

# Define deny rules in config that block even under yolo
deny_rules:
  - pattern: "rm -rf /"
    reason: "Never delete root"
  - pattern: "DROP (DATABASE|TABLE)"
    reason: "Database operations require manual review"

5. Password Manager Integration — Bitwarden & 1Password Secret Sources

API keys no longer have to live in a plaintext .env file. A new pluggable SecretSource interface lets Hermes fetch secrets from Bitwarden and 1Password (op:// references) at load time.

# hermes.config.yaml
secret_sources:
  - provider: bitwarden
    vault: "dev-creds"
    priority: 1

  - provider: onepassword
    vault: "Production"
    priority: 2
    # op:// references resolved at load time:
    # op://Production/OpenAI/credential → OPENAI_API_KEY

Key design decisions:

  • Multiple vaults enabled simultaneously with deterministic precedence
  • Conflict warnings when two sources provide the same variable
  • Per-variable provenance tracking — you always know where a secret came from
  • Consolidated eleven competing community PRs into one orchestrated interface
  • Future vault providers (HashiCorp Vault, AWS Secrets Manager, etc.) drop in as plugins

6. Watch Your Subagents Work — Live Transcripts + Durable Background Delegation

Delegated subagents are no longer invisible workers disappearing behind a spinner.

# delegate_task now returns live transcript files
/delegate_task "Research competitors A, B, C in parallel"

# Watch any subagent live from another terminal
tail -f /tmp/hermes-delegate-abc123.log
# Every tool call, result, and streamed reply — one human-readable log per child

Durable background delegation means if the process restarts mid-run, results are restored and delivered through an ownership-checked ledger instead of vanishing. Fan out a fleet, watch any worker live, and never lose the results.

7. Delivery-Obligation Ledger — Crash-Proof Responses

If the gateway died between generating your response and confirming the platform actually delivered it, that answer used to be silently gone — and you’d paid for the turn. No more.

Final responses are now recorded in a durable ledger in state.db around the platform send and redelivered on the next boot. This closes a P1 silent-loss window for Telegram, Discord, Slack, and every other messaging channel. A finished answer can no longer be lost.

8. One Gateway, Many Profiles — Profile-Based Message Routing

A single multiplexed gateway sharing one bot token can now route specific guilds, channels, or threads to different profiles — each with fully isolated config, skills, memory, and secrets.

# Point your work Discord server at the 'work' profile
# and your hobby server at 'personal' — from one bot
gateway:
  multiplex_profiles:
    - profile: work
      discord:
        guilds: ["123456789"]
        channels: ["987654321"]
    - profile: personal
      discord:
        guilds: ["111111111"]

A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway.

9. New Providers & Frontier Models

Addition Details
Fireworks AI First-class provider with cost estimation, promoted to #2 in provider pickers
DeepInfra Hardened integration with full catalog wiring
Upstage Solar New provider via community salvage
GPT-5.6 Sol/Terra/Luna + Pro variants, wired end-to-end across every route
grok-4.5 GA catalog entry with reasoning allowlist
kimi-k3 Full rollout across Nous Portal, OpenRouter, and Kimi Coding endpoints; kimi-k2.x retired
Claude Sonnet 5 Curated catalog, intro pricing, metadata across every route
Claude Fable 5 Curated alongside Sonnet 5
LM Studio JIT model loading for local setups
Bedrock catalog wave Real context-window probing from live endpoint; 1M-context rows for current-gen Claude + Fable

You can now hide providers you don’t use with enabled: false per-provider or excluded_providers to scrub unwanted entries from /model pickers.

10. Reasoning Effort — max and ultra Tiers

Reasoning is now a dial, not a global switch:

# CLI: session-scoped reasoning control
/reasoning  # interactive picker: off → low → medium → high → max → ultra

# Per-model overrides in config
reasoning:
  models:
    "gpt-5.6-sol": ultra
    "claude-sonnet-5": max

# Per-slot effort in MoA presets — advisors think hard, synthesizer stays fast
moa:
  presets:
    deep-council:
      references:
        - model: gpt-5.6-sol
          reasoning_effort: max
        - model: claude-sonnet-5
          reasoning_effort: max
      aggregator:
        model: gpt-5.6-luna
        reasoning_effort: medium

GPT-5.6 and Codex’s top tiers are fully supported with sane clamping on providers with smaller scales. Per-model, per-task, and per-slot MoA effort control throughout.


Performance — The Speed Spine

First-Turn Latency (All Platforms)

  • ~80% TTFT cut: cold submit→dispatch ~4.3s → ~0.9s across CLI, gateway, TUI, desktop, and cron
  • Reasoning streaming ON by default: watch the model think instead of staring at a spinner
  • Per-token response painting with width-aware force-flush
  • Prompt-build caching and mtime-cached timezone resolution
  • Mixed tool batches segmented to recover lost concurrency

Desktop Speed Wave

  • 14× less splitter CPU via incremental block lexing for streaming markdown
  • Virtualized review-pane diffs — no more full-Shiki freeze
  • Snappy session switching on large transcripts, layout-thrash cascade killed
  • Startup optimization: serialization cuts, per-turn REST amplification removed
  • Profile backends pre-warm on hover intent; idle-mount boot-hidden panes
  • Per-token render elimination: sidebar + tool-row re-renders stopped during streaming
  • Systematized perf benchmark harness

Everywhere Else

  • TUI renders streamed markdown incrementally per block
  • Skill discovery cached by scan signature; snapshot manifest builds ~5× faster
  • Copy-on-write message prep instead of full deepcopy
  • Model-metadata probe-cache cluster for faster model switching
  • Gateway: byte-stable system prompts keep the prompt cache alive across turns
  • hermes update skips npm install when Node manifests are unchanged

Major Features

Gateway, Fleet & Relay

Durable delivery-obligation ledger — final responses recorded in state.db and redelivered on next boot if the gateway crashes before platform confirmation.

Profile-based routing — one bot token, multiple profiles. Route specific Discord guilds/channels, Telegram chats, or Slack workspaces to different profiles with isolated config, skills, memory, and secrets.

Per-session turn lease — prevents duplicate processing of the same message. Conversation-scope funnel and unified session reset boundaries.

Relay maturity — generic OIDC client-credentials provisioning (NAS-free), routed profiles carried from connector wire source, channel context consumed from connector, Nous auth forensics with nous_session_valid on /api/status for hosted self-healing.

Messaging Platforms

Platform Key Updates
Telegram, Discord, Matrix Inline choice pickers for /reasoning and /fast — one-tap native buttons
WhatsApp Native Baileys polls (clarify renders as a poll), locations, rich inbound metadata, dashboard pairing flow
Discord Recover messages missed during reconnect; auto-created threads renamed to session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts
Slack Live per-tool status line during agent execution
Telegram Per-topic free-response allowlist
Google Chat Clarify prompts rendered as cards
Voice stt.echo_transcripts toggle; MEDIA captions on standalone sends

Desktop App

  • Contribution-driven shell architecture on a layout-tree model — panes, zones, and layouts as data
  • Capabilities page: Skills/Tools/MCP + Hub in one place with responsive overlay nav
  • Hermes Cloud connection mode with soft gateway switch and gateway-settings polish
  • Keybind hint tooltips + keybinds settings tab + unified worktree dialog
  • Session + project color system — inherit from project, per-session override, shared across sidebar/tabs
  • Declarative memory-provider panel + full-config modal
  • Config-defined TTS/STT providers with xAI TTS params
  • UI scale setting, Ctrl/Cmd+wheel zoom, chat backdrop toggle
  • Full TypeScript conversion of the desktop tree

CLI & TUI

  • /model --once — one-turn model override that reverts automatically
  • Stacked slash-skill invocations/skill-a /skill-b do XYZ loads both skills in order
  • --safe-mode troubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints
  • /compact alias + preview flags
  • Hermes Console REPL with perf follow-ups
  • TUI: model picker refresh support; custom skill bundles dispatched as agent turns

Tool System, Skills & MCP

  • MCP: mcp__server__tool naming convention; server log notifications in agent.log; hosted OAuth completed across Dashboard + Desktop; configurable redirect_uri/redirect_host for proxied/WAF setups
  • Skills: security/unbroker (autonomous data-broker removal); blender-mcp reworked around catalog entry; unreal-mcp companion skill; humanizer pattern expansion
  • Browser: full snapshots stored on truncation; eval denylist opt-in
  • Kanban: modal create-task dialog + editable board project directory; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch
  • Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from HERMES_CRON_TIMEOUT

Sessions & Data Export

# Export sessions in multiple formats
hermes sessions export --format markdown
hermes sessions export --format html
hermes sessions export --format quarto
hermes sessions export --format prompt-only
hermes sessions export --format hf-trace  # Hugging Face-ready

# With secret redaction
hermes sessions export --redact

# Filter by age, workspace, platform
hermes sessions export --older-than 30d --workspace my-project

Your conversation history is a real dataset now, not a black box.

Secrets & Config

  • Pluggable SecretSource interface with Bitwarden & 1Password providers
  • hermes config get / unset commands for configuration management
  • Unknown root config key warnings + doctor deprecated-key reporting
  • Auxiliary model usage recorded per task in session accounting
  • Conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls

MoA Improvements

  • reference_max_tokens to cap advisor output and cut latency
  • Per-preset fanout cadence — user_turn runs advisors once per user turn
  • Stale presets surfaced without retries; half-filled preset saves rejected at the API boundary
  • Aggregator resolves reasoning like an acting model

Security & Reliability

Credential Surface Hardening

  • Vertex credentials scoped away from subprocess env and through profile secret scopes
  • Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport
  • Media/vision/image-gen local-file reads routed through one shared credential-read guard
  • Webhook body-cap sweep across every aiohttp server
  • Bot-token redaction in Telegram transport errors
  • Fireworks token prefixes added to the redactor
  • CI hardened against untrusted-ref interpolation

Redaction & Safe Defaults

  • Env-lookup false positives fixed for KEY=value and JSON/YAML config fields
  • Bot tokens scrubbed from Telegram connect/send errors
  • computer_use subprocess env sanitized across all five cua-driver spawn sites

Gateway & Agent Reliability

  • tool_call_id deduplicated across pre-API sanitizers
  • Background review inherits parent reasoning_config for Anthropic cache parity
  • Anthropic request-local clients so the stale/interrupt watchdog never corrupts SQLite
  • OAuth login 429 fixed — UA must not be claude-code/

Dashboard Security

  • Managed-files credential guard widened past .env + dir-tree gap closed
  • OAuth token TOCTOU closed with atomic 0o600 writes
  • Stale dashboards can’t recreate deleted profiles

Reverted in This Window

  • iron-proxy credential-injection egress firewall — reverted, not shipping
  • dynamic-workflow orchestration skill — landed, then reverted
  • memory provider-actions extension point — landed, then reverted
  • Note: the plugin pre_tool_call approve escalation was reverted mid-window but re-landed and ships in this release

Upgrade

hermes update

For new installations:

# macOS / Linux / WSL2
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

# Windows (PowerShell)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)

Full changelog on GitHub

← Hermes Agent Changelog