Hermes Agent Lab

Hermes Agent Blog — Practical Guides & Insights

Latest articles and insights.

Why Hermes Reported Your Run Cost $0.00

Direct OpenAI, xAI, Anthropic, Google and DeepSeek runs now fall back to the vendor's own list price instead of reporting an unknown or zero cost — while relays, proxies and subscription routes deliberately stay unpriced.

Read more

App-backed MCP servers: why Hermes now checks whether that app is installed first

A portable Hermes plugin can now declare which local application it depends on: the install refuses when the app is missing, the runtime trusts only the app's own live endpoint file, and unavailable tools say what to do about it.

Read more

One switch, two desktops: Hermes Simple / Advanced interface mode

The desktop app now has two interface modes. Simple keeps the conversation and puts the statusbar, terminal, tool-call payloads and subagent state away; Advanced is the app you already know. A mode changes what is shown, never what Hermes can do.

Read more

Install a plugin without restarting the gateway: Hermes wires it up live

A running gateway now wires a freshly installed plugin on the spot: slash commands, button callbacks and inbound transforms work immediately, while tools and system-prompt sections wait for the next session and portable MCP servers wait for an mcp.reload.

Read more

Every message reads your config: Hermes just took the lock off that hot path

Config reads used to take a global lock and re-parse YAML every single time. Cached hits are now lock-free, and the same read that waited 2 seconds finishes in under 2 milliseconds. Here is why that is safe.

Read more

Pinning skills into every session: skills.auto_load, so the agent never forgets your process

Skills are on-demand by default: the agent reads the short descriptions for free and only loads a skill when a task calls for it. skills.auto_load changes that step — skills listed in config.yaml are fully loaded at the start of every new session, on CLI, TUI, gateway, cron and API agents alike (PR #92048). The config, how it differs from --skills and project-local skills, and why it does not break your prompt cache.

Read more

Teaching CI to read Hermes: the stream-json event stream instead of screen-scraping

hermes chat -q "..." --format stream-json emits machine-readable JSONL — an init record, streamed text, tool calls and results, and a final result envelope carrying token stats and an exit code (PR #90411). The full event field table, exit-code semantics (0/1/130/75), jq and Python consumers, and the 5000-character output cap you must plan around.

Read more

You already pay for Claude Pro/Max — now Hermes can use it

The official claude-subscription-directsdk plugin makes Hermes drive the unmodified official claude CLI as a request-scoped model client, running the full agent loop on your Claude Pro/Max subscription while Hermes keeps tools, approvals and compaction. It needs Hermes 0.21.4+, Python 3.10+, a logged-in claude CLI, and ships an admission relay that forwards exactly one upstream request per Hermes call.

Read more

One gateway per host: the multiplex-only migration, three real incidents, and a post-upgrade checklist

Since v0.21.4, Hermes no longer runs one gateway per profile: one host gateway per OS user serves every profile (PRs #118273 / #118097 / #118433). The old multiplex_profiles: false switch is retired and --standalone is gone. Here is the migration path, what it refuses, and the three real incidents the convergence fixed — including a P1 that could delete the wrong profile's memory.

Read more

v0.21.4 ships without release notes — here are ten changes already running on your machine

v0.21.4 (tag v2026.9.21, released September 21, 2026) is a patch tag for downstream consumers, and the notes say the full write-up lands with v0.22.0. The window holds 5,071 non-merge commits and 1,812 merged PRs since v0.21.3. Ten verified behaviour changes, each with the command or config that drives it.

Read more

One slow disk, one frozen assistant: Hermes moved three door-blocking jobs to the background

Your nightly backup starts, and the gateway stops answering. Or you close the laptop lid and the desktop app keeps chewing a full CPU core. Neither is a slow model: the event loop had a disk write, a process probe and a boot-time warm-up queued in front of every incoming message. Six changes merged on 18-20 September (#117206 / #117063 / #117066 / #117201 / #117041 / #116967) moved them off the critical path.

Read more

You wrote a provider plugin for your own gateway. Why does Hermes still treat it as a second-class citizen?

The model shows up and answers fine, but the picker has no reasoning badge, an image you paste is passed through as plain text, /usage stays empty, and a teammate still has to copy a token by hand. None of that is the plugin's fault: core only knew what the models.dev catalog knew. Three hooks merged on 20 September (#116570 / #116555 / #116576) hand capability declaration, usage reporting and login back to the plugin.

Read more

Five seconds to answer a one-word reply: three silent waits hiding in Hermes message delivery

A short WhatsApp reply took 5 s (Weixin 3 s), a laptop that powered off quietly discarded every Telegram command sent while it was down, and a mention-free Discord channel could never auto-thread. What they share: no error, no log line. Three changes merged on 19-20 September (#117104 / #116134 / #116168) fix them.

Read more

It said success: true and the attachment never left: Hermes closed both ends of MEDIA delivery

You ask the agent to send its report to Telegram, it reports success, your teammate gets nothing — the file is still inside the sandbox. The other direction is subtler: a crafted filename riding in a TTS output_path could splice an extra delivery directive into the result. Two changes merged on 20 September (#116842 / #116826) fix the missing half and the forged half.

Read more

Your Self-Hosted Chat UI Can Finally Watch the Agent Think

Point Open WebUI, LobeChat, or your own Vercel AI SDK frontend at Hermes and you used to get a blank spinner for the entire reasoning phase. PR #115797 wires the agent's reasoning stream into the OpenAI-compatible surface: live reasoning_content deltas on /v1/chat/completions, spec-native reasoning items on /v1/responses, and a capability flag so clients can detect support.

Read more

What 40 Rounds of Compaction Do to a Three-Day Session

Hermes ran a controlled eval over three real 500K-token session lineages with 15 recall questions each: the shipping path (summary plus a session-search recovery pointer) scored 78.9% recall while retaining 55K tokens, and the alternative that keeps every word of dialogue scores lower while carrying 2.1x the context — with the freed space per cycle decaying from 89% to 8% across 32-40 rounds.

Read more