The agent that
grows with you
Self-improving AI agent with persistent memory, learning loop, and multi-platform support (Telegram, Discord, CLI, WhatsApp, Signal, Slack). 40+ built-in tools, cron scheduling, and autonomous subagents.
TL;DR
Latest Release- ▸ *Release Date:** June 19, 2026
- ▸ *Since v0.16.0:** ~1,475 commits · ~800 merged PRs · 1,693 files changed · 235,390 insertions · 50,730 deletions · 300+ issues closed · 245 community contributors
- ▸ **Hermes reaches iMessage — Photon Spectrum, no Mac relay required** — There's now an iMessage platform plugin built on Photon's managed line pool. Run hermes photon login, authenticate with a device code, and Hermes can send and receive iMessage — no Mac sitting in a closet running a relay, no BlueBubbles bridge to babysit. It's positioned as the successor to BlueBubbles: free to start, nothing to self-host. If your friends and family live in the blue bubbles, Hermes lives there now too. ([#32348](https://github.com/NousResearch/hermes-agent/pull/32348), [#42582](https://github.com/NousResearch/hermes-agent/pull/42582), [#44713](https://github.com/NousResearch/hermes-agent/pull/44713) — @teknium1)
- ▸ **Raft — Hermes joins the Raft agent network as a gateway channel** — A new bundled Raft platform adapter lets Hermes connect to [Raft](https://raft.build) as an external agent through a wake-channel bridge. Set RAFT_PROFILE, run the bridge, and Raft can wake Hermes to handle messages — with a privacy-by-contract design where wake payloads carry only metadata (event IDs, timestamps), never message bodies. Another surface where Hermes can show up and do work. ([#48210](https://github.com/NousResearch/hermes-agent/pull/48210) — @xxchan, @teknium1)
- ▸ **A substantially more capable desktop app** — v0.16.0 shipped the desktop app; v0.17.0 deepened it across dozens of PRs. Rebindable keyboard shortcuts, native OS notifications with per-type toggles, live subagent **watch-windows** that stream a delegated agent's activity into its own pane, a composer model selector with per-model presets, automatic RTL/bidi text direction, a resizable VS Code-themed terminal pane, per-thread composer drafts, and the ability to install **any VS Code Marketplace theme** directly into the app. The desktop is now a serious daily driver, not a preview. ([#45866](https://github.com/NousResearch/hermes-agent/pull/45866), [#40660](https://github.com/NousResearch/hermes-agent/pull/40660), [#47060](https://github.com/NousResearch/hermes-agent/pull/47060), [#46959](https://github.com/NousResearch/hermes-agent/pull/46959), [#43292](https://github.com/NousResearch/hermes-agent/pull/43292), [#44596](https://github.com/NousResearch/hermes-agent/pull/44596) — @OutThisLife, @teknium1)
Hermes Agent v0.17.0 (v2026.6.19)
Release Date: June 19, 2026
Since v0.16.0: ~1,475 commits · ~800 merged PRs · 1,693 files changed · 235,390 insertions · 50,730 deletions · 300+ issues closed · 245 community contributors
> The Reach Release. v0.16.0 put Hermes on your desktop. v0.17.0 is about how far that reach extends — across new places to talk to it, deeper into the tools you already use, and out to the people running Hermes for a team. Hermes reached two new channels (iMessage via Photon, and the Raft agent network), the desktop app gained substantial new capability, subagents can now run in the background, image generation learned to edit, and Cursor's Composer model is reachable through an xAI Grok subscription. The dashboard got a full profile builder and secure login, the Skills Hub browser was rehauled, the memory tool got a major upgrade, and the curator stopped spending aux-model budget on every routine run. 300+ issues closed ride along, plus a security round.
✨ Highlights
- Hermes reaches iMessage — Photon Spectrum, no Mac relay required — There's now an iMessage platform plugin built on Photon's managed line pool. Run
hermes photon login, authenticate with a device code, and Hermes can send and receive iMessage — no Mac sitting in a closet running a relay, no BlueBubbles bridge to babysit. It's positioned as the successor to BlueBubbles: free to start, nothing to self-host. If your friends and family live in the blue bubbles, Hermes lives there now too. ([#32348](https://github.com/NousResearch/hermes-agent/pull/32348), [#42582](https://github.com/NousResearch/hermes-agent/pull/42582), [#44713](https://github.com/NousResearch/hermes-agent/pull/44713) — @teknium1) - Raft — Hermes joins the Raft agent network as a gateway channel — A new bundled Raft platform adapter lets Hermes connect to [Raft](https://raft.build) as an external agent through a wake-channel bridge. Set
RAFT_PROFILE, run the bridge, and Raft can wake Hermes to handle messages — with a privacy-by-contract design where wake payloads carry only metadata (event IDs, timestamps), never message bodies. Another surface where Hermes can show up and do work. ([#48210](https://github.com/NousResearch/hermes-agent/pull/48210) — @xxchan, @teknium1) - A substantially more capable desktop app — v0.16.0 shipped the desktop app; v0.17.0 deepened it across dozens of PRs. Rebindable keyboard shortcuts, native OS notifications with per-type toggles, live subagent watch-windows that stream a delegated agent's activity into its own pane, a composer model selector with per-model presets, automatic RTL/bidi text direction, a resizable VS Code-themed terminal pane, per-thread composer drafts, and the ability to install any VS Code Marketplace theme directly into the app. The desktop is now a serious daily driver, not a preview. ([#45866](https://github.com/NousResearch/hermes-agent/pull/45866), [#40660](https://github.com/NousResearch/hermes-agent/pull/40660), [#47060](https://github.com/NousResearch/hermes-agent/pull/47060), [#46959](https://github.com/NousResearch/hermes-agent/pull/46959), [#43292](https://github.com/NousResearch/hermes-agent/pull/43292), [#44596](https://github.com/NousResearch/hermes-agent/pull/44596) — @OutThisLife, @teknium1)
- Background / async subagents — delegate work and keep going —
delegate_task(background=true)now dispatches a subagent that runs in the background and returns a handle immediately. You and the model keep working while it churns, and the full result re-enters the conversation as a new turn the moment it finishes. Kick off a long research dive or a multi-step build, then carry on with something else instead of sitting blocked waiting on it. ([#40946](https://github.com/NousResearch/hermes-agent/pull/40946), [#46968](https://github.com/NousResearch/hermes-agent/pull/46968) — @teknium1) - Edit images, not just generate them — image-to-image in
image_generate—image_generatecan now edit and transform a source image, not only create one from scratch. Pass an existing image and a prompt and it routes to the backend's edit endpoint (same tool, same pattern asvideo_generate), across every supported image provider. "Make this logo blue," "remove the background," "turn this sketch into a render" — all from the tool you already use. ([#48705](https://github.com/NousResearch/hermes-agent/pull/48705) — @teknium1) - Automation Blueprints — schedule things without learning cron — Pick an automation by name and Hermes asks you for what it needs — no cron syntax, no
slot=valuetyping. One blueprint definition renders natively on every surface: a form in the dashboard, a slash command in the CLI/TUI/messenger, a conversation with the agent, an entry in the docs catalog. "Daily news briefing at 8am" becomes a thing you set up by answering questions, not by memorizing0 8 * * *. ([#41309](https://github.com/NousResearch/hermes-agent/pull/41309) — @teknium1) - Cursor's Composer model, through your xAI Grok subscription —
grok-composer-2.5-fastis now in the xAI OAuth model picker, with its context window reconciled to the full 200k. Composer is the fast coding model behind Cursor — and if you have an xAI Grok subscription, you can now point Hermes at it directly over OAuth, no separate API key. Your Grok plan, Hermes's agent loop, Composer's coding speed. ([#47908](https://github.com/NousResearch/hermes-agent/pull/47908), [#6f89e17](https://github.com/NousResearch/hermes-agent/pull/47371) — @teknium1) - Full profile builder in the dashboard — Build a complete Hermes profile from the browser — pick its model, choose its skills, attach its MCP servers — without hand-editing
config.yaml. The dashboard also unified multi-profile management into one machine-wide view with a global profile switcher, so you manage every profile from a single place. ([#39084](https://github.com/NousResearch/hermes-agent/pull/39084), [#44007](https://github.com/NousResearch/hermes-agent/pull/44007) — @teknium1) - Skills Hub browser rehaul — The dashboard's Skills Hub got a ground-up rework: connected hubs, a Featured section, full skill previews before you install, and a security scan on each skill. Browsing and installing skills from the trusted taps (OpenAI, Anthropic, HuggingFace, NVIDIA) is now a real browsing experience, not a flat list. ([#40384](https://github.com/NousResearch/hermes-agent/pull/40384), [#43398](https://github.com/NousResearch/hermes-agent/pull/43398) — @teknium1)
- The
memorytool got a major upgrade — atomic batch operations — Thememorytool gained anoperationsarray that applies a batch of add/replace/remove edits atomically against the final character budget. The model can free up space and add new entries in a single call — even when an add alone would overflow the budget — collapsing what used to be a fragile multi-turn dance into one reliable operation. Memory updates are now faster and far less likely to fail mid-edit. ([#48507](https://github.com/NousResearch/hermes-agent/pull/48507) — @teknium1) - Secure dashboard login — The dashboard's authentication was hardened: every token-required endpoint now correctly returns 401 behind the OAuth gate, websocket auth uses the served dashboard token, and a warning fires when a
public_urloverride is silently rejected. Exposing your dashboard to the network is safer by default. ([#42578](https://github.com/NousResearch/hermes-agent/pull/42578), [#42578](https://github.com/NousResearch/hermes-agent/pull/43214) — @benbarclay, @teknium1) - Official WhatsApp Business Cloud API adapter — Alongside the existing Baileys bridge, Hermes now speaks the official WhatsApp Business Cloud API — Meta's first-party, hosted, no-bridge-process path. Point it at your Business API credentials and Hermes talks WhatsApp through the supported channel, with no QR-scanning bridge process to keep alive. ([#44331](https://github.com/NousResearch/hermes-agent/pull/44331), [#43921](https://github.com/NousResearch/hermes-agent/pull/43921) — @jquesnelle, @teknium1)
- Rich text for Telegram — Bot API 10.1 rich messages — Telegram replies now render as proper rich messages via Bot API 10.1: better formatting, cleaner long-message handling, native markup instead of flattened text. It's on by default with an opt-out, so your Telegram conversations look the way they should without any configuration. ([#44829](https://github.com/NousResearch/hermes-agent/pull/44829), [#45584](https://github.com/NousResearch/hermes-agent/pull/45584), [#45953](https://github.com/NousResearch/hermes-agent/pull/45953) — @teknium1)
- Curator cost optimization — no aux-model spend on routine runs — The skill curator now prunes stale skills by default but no longer runs its LLM-powered consolidation pass unless you opt in (
curator.consolidate: trueorhermes curator run --consolidate). The deterministic inactivity sweep keeps running for free; the opinionated, aux-model-spending "build umbrella skills" fork is now off by default. Routine background curation costs you zero tokens. ([#47840](https://github.com/NousResearch/hermes-agent/pull/47840) — @teknium1) - Rebindable keyboard shortcuts panel; native OS notifications with per-type toggles; curated turn-completion cue + dismissable error banners ([#40660](https://github.com/NousResearch/hermes-agent/pull/40660), [#45866](https://github.com/NousResearch/hermes-agent/pull/45866), [#42480](https://github.com/NousResearch/hermes-agent/pull/42480), [#47985](https://github.com/NousResearch/hermes-agent/pull/47985) — @OutThisLife, @teknium1)
- Live subagent watch-windows — stream a delegated agent's activity into its own pane; composer status stack + editable prompts; open any chat in its own window; new-session-in-compact-window hotkey ([#47060](https://github.com/NousResearch/hermes-agent/pull/47060), [#44630](https://github.com/NousResearch/hermes-agent/pull/44630), [#43219](https://github.com/NousResearch/hermes-agent/pull/43219), [#46951](https://github.com/NousResearch/hermes-agent/pull/46951) — @OutThisLife, @teknium1)
- Composer model selector + per-model presets + external-provider disconnect; surface every provider/model from
hermes modelin the GUI; unify provider list to one source; warn when a main-model switch leaves auxiliary tasks pinned elsewhere ([#46959](https://github.com/NousResearch/hermes-agent/pull/46959), [#40563](https://github.com/NousResearch/hermes-agent/pull/40563), [#49080](https://github.com/NousResearch/hermes-agent/pull/49080), [#40286](https://github.com/NousResearch/hermes-agent/pull/40286) — @teknium1, @OutThisLife) - Install any VS Code Marketplace theme; assignable themes per profile; window translucency slider; unified overlay design system + BrandMark + onboarding redesign ([#43292](https://github.com/NousResearch/hermes-agent/pull/43292), [#42286](https://github.com/NousResearch/hermes-agent/pull/42286), [#45086](https://github.com/NousResearch/hermes-agent/pull/45086), [#40708](https://github.com/NousResearch/hermes-agent/pull/40708) — @teknium1, @OutThisLife)
- Resizable VS Code-themed terminal pane + palette polish; auto-detect RTL/bidi text direction in chat; Mac-style session switcher (^Tab / ^1-9); worktree-aware sidebar grouping; hover-reveal collapsed sidebars; messaging source folders in sidebar ([#42521](https://github.com/NousResearch/hermes-agent/pull/42521), [#44596](https://github.com/NousResearch/hermes-agent/pull/44596), [#43111](https://github.com/NousResearch/hermes-agent/pull/43111), [#45273](https://github.com/NousResearch/hermes-agent/pull/45273), [#41670](https://github.com/NousResearch/hermes-agent/pull/41670), [#41751](https://github.com/NousResearch/hermes-agent/pull/41751) — @OutThisLife)
- Arrow-key history + queue editing in composer; expand full command inline from the approval bar; follow-streaming-at-bottom + jump-to-bottom button; first-class cron jobs in the sidebar + dashboard scheduler ([#40234](https://github.com/NousResearch/hermes-agent/pull/40234), [#44864](https://github.com/NousResearch/hermes-agent/pull/44864), [#45263](https://github.com/NousResearch/hermes-agent/pull/45263), [#40684](https://github.com/NousResearch/hermes-agent/pull/40684) — @OutThisLife, @teknium1)
- Desktop pets — pop-out overlay + notifications ([#47938](https://github.com/NousResearch/hermes-agent/pull/47938) — @teknium1)
- Full tool-backend config (pickers + per-backend settings) in Settings; run tool-backend post-setup installs from the GUI; uninstall the Chat GUI without removing the agent; Shift+click status-bar zap to toggle YOLO globally;
/browser connecton a local gateway ([#41232](https://github.com/NousResearch/hermes-agent/pull/41232), [#40559](https://github.com/NousResearch/hermes-agent/pull/40559), [#40355](https://github.com/NousResearch/hermes-agent/pull/40355), [#41666](https://github.com/NousResearch/hermes-agent/pull/41666), [#47245](https://github.com/NousResearch/hermes-agent/pull/47245) — @teknium1, @OutThisLife) - Japanese + Traditional Chinese language switching ([#40114](https://github.com/NousResearch/hermes-agent/pull/40114))
- "Restart gateway" action (renamed from "Restart messaging") surfaced in the statusbar + on messaging save/toggle toasts; rendered logs are selectable/copyable ([#49094](https://github.com/NousResearch/hermes-agent/pull/49094) — @OutThisLife)
- Remote media relay — attach images/PDFs and display agent-written images over the network for the first time; remote-gateway file attachments via
file.attach([#41336](https://github.com/NousResearch/hermes-agent/pull/41336), [#42634](https://github.com/NousResearch/hermes-agent/pull/42634) — @teknium1) - Client + backend version buttons + remote-backend update flow; browse remote backend files; route global-remote profile REST calls; recover chat after sleep/wake by revalidating a stale remote backend ([#42181](https://github.com/NousResearch/hermes-agent/pull/42181), [#44326](https://github.com/NousResearch/hermes-agent/pull/44326), [#47011](https://github.com/NousResearch/hermes-agent/pull/47011), [#41350](https://github.com/NousResearch/hermes-agent/pull/41350) — @OutThisLife, @teknium1)
- Multi-profile fallout cleanup — WS auth + cross-profile session reads; release profile backends before delete; scope session list/model switch/timer per session ([#44529](https://github.com/NousResearch/hermes-agent/pull/44529), [#42613](https://github.com/NousResearch/hermes-agent/pull/42613), [#41103](https://github.com/NousResearch/hermes-agent/pull/41103), [#41120](https://github.com/NousResearch/hermes-agent/pull/41120), [#41182](https://github.com/NousResearch/hermes-agent/pull/41182) — @OutThisLife, @teknium1)
- Stream subagent activity into watch windows; keep streaming painting in unfocused secondary chat windows; recover stranded session windows ([#47060](https://github.com/NousResearch/hermes-agent/pull/47060), [#47919](https://github.com/NousResearch/hermes-agent/pull/47919), [#47655](https://github.com/NousResearch/hermes-agent/pull/47655) — @OutThisLife)
- Full-featured profile builder (model + skills + MCPs); unify multi-profile management — one machine dashboard + global profile switcher; profile-scoped skills & toolsets; session switcher panel on the Chat tab ([#39084](https://github.com/NousResearch/hermes-agent/pull/39084), [#44007](https://github.com/NousResearch/hermes-agent/pull/44007), [#43808](https://github.com/NousResearch/hermes-agent/pull/43808), [#49077](https://github.com/NousResearch/hermes-agent/pull/49077) — @teknium1)
- Skills hub browser rehaul — connected hubs, featured, preview + security scan; SKILL.md editor on Skills page + attach-skill selector in cron modals; full per-MCP catalog detail; full tool-backend config in the GUI ([#40384](https://github.com/NousResearch/hermes-agent/pull/40384), [#44231](https://github.com/NousResearch/hermes-agent/pull/44231), [#48520](https://github.com/NousResearch/hermes-agent/pull/48520), [#40418](https://github.com/NousResearch/hermes-agent/pull/40418) — @teknium1)
- Enable webhooks from the Webhooks page; idempotent
hermes dashboard register; auto-restart gateway after Telegram QR onboarding; file browser; change UI font from the theme picker; reasoning-effort picker in the chat sidebar ([#44021](https://github.com/NousResearch/hermes-agent/pull/44021), [#42455](https://github.com/NousResearch/hermes-agent/pull/42455), [#43424](https://github.com/NousResearch/hermes-agent/pull/43424), [#43512](https://github.com/NousResearch/hermes-agent/pull/43512), [#41145](https://github.com/NousResearch/hermes-agent/pull/41145), [#49141](https://github.com/NousResearch/hermes-agent/pull/49141) — @teknium1) cli.pymain() 3297 → 954 lines — extracted 28 subcommand parsers intohermes_cli/subcommands/, then promoted 9 closure handlers; 32 slash-command handlers →CLICommandsMixin; 18 model-flow wizard functions →model_setup_flows; agent-construction cluster →CLIAgentSetupMixin([#41798](https://github.com/NousResearch/hermes-agent/pull/41798), [#41835](https://github.com/NousResearch/hermes-agent/pull/41835), [#41942](https://github.com/NousResearch/hermes-agent/pull/41942), [#42174](https://github.com/NousResearch/hermes-agent/pull/42174), [#42153](https://github.com/NousResearch/hermes-agent/pull/42153) — @teknium1)gateway/run.py19157 → 15870 lines — 42 slash-command handlers →GatewaySlashCommandsMixin; authorization cluster →GatewayAuthorizationMixin; kanban watcher loops →GatewayKanbanWatchersMixin([#41886](https://github.com/NousResearch/hermes-agent/pull/41886), [#42159](https://github.com/NousResearch/hermes-agent/pull/42159), [#41849](https://github.com/NousResearch/hermes-agent/pull/41849) — @teknium1)run_agent.pyturn loop — extracted prologue intoTurnContext, post-loop tail intofinalize_turn, consolidated inner-retry-loop recovery flags intoTurnRetryState([#41778](https://github.com/NousResearch/hermes-agent/pull/41778), [#42169](https://github.com/NousResearch/hermes-agent/pull/42169), [#41828](https://github.com/NousResearch/hermes-agent/pull/41828) — @teknium1)memorybatch operations — atomic add/replace/remove array against the final char budget, so a single call can free space and add entries ([#48507](https://github.com/NousResearch/hermes-agent/pull/48507) — @teknium1)search_fileslossless densification — headroom evaluation report + the one densification improvement worth shipping (fewer tokens per result, same matches) ([#47866](https://github.com/NousResearch/hermes-agent/pull/47866) — @teknium1)- Removed the agent-callable
send_messagetool; coding-context posture across CLI/TUI/desktop/ACP;read_fileextracts.ipynb/.docx/.xlsxto text ([#47856](https://github.com/NousResearch/hermes-agent/pull/47856), [#43316](https://github.com/NousResearch/hermes-agent/pull/43316), [#37082](https://github.com/NousResearch/hermes-agent/pull/37082) — @teknium1) - Context-file handling: configurable truncation limit + warnings; scale context-file cap to model window + point agent at the truncated file ([#47251](https://github.com/NousResearch/hermes-agent/pull/47251), [#47846](https://github.com/NousResearch/hermes-agent/pull/47846) — @teknium1)
- Compression: temporal anchoring in compaction summaries; raise compaction trigger to 85% for gpt-5.5 on Codex OAuth ([#41102](https://github.com/NousResearch/hermes-agent/pull/41102), [#40957](https://github.com/NousResearch/hermes-agent/pull/40957) — @teknium1)
- Adaptive middleware (consumed by NeMo-Relay observer telemetry); usable mid-turn steer — desktop affordance + trusted injection ([#29724](https://github.com/NousResearch/hermes-agent/pull/29724), [#40240](https://github.com/NousResearch/hermes-agent/pull/40240) — @teknium1)
- New models:
z-ai/glm-5.2(verified 1M context, OpenRouter + Nous),anthropic/claude-fable-5,laguna-m.1+nemotron-3-ultra, xAI Composer 2.5 in the OAuth picker; default xAI togrok-build-0.1([#47391](https://github.com/NousResearch/hermes-agent/pull/47391), [#45695](https://github.com/NousResearch/hermes-agent/pull/45695), [#42979](https://github.com/NousResearch/hermes-agent/pull/42979), [#42629](https://github.com/NousResearch/hermes-agent/pull/42629), [#47908](https://github.com/NousResearch/hermes-agent/pull/47908), [#47371](https://github.com/NousResearch/hermes-agent/pull/47371) — @teknium1) - Model picker: Refresh-Models control to bust stale cache; persist Nous recommended-models to disk + fall back on Portal failure; seed catalog disk cache from checkout on update; MiniMax-M3 reports true 1M context ([#48691](https://github.com/NousResearch/hermes-agent/pull/48691), [#42628](https://github.com/NousResearch/hermes-agent/pull/42628), [#42614](https://github.com/NousResearch/hermes-agent/pull/42614), [#43338](https://github.com/NousResearch/hermes-agent/pull/43338) — @teknium1)
- Anthropic adaptive models: default to modern thinking contract; never send
reasoningfield; routereasoning_effortto verbosity; require confirmation for very expensive selections ([#42991](https://github.com/NousResearch/hermes-agent/pull/42991), [#43012](https://github.com/NousResearch/hermes-agent/pull/43012), [#43436](https://github.com/NousResearch/hermes-agent/pull/43436), [#43391](https://github.com/NousResearch/hermes-agent/pull/43391) — @teknium1) - Auth: auto-detect OpenRouter credential from the pool; keep Codex OAuth pool accounts distinct on add/re-auth; resolve xAI OAuth across profiles + write rotated tokens back to root; honor
model.default_headersfor custom OpenAI-compatible providers ([#42263](https://github.com/NousResearch/hermes-agent/pull/42263), [#42316](https://github.com/NousResearch/hermes-agent/pull/42316), [#46614](https://github.com/NousResearch/hermes-agent/pull/46614), [#41096](https://github.com/NousResearch/hermes-agent/pull/41096) — @teknium1) - Bedrock falls back to non-streaming
InvokeModelwhen IAM denies the streaming variant; Ollama defaultmax_tokens=65536; surface model refusals ascontent_filter([#44293](https://github.com/NousResearch/hermes-agent/pull/44293), [#41694](https://github.com/NousResearch/hermes-agent/pull/41694), [#46013](https://github.com/NousResearch/hermes-agent/pull/46013) — @teknium1) - Optional max session cap; drop empty sessions on CLI exit and rotation; ACP session-provenance metadata for compression rotation ([#42389](https://github.com/NousResearch/hermes-agent/pull/42389), [#43855](https://github.com/NousResearch/hermes-agent/pull/43855), [#41724](https://github.com/NousResearch/hermes-agent/pull/41724) — @teknium1)
- Delegation: resolve custom-endpoint subagent pools by endpoint identity; remove the default subagent wall-clock timeout; stop subagent completion lines leaking into parent CLI display ([#41730](https://github.com/NousResearch/hermes-agent/pull/41730), [#45149](https://github.com/NousResearch/hermes-agent/pull/45149), [#44223](https://github.com/NousResearch/hermes-agent/pull/44223) — @teknium1)
- Kanban: config-gated auto-subscribe on
kanban_create; machine-global singleton lock for the embedded dispatcher; pin assigned profile toolsets for workers; hold reclaim while worker still alive ([#48635](https://github.com/NousResearch/hermes-agent/pull/48635), [#49068](https://github.com/NousResearch/hermes-agent/pull/49068), [#45590](https://github.com/NousResearch/hermes-agent/pull/45590), [#49064](https://github.com/NousResearch/hermes-agent/pull/49064) — @teknium1) - Memory: configurable Hindsight retain observation scopes; OpenViking setup UX; Honcho gateway-gated identity tree; Supermemory session-level ingest ([#46611](https://github.com/NousResearch/hermes-agent/pull/46611), [#48262](https://github.com/NousResearch/hermes-agent/pull/48262), [#44431](https://github.com/NousResearch/hermes-agent/pull/44431), [#38756](https://github.com/NousResearch/hermes-agent/pull/38756) — @teknium1, @alt-glitch)
- iMessage via Photon Spectrum —
hermes photon login(device-code OAuth), gRPC-native channel (no webhook), markdown rendering, emoji reactions, outbound media via spectrum-ts ([#32348](https://github.com/NousResearch/hermes-agent/pull/32348), [#42582](https://github.com/NousResearch/hermes-agent/pull/42582), [#44713](https://github.com/NousResearch/hermes-agent/pull/44713), [#42397](https://github.com/NousResearch/hermes-agent/pull/42397) — @teknium1) - WhatsApp Business Cloud API adapter (official, no bridge process) ([#44331](https://github.com/NousResearch/hermes-agent/pull/44331), [#43921](https://github.com/NousResearch/hermes-agent/pull/43921) — @jquesnelle, @teknium1)
- SimpleX — groups, native attachments, text batching, auto-accept; Raft bundled platform plugin with activity hooks ([#42584](https://github.com/NousResearch/hermes-agent/pull/42584), [#48210](https://github.com/NousResearch/hermes-agent/pull/48210) — @teknium1)
- Render terminal tool calls as native bash code blocks on markdown platforms; bare fenced code blocks in chat; optional message timestamps for LLM context; configurable
tool_progress_grouping([#41215](https://github.com/NousResearch/hermes-agent/pull/41215), [#42576](https://github.com/NousResearch/hermes-agent/pull/42576), [#47253](https://github.com/NousResearch/hermes-agent/pull/47253), [#47228](https://github.com/NousResearch/hermes-agent/pull/47228) — @teknium1) - Telegram: Bot API 10.1 rich messages (now always-on with opt-out); opt-in Online/Offline bot status indicator; stop cutting long streamed responses; MarkdownV2 on progress edits; gate oversized voice/audio before download ([#44829](https://github.com/NousResearch/hermes-agent/pull/44829), [#45584](https://github.com/NousResearch/hermes-agent/pull/45584), [#49134](https://github.com/NousResearch/hermes-agent/pull/49134), [#43761](https://github.com/NousResearch/hermes-agent/pull/43761), [#44245](https://github.com/NousResearch/hermes-agent/pull/44245) — @teknium1)
- Discord: propagate
role_authorizedsoDISCORD_ALLOWED_ROLESworks end-to-end; recover from runtime gateway task exits; cancel_bot_taskon connect failure; stop typing after replies ([#43327](https://github.com/NousResearch/hermes-agent/pull/43327), [#44383](https://github.com/NousResearch/hermes-agent/pull/44383), [#44432](https://github.com/NousResearch/hermes-agent/pull/44432), [#44836](https://github.com/NousResearch/hermes-agent/pull/44836) — @teknium1) - Slack: scope top-level channel messages when
reply_in_thread=false; thread approval UX (block-size overflow + typed-prefix); make video attachments available to agents;register_slack_action_handlerplugin API ([#41703](https://github.com/NousResearch/hermes-agent/pull/41703), [#43444](https://github.com/NousResearch/hermes-agent/pull/43444), [#45512](https://github.com/NousResearch/hermes-agent/pull/45512), [#44664](https://github.com/NousResearch/hermes-agent/pull/44664) — @teknium1) - Replied-to media attachments included; document attachments classified as DOCUMENT on Signal/Email/SimpleX/Teams; WhatsApp restarts stale bridge processes; Matrix room-context isolation; QQbot CPU-spin fix; Weixin rate-limit circuit breaker ([#46107](https://github.com/NousResearch/hermes-agent/pull/46107), [#44695](https://github.com/NousResearch/hermes-agent/pull/44695), [#44205](https://github.com/NousResearch/hermes-agent/pull/44205), [#18505](https://github.com/NousResearch/hermes-agent/pull/18505), [#40574](https://github.com/NousResearch/hermes-agent/pull/40574), [#41718](https://github.com/NousResearch/hermes-agent/pull/41718) — @teknium1, @banditburai)
/versionslash command;/billinginteractive terminal billing (TUI + CLI); show time since last final agent response on the status bar; persist resolved approval/clarify prompts in scrollback ([#40214](https://github.com/NousResearch/hermes-agent/pull/40214), [#45449](https://github.com/NousResearch/hermes-agent/pull/45449), [#44265](https://github.com/NousResearch/hermes-agent/pull/44265), [#44702](https://github.com/NousResearch/hermes-agent/pull/44702) — @teknium1)- Lock hermes worktrees so concurrent processes can't clobber them; display custom profile alias names in list/show; clone profiles from any source ([#48699](https://github.com/NousResearch/hermes-agent/pull/48699), [#40371](https://github.com/NousResearch/hermes-agent/pull/40371), [#45630](https://github.com/NousResearch/hermes-agent/pull/45630) — @teknium1)
- Opt-in structured profile-build path on first contact; configurable per-platform system-prompt hints; configurable background memory/skill notifications ([#41114](https://github.com/NousResearch/hermes-agent/pull/41114), [#48630](https://github.com/NousResearch/hermes-agent/pull/48630), [#47226](https://github.com/NousResearch/hermes-agent/pull/47226) — @teknium1)
- TUI: interactive Plugins Hub enable/disable overlay; session name in the terminal titlebar; paint approval/clarify/sudo/secret modals directly (not via throttle); wrap long approval commands instead of truncating ([#42965](https://github.com/NousResearch/hermes-agent/pull/42965), [#43188](https://github.com/NousResearch/hermes-agent/pull/43188), [#41155](https://github.com/NousResearch/hermes-agent/pull/41155), [#44691](https://github.com/NousResearch/hermes-agent/pull/44691) — @teknium1)
- TTS: Gemini persona prompts + audio tags; xAI auto speech tags + speed/streaming knobs; Piper speaker_id; OGG for Telegram auto-TTS ([#43442](https://github.com/NousResearch/hermes-agent/pull/43442), [#49061](https://github.com/NousResearch/hermes-agent/pull/49061), [#49062](https://github.com/NousResearch/hermes-agent/pull/49062), [#49060](https://github.com/NousResearch/hermes-agent/pull/49060), [#41644](https://github.com/NousResearch/hermes-agent/pull/41644) — @teknium1)
- image-to-image / editing in
image_generateacross all backends; shrink images to provider dimension limit ([#48705](https://github.com/NousResearch/hermes-agent/pull/48705), [#45979](https://github.com/NousResearch/hermes-agent/pull/45979) — @teknium1) - MCP: official Unreal Engine 5.8 MCP server in the catalog; elicitation handler so MCP servers can prompt for mid-tool-call confirmation (payment/OAuth) on whichever surface owns the session — CLI/TUI/Telegram/Slack; expose late-connecting MCP tools to the agent between turns (cache-safe); keepalive ping for short-TTL HTTP sessions; block exfil-shaped / suspicious stdio configs before probe; capability-gate
tools/listso prompt-only servers connect; preserve stdio argv passthrough + Windows env vars ([#48397](https://github.com/NousResearch/hermes-agent/pull/48397), [#49203](https://github.com/NousResearch/hermes-agent/pull/49203), [#49208](https://github.com/NousResearch/hermes-agent/pull/49208), [#49221](https://github.com/NousResearch/hermes-agent/pull/49221), [#46083](https://github.com/NousResearch/hermes-agent/pull/46083), [#44550](https://github.com/NousResearch/hermes-agent/pull/44550), [#44324](https://github.com/NousResearch/hermes-agent/pull/44324) — @teknium1, @lgalabru) - Skills:
simplify-codeskill (parallel 3-agent code review & cleanup) + risk-tiered application with Chesterton's Fence; find & diff user-modified bundled skills; optional payments skills (Stripe Link, MPP, Projects); CLI-based shop skill; live per-source browse progress ([#41691](https://github.com/NousResearch/hermes-agent/pull/41691), [#49070](https://github.com/NousResearch/hermes-agent/pull/49070), [#48286](https://github.com/NousResearch/hermes-agent/pull/48286), [#31343](https://github.com/NousResearch/hermes-agent/pull/31343), [#47309](https://github.com/NousResearch/hermes-agent/pull/47309), [#43398](https://github.com/NousResearch/hermes-agent/pull/43398) — @teknium1, @colinwren-stripe) - Curator: make skill consolidation opt-in (prune stays default-on) ([#47840](https://github.com/NousResearch/hermes-agent/pull/47840) — @teknium1)
- Plugins: install from a subdirectory within a repo; accept browser-pasted GitHub URLs in
hermes plugins install;session:compresslifecycle event +thread_id/chat_typein agent:start/end context ([#42963](https://github.com/NousResearch/hermes-agent/pull/42963), [#33539](https://github.com/NousResearch/hermes-agent/pull/33539), [#47252](https://github.com/NousResearch/hermes-agent/pull/47252), [#41672](https://github.com/NousResearch/hermes-agent/pull/41672) — @teknium1) - Memory/skill write approval gate (default off) — boolean
write_approvalreplaces the tri-statewrite_mode([#38199](https://github.com/NousResearch/hermes-agent/pull/38199), [#43354](https://github.com/NousResearch/hermes-agent/pull/43354) — @teknium1) - Managed scope — administrator-pinned, user-immutable config & secrets from a root-owned
/etc/hermes([#49098](https://github.com/NousResearch/hermes-agent/pull/49098) — @teknium1) - Multiplex all profiles over one gateway process (opt-in) ([#48273](https://github.com/NousResearch/hermes-agent/pull/48273) — @benbarclay)
- Pluggable CronScheduler + Chronos managed-cron provider (scale-to-zero) ([#48275](https://github.com/NousResearch/hermes-agent/pull/48275) — @benbarclay)
- Automation Blueprints — parameterized automation templates across every surface ([#41309](https://github.com/NousResearch/hermes-agent/pull/41309) — @teknium1)
- Gateway-Gateway relay (phases 0-3): relay adapter + capability descriptor, connector⇄gateway channel auth + signed-HTTP inbound + enroll CLI, WS-only inbound, managed-boot self-provision client ([#48078](https://github.com/NousResearch/hermes-agent/pull/48078), [#48147](https://github.com/NousResearch/hermes-agent/pull/48147), [#48294](https://github.com/NousResearch/hermes-agent/pull/48294), [#48242](https://github.com/NousResearch/hermes-agent/pull/48242) — @teknium1)
- s6: detect supervisor directly for gateway restart; register profile gateways without auto-starting; persist desired state; clear stale log locks ([#46290](https://github.com/NousResearch/hermes-agent/pull/46290), [#46266](https://github.com/NousResearch/hermes-agent/pull/46266), [#46292](https://github.com/NousResearch/hermes-agent/pull/46292), [#46289](https://github.com/NousResearch/hermes-agent/pull/46289) — @teknium1)
- Docker: optimize image size (.dockerignore, drop dev deps, split layers); pre-install matrix deps; supervised gateway uses
--replace; harden hosted install tree against self-modification ([#38749](https://github.com/NousResearch/hermes-agent/pull/38749), [#42413](https://github.com/NousResearch/hermes-agent/pull/42413), [#47555](https://github.com/NousResearch/hermes-agent/pull/47555), [#47490](https://github.com/NousResearch/hermes-agent/pull/47490) — @teknium1) - Nix: cold npm build fixes + auto-fix-lockfiles workflow; hashless npm deps via
importNpmLock; refresh npmDepsHash after Electron 40.10.2 pin ([#41867](https://github.com/NousResearch/hermes-agent/pull/41867), [#48883](https://github.com/NousResearch/hermes-agent/pull/48883), [#48457](https://github.com/NousResearch/hermes-agent/pull/48457) — @teknium1) - Installer: clear unmerged git index before autostash; scope install-method stamp to the code tree ([#45515](https://github.com/NousResearch/hermes-agent/pull/45515), [#48188](https://github.com/NousResearch/hermes-agent/pull/48188) — @teknium1)
- Fail closed on own-policy gateway adapters; fail closed for approval-button auth on Slack/Feishu/Discord when no allowlist is set ([#45634](https://github.com/NousResearch/hermes-agent/pull/45634), [#41226](https://github.com/NousResearch/hermes-agent/pull/41226) — @teknium1)
- Redact secrets in request debug dumps; withhold host metadata from public status; block exfil-shaped / suspicious MCP stdio configs before probe ([#46637](https://github.com/NousResearch/hermes-agent/pull/46637), [#45642](https://github.com/NousResearch/hermes-agent/pull/45642), [#46083](https://github.com/NousResearch/hermes-agent/pull/46083) — @teknium1)
- Close shell-escape denylist bypass + fail-closed on missing approval module; scrub operator environment before launching cua-driver MCP; sanitize env for cron job-script subprocesses; bound TodoStore content length/count; scan REST cron prompts for parity with the agent tool ([#40591](https://github.com/NousResearch/hermes-agent/pull/40591), [#48423](https://github.com/NousResearch/hermes-agent/pull/48423), [#49207](https://github.com/NousResearch/hermes-agent/pull/49207), [#41648](https://github.com/NousResearch/hermes-agent/pull/41648), [#41335](https://github.com/NousResearch/hermes-agent/pull/41335) — @teknium1, @kshitijk4poor)
- Bump urllib3 and PyJWT to clear CVEs; Langfuse redacts base64 data URIs instead of truncating into invalid base64 ([#40179](https://github.com/NousResearch/hermes-agent/pull/40179), [#43322](https://github.com/NousResearch/hermes-agent/pull/43322) — @teknium1)
- Dashboard
/chattab via ConPTY (win_pty_bridge) + tests; resolve PowerShell host instead of barepowershellfor uv install; resolvepowershell.exeby absolute path so Desktop install doesn't stall ([#42251](https://github.com/NousResearch/hermes-agent/pull/42251), [#48341](https://github.com/NousResearch/hermes-agent/pull/48341), [#40927](https://github.com/NousResearch/hermes-agent/pull/40927) — @teknium1) - Repair stale winget registration + refresh/merge PATH; kill hermes before recreating venv to release
_bcrypt.pydlock; read HERMES_HOME from the registry when env is stale; quarantine runninghermes.exeduring update repair ([#44084](https://github.com/NousResearch/hermes-agent/pull/44084), [#45120](https://github.com/NousResearch/hermes-agent/pull/45120), [#46772](https://github.com/NousResearch/hermes-agent/pull/46772), [#40409](https://github.com/NousResearch/hermes-agent/pull/40409) — @teknium1) - JOB-breakaway watcher reliability + status --deep probes; handle Windows PTY stdin + detached WS frames; decode subprocess output as UTF-8; confirm-modal on native Windows ([#40909](https://github.com/NousResearch/hermes-agent/pull/40909), [#41953](https://github.com/NousResearch/hermes-agent/pull/41953), [#44328](https://github.com/NousResearch/hermes-agent/pull/44328), [#42419](https://github.com/NousResearch/hermes-agent/pull/42419) — @teknium1)
- Percent-encode non-ascii URL components; sanitize
:in FTS5 queries so colon searches don't silently return empty ([#41430](https://github.com/NousResearch/hermes-agent/pull/41430), [#40653](https://github.com/NousResearch/hermes-agent/pull/40653) — @teknium1) - Preserve multimodal user content through crash-resilience persist; flatten multimodal content before provider sync; strip MEDIA directives from compressor input ([#47907](https://github.com/NousResearch/hermes-agent/pull/47907), [#44738](https://github.com/NousResearch/hermes-agent/pull/44738), [#44708](https://github.com/NousResearch/hermes-agent/pull/44708) — @teknium1)
- Re-enter retry loop on genuine Nous 429 so the fallback guard runs; scope Nous tags to Nous auxiliary calls; suppress "Credit access paused" notice on free models ([#45136](https://github.com/NousResearch/hermes-agent/pull/45136), [#45801](https://github.com/NousResearch/hermes-agent/pull/45801), [#43669](https://github.com/NousResearch/hermes-agent/pull/43669) — @teknium1)
- Cron: don't strict-scan script-injected output in no-skills jobs; resolve per-job provider "custom" to
providers.custominstead of codex; repair cron ownership on container restart ([#43223](https://github.com/NousResearch/hermes-agent/pull/43223), [#43505](https://github.com/NousResearch/hermes-agent/pull/43505), [#41976](https://github.com/NousResearch/hermes-agent/pull/41976) — @teknium1) - *(300+ issues closed this window; full per-area fix list is exhaustive — these are the highest-impact.)*
html-artifactskill + sketch/architecture-diagram/concept-diagrams fold ([#48899](https://github.com/NousResearch/hermes-agent/pull/48899)) — reverted ([#49053](https://github.com/NousResearch/hermes-agent/pull/49053)); absent on main.- Cron per-job profile support reverted ([#43956](https://github.com/NousResearch/hermes-agent/pull/43956)); a nix patchPhase workaround reverted ([#42151](https://github.com/NousResearch/hermes-agent/pull/42151)).
- @OutThisLife — 92 PRs (desktop app maturity (shortcuts, notifications, watch-windows, themes))
- @kshitijk4poor — 60 PRs (onboarding, model picker, cron env sanitization)
- @xxxigm — 27 PRs (desktop & gateway fixes)
- @benbarclay — 23 PRs (gateway multiplex, Chronos cron, dashboard auth)
- @helix4u — 21 PRs (gateway & installer reliability)
- @austinpickett — 19 PRs (dashboard & desktop UX)
- @alt-glitch — 14 PRs (usage-aware credits, Supermemory)
- @ethernet8023 — 14 PRs (desktop build pipeline & Linux/Windows)
- @liuhao1024 — 5 PRs (session lifecycle fixes)
🖥️ Hermes Desktop App
New surfaces & UX
Remote-gateway & multi-profile
📊 Web Dashboard
🏗️ Core Agent & Architecture
God-file refactor wave (run_agent.py / cli.py / gateway/run.py)
Agent loop, prompt & tools
Provider & model support
Sessions, state & multi-agent
📱 Messaging Platforms (Gateway)
New channels
Gateway core & rendering
🖥️ CLI, TUI & Setup
🔧 Tool System, Skills & MCP
🌐 Fleet, Relay & Automation
🐳 Docker, Nix & Installer
🔒 Security & Reliability
🪟 Windows
🐛 Notable Bug Fixes
↩️ Reverted in this window (not shipping)
👥 Contributors
A huge thank-you to everyone who contributed to this release — 245 contributors across commits, co-author trailers, and salvaged PRs.
Core
@teknium1
Top community contributors (by merged PRs)
All contributors (alphabetical)
@0z1-ghb, @0xdany, @0xneobyte, @0xyg3n, @1960697431, @895252509, @achaljhawar, @Adolanium, @AhmetArif0, @AIalliAI,
@aimable100, @AJ, @ak2k, @alarcritty, @AlchemistChaos, @aldoeliacim, @alelpoan, @AlexanderBFoley,
@alfred-smith-0, @ali-nld, @alt-glitch, @am423, @ameobius, @AMIK-coorporations, @annguyenNous, @ArcanePivot,
@ARegalado1, @asdlem, @ashishpatel26, @austinpickett, @banditburai, @barronlroth, @Bartok9, @basilalshukaili,
@bbednarski9, @bcsmith528, @benbarclay, @benegessarit, @benfrank241, @bionicbutterfly13, @BlackishGreen33,
@blut-agent, @bmoore210, @bpasquini, @briandevans, @BROCCOLO1D, @capt-marbles, @ccook1963, @Cdddo, @channkim,
@ChasLui, @chimpera, @chromalinx, @CiarasClaws, @claytonchew, @cnfi, @colinwren-stripe, @cresslank,
@cyb0rgk1tty, @dangelo352, @davidgut1982, @deaneeth, @definitelynotguru, @Diyoncrz18, @draix, @dschnurbusch,
@Dusk1e, @dusterbloom, @ehz0ah, @emozilla, @enesilhaydin, @Erosika, @ethernet8023, @Evisolpxe, @firefly,
@flooryyyy, @flyinhigh, @foras910521-lab, @Frowtek, @ft-ioxcs, @fyzanshaik, @Ganesh0690, @gauravsaxena1997,
@giladbau, @glesperance, @GodsBoy, @goku94123, @H-Ali13381, @HaozheZhang6, @haran2001, @harshitAgr, @hbentel,
@helix4u, @HeLLGURD, @Hermes, @huangxun375-stack, @iamlukethedev, @ianculling, @IAvecilla, @iborazzi,
@infinitycrew39, @islam666, @ITheEqualizer, @itsflownium, @Jaaneek, @james47kjv, @jeeves-assistant,
@jeffrobodie-glitch, @JezzaHehn, @jiangkoumo, @jimjsong, @JimLiu, @JimStenstrom, @jmsunseri, @JoaoMarcos44,
@joel611, @JoelJJohnson, @joerj123, @johnjacobkenny, @jooray, @joshuadow, @jplew, @justinbao19, @Justlrnal4,
@Kailigithub, @kamonspecial, @kdunn926, @Kenmege, @Kewe63, @kmccammon, @konsisumer, @kristianvast,
@kshitijk4poor, @kyssta-exe, @l37525778-coder, @LaPhilosophie, @leo4226, @LeonSGP43, @liuhao1024, @Llugaes,
@loongfay, @loongzhao, @lsaether, @m4dni5, @manishbyatroy, @MaxFreedomPollard, @maxmilian, @maxtrigify,
@mnajafian-nv, @mohamedorigami-jpg, @mollusk, @MrDiamondBallz, @mssteuer, @mvanhorn, @naqerl, @Nea74,
@necoweb3, @nepenth, @nicoloboschi, @NormallyGaussian, @OmarB97, @omegazheng, @OndrejDrapalik, @OutThisLife,
@oxngon, @OYLFLMH, @Paperclip, @paulb26, @pengyuyanITYU, @PhilipAD, @pinguarmy, @plcunha, @ProgramCaiCai,
@psionic73, @qin-ctx, @qingshan89, @Que0x, @qWaitCrypto, @r266-tech, @randomsnowflake, @rbrtbn, @rewbs,
@rio-jeong, @Rivuza, @rob-maron, @rodboev, @ruangraung, @RyTsYdUp, @Sahil-SS9, @salesondemandio, @sanidhyasin,
@sarvesh1327, @sdyckjq-lab, @shannonsands, @SHL0MS, @simpolism, @sitkarev, @skyc1e, @skylarbpayne, @SNooZyy2,
@Spaceman-Spiffy, @srojk34, @sweetcornna, @synapsesx, @Tamaz-sujashvili, @tangtaizong666, @temalo, @tfournet,
@thedavidweng, @TheGardenGallery, @tim404x, @tomekpanek, @Tranquil-Flow, @tt-a1i, @tuancookiez-hub,
@underthestars-zhy, @Veritas-7, @victor-kyriazakos, @wesleysimplicio, @WolframRavenwolf, @WompaJango, @x1erra,
@xiaoxinova, @xtymac, @xushibo, @XVVH, @xxchan, @xxxigm, @xy200303, @y0shua1ee, @yanxue06, @yatesjalex,
@YLChen-007, @yoniebans, @youjunxiaji, @yubingz, @zakame, @zapabob, @zccyman, @zimigit2020, @ziwon, @zwcf5200,
@zxcasongs.
---
Full Changelog: [v2026.6.5...v2026.6.19](https://github.com/NousResearch/hermes-agent/compare/v2026.6.5...v2026.6.19)
Hermes Agent v0.16.0 (v2026.6.5)
Release Date: June 5, 2026
Since v0.15.2: 874 commits · 542 merged PRs · 1,962 files changed · 205,216 insertions · 46,217 deletions · 399 issues closed (2 P0, 62 P1, 16 security-tagged) · 170 community contributors (including co-authors)
> The Surface Release. Hermes meets you wherever you work. A brand-new native desktop app — built across 100 PRs and 159 commits in a single week — gives you Hermes as a real macOS/Linux/Windows application: one-click install, in-app self-update, drag-and-drop files into chat, an inline model picker in the status bar, concurrent multi-profile sessions, a full Simplified Chinese translation, and the ability to connect to a remote Hermes gateway over OAuth or username/password. Alongside it, the web dashboard grew a full browser-based administration panel (MCP catalog, messaging channels, credentials, webhooks, memory, pluggable OIDC / username-password login), and first-time setup got a "Quick Setup via Nous Portal" path that gets you from install to first message in seconds. The default skill set was trimmed to what you actually need, NVIDIA/skills joined the trusted Skills Hub taps, the model picker is now fuzzy-searchable everywhere (desktop, web, TUI, CLI), and /undo finally lets you take back the last N turns. 2 P0 and 62 P1 closures ride along, plus a security round (CVE-2026-48710 Starlette pin, SSRF off-loop hardening, subprocess credential stripping).
---
✨ Highlights
- Hermes Desktop — a real native app, not a terminal wrapper — This is the headline. There's now a
apps/desktop/Electron application that installs like any other desktop app on macOS, Linux, and Windows, updates itself in place from inside the app, and gives you a polished GUI for everything Hermes does. You get a proper chat window with streaming, a session list you can archive and search, drag-and-drop files anywhere in the chat area, clipboard image paste, a Cmd+K command palette, and a model picker right in the status bar. If you've been telling friends "it's a CLI agent" and watching their eyes glaze over — now you can just send them an installer. None of this existed a week ago. ([#20059](https://github.com/NousResearch/hermes-agent/pull/20059), [#35607](https://github.com/NousResearch/hermes-agent/pull/35607), [#37099](https://github.com/NousResearch/hermes-agent/pull/37099), [#37379](https://github.com/NousResearch/hermes-agent/pull/37379), [#38631](https://github.com/NousResearch/hermes-agent/pull/38631) — @OutThisLife, @jquesnelle, @ethernet8023, @austinpickett, @benbarclay) - Run the desktop app against a remote Hermes — sign in with OAuth or username/password — The desktop app doesn't have to run Hermes locally. Point it at a remote Hermes gateway (your homelab, a hosted box, a teammate's server) and it connects over a secure WebSocket, authenticating with OAuth or a username/password login — no fiddling with
--insecureflags or hand-copied session tokens. Each profile can target its own remote host, and you can run concurrent sessions across multiple profiles in one window with cross-profile@sessionlinks. The practical version: your laptop runs a thin GUI, the heavy agent runs wherever your API keys and compute live. ([#37888](https://github.com/NousResearch/hermes-agent/pull/37888), [#38851](https://github.com/NousResearch/hermes-agent/pull/38851), [#39330](https://github.com/NousResearch/hermes-agent/pull/39330), [#39778](https://github.com/NousResearch/hermes-agent/pull/39778) — @benbarclay, @OutThisLife, @teknium1) - The web dashboard is now a full admin panel — configure everything from the browser — The dashboard grew from "view your sessions" into a complete administration surface. There's a Channels page that sets up every gateway messaging platform (Telegram, Discord, Slack, etc.) from the browser, an admin panel for the MCP catalog with enable/disable toggles, credential management, webhook and hook creation, memory configuration, gateway controls, and a System page with check-before-update and one-click Debug Share. You no longer have to SSH in and edit
config.yamlto wire up a new messaging channel or MCP server — it's all point-and-click now. ([#36704](https://github.com/NousResearch/hermes-agent/pull/36704), [#36736](https://github.com/NousResearch/hermes-agent/pull/36736), [#37211](https://github.com/NousResearch/hermes-agent/pull/37211), [#38205](https://github.com/NousResearch/hermes-agent/pull/38205), [#38600](https://github.com/NousResearch/hermes-agent/pull/38600) — @teknium1) - Hermes Desktop speaks Simplified Chinese — full 简体中文 in the chat GUI — The desktop app now ships a complete Simplified Chinese (简体中文) translation across every UI surface — the chat window itself, sidebar, settings, command center, cron, messaging, profiles, skills, agents, the lot. English stays the default; switch language in Appearance settings and the choice persists to your config (
display.language). It's built on a proper typed i18n layer, so adding more languages from here is straightforward. ([#38241](https://github.com/NousResearch/hermes-agent/pull/38241) — @JimLiu) - Leaner default skill set — Hermes ships only what you actually need — The bundled skill set got a deliberate trim. Skills that were redundant or dead are gone (
spotify— superseded by the native Spotify plugin's 7 tools;linear— superseded byhermes mcp install linear;kanban-codex-lane,debugging-hermes-tui-commands, a staledomainorphan, and several empty category markers). Heavier or niche skills moved from bundled to optional (the Baoyu creative set,dspy,subagent-driven-development,minecraft-modpack-server,pokemon-player,hermes-s6-container-supervision) — still onehermes skills installaway, just not loaded by default. And a newenvironments:relevance gate keeps context-specific skills (kanban, docker/s6) out of the skills index for users who'll never use them, while still loading them on explicit request. The result: a smaller, sharper default skill list, less noise in the picker, and a lighter prompt. The curator can now prune unused built-in skills too (not just agent-created ones), with usage tracked for every skill. ([#39028](https://github.com/NousResearch/hermes-agent/pull/39028), [#36701](https://github.com/NousResearch/hermes-agent/pull/36701), [#36228](https://github.com/NousResearch/hermes-agent/pull/36228) — @teknium1) - NVIDIA/skills is now a built-in trusted skills tap —
NVIDIA/skillsjoins OpenAI, Anthropic, and HuggingFace as a default trusted tap in the Skills Hub — discoverable, browsable, searchable, and auto-updating through the same pipeline. NVIDIA's verified skills for CUDA-X, AIQ, cuOpt and the rest of their product stack are one install away, with real category labels from the repo'sskills.sh.jsonsidecar. ([#34333](https://github.com/NousResearch/hermes-agent/pull/34333) — @teknium1) - Quick Setup via Nous Portal — from install to first message in seconds — First-time setup was thinned down to two clear paths: Quick Setup (sign in with Nous Portal, get a model picker, start chatting immediately) or Full Setup (the detailed wizard for power users).
hermes portalis now the human-readable alias that runs the full quick-setup Nous flow. The first-run menu explains the difference inline so newcomers aren't guessing. The goal: a brand-new user shouldn't need to read docs to send their first message. ([#35723](https://github.com/NousResearch/hermes-agent/pull/35723), [#36227](https://github.com/NousResearch/hermes-agent/pull/36227), [#38449](https://github.com/NousResearch/hermes-agent/pull/38449), [#38465](https://github.com/NousResearch/hermes-agent/pull/38465) — @teknium1, @kshitijk4poor) - Fuzzy model picker, everywhere — type a few letters, find your model — The model picker now does fuzzy search across the desktop app, web dashboard, TUI, and CLI. Type "v4fl" and
deepseek-v4-flashsurfaces; multi-endpoint providers are grouped under one row instead of cluttering the list with duplicates, and each row carries a description so you know what you're picking. The catalog refreshes hourly instead of daily, so new models show up the same day they launch. New this window:deepseek-v4-flash,MiniMax-M3with 1M context,qwen3.7-plus. ([#36928](https://github.com/NousResearch/hermes-agent/pull/36928), [#35227](https://github.com/NousResearch/hermes-agent/pull/35227), [#35756](https://github.com/NousResearch/hermes-agent/pull/35756), [#35659](https://github.com/NousResearch/hermes-agent/pull/35659), [#36214](https://github.com/NousResearch/hermes-agent/pull/36214) — @kshitijk4poor, @teknium1) /undo [N]— take back the last N turns — Said the wrong thing, or sent the agent down a bad path?/undobacks up N user turns, prefills your last message so you can edit and resend, and soft-deletes the turns in between. It works in the CLI, the TUI, and across messaging platforms (Telegram, Discord, etc.) with full parity. Closes a long-standing request ([#21910](https://github.com/NousResearch/hermes-agent/issues/21910)). ([#36229](https://github.com/NousResearch/hermes-agent/pull/36229), [#36699](https://github.com/NousResearch/hermes-agent/pull/36699) — @teknium1)- Choose your default interface —
cliortui— You can now set whetherhermes chatdrops you into the classic CLI or the Ink TUI by default, with a--cliflag to override per-invocation. The TUI also got a single unified/modelcommand and a Sessions overlay for switching between live sessions. Use the interface you actually like. ([#37782](https://github.com/NousResearch/hermes-agent/pull/37782), [#37112](https://github.com/NousResearch/hermes-agent/pull/37112) — @OutThisLife) - macOS desktop install + in-app self-update; rebuild-and-relaunch cleanly on macOS ([#35607](https://github.com/NousResearch/hermes-agent/pull/35607), [#36198](https://github.com/NousResearch/hermes-agent/pull/36198), [#38296](https://github.com/NousResearch/hermes-agent/pull/38296) — @OutThisLife)
- macOS installer renamed to "Hermes" and turned into a launcher ([#37516](https://github.com/NousResearch/hermes-agent/pull/37516) — @OutThisLife)
- Build desktop in its own
desktopstage on macOS/Linux instead of silently skipping; content-hash build stamp,--build-only/--force-buildflags ([#36134](https://github.com/NousResearch/hermes-agent/pull/36134) — @OutThisLife, [#37597](https://github.com/NousResearch/hermes-agent/pull/37597) — @ethernet8023) - Boot-failure recovery + live API-key validation; cancellable install; recover from corrupt cached Electron download ([#35864](https://github.com/NousResearch/hermes-agent/pull/35864), [#37379](https://github.com/NousResearch/hermes-agent/pull/37379), [#39032](https://github.com/NousResearch/hermes-agent/pull/39032) — @OutThisLife, @teknium1)
- Windows: recover from corrupt Electron cache in bootstrap install; stop racing our own backend during in-app update ([#39465](https://github.com/NousResearch/hermes-agent/pull/39465), [#39828](https://github.com/NousResearch/hermes-agent/pull/39828) — @teknium1, @OutThisLife)
- Linux: configure Electron sandbox helper; detect linux arm64 binary; disable GPU acceleration on remote displays to stop flicker ([#37691](https://github.com/NousResearch/hermes-agent/pull/37691), [#38594](https://github.com/NousResearch/hermes-agent/pull/38594), [#37932](https://github.com/NousResearch/hermes-agent/pull/37932) — @ethernet8023, @OutThisLife)
- Require Node ≥20.19/22.12 for the desktop build; zero eslint/typecheck debt + prettier pass ([#38255](https://github.com/NousResearch/hermes-agent/pull/38255), [#39100](https://github.com/NousResearch/hermes-agent/pull/39100) — @OutThisLife)
- Connect to OAuth-gated remote gateways; username/password login for remote gateways; per-profile remote gateway hosts ([#37888](https://github.com/NousResearch/hermes-agent/pull/37888), [#38851](https://github.com/NousResearch/hermes-agent/pull/38851), [#39778](https://github.com/NousResearch/hermes-agent/pull/39778) — @benbarclay, @teknium1, @OutThisLife)
- Concurrent multi-profile sessions, cross-profile
@sessionlinks; re-mint OAuth WS ticket on gateway reconnect; gate OAuth remote connect on AT-or-RT ([#39330](https://github.com/NousResearch/hermes-agent/pull/39330), [#38886](https://github.com/NousResearch/hermes-agent/pull/38886), [#39464](https://github.com/NousResearch/hermes-agent/pull/39464) — @OutThisLife, @teknium1, @benbarclay) - Offer remote sign-in on a gated-gateway boot failure; validate live WebSocket in remote gateway test ([#39402](https://github.com/NousResearch/hermes-agent/pull/39402), [#39511](https://github.com/NousResearch/hermes-agent/pull/39511) — @teknium1)
- Drop files anywhere in the chat area; clipboard image paste with dedupe; attachments on Enter, IME composition handling ([#36262](https://github.com/NousResearch/hermes-agent/pull/36262), [#38306](https://github.com/NousResearch/hermes-agent/pull/38306), [#38677](https://github.com/NousResearch/hermes-agent/pull/38677) — @OutThisLife, @teknium1)
- Background needs-input indicator, clarify redesign, Cmd+K palette & UI consistency pass; inline model picker in the status bar; YOLO toggle in the status bar (TUI parity) ([#38631](https://github.com/NousResearch/hermes-agent/pull/38631), [#37738](https://github.com/NousResearch/hermes-agent/pull/37738), [#38517](https://github.com/NousResearch/hermes-agent/pull/38517) — @OutThisLife)
- Session-list overhaul, session hygiene/archive, media streaming + connecting overlay; search sessions by id (SQL-bounded) ([#37379](https://github.com/NousResearch/hermes-agent/pull/37379), [#37099](https://github.com/NousResearch/hermes-agent/pull/37099), [#39062](https://github.com/NousResearch/hermes-agent/pull/39062) — @OutThisLife, @teknium1)
- Dedicated Providers settings + polished Accounts/API-keys UX; consolidate skills + tools management into one pane; move model management into Settings ([#38551](https://github.com/NousResearch/hermes-agent/pull/38551) — @austinpickett, [#37310](https://github.com/NousResearch/hermes-agent/pull/37310), [#37330](https://github.com/NousResearch/hermes-agent/pull/37330) — @jquesnelle)
- Render approval/sudo/secret prompts so tools stop silently timing out; surface skill & quick-command slash commands in the palette; first-class xAI Grok OAuth provider in the launcher ([#38578](https://github.com/NousResearch/hermes-agent/pull/38578), [#38531](https://github.com/NousResearch/hermes-agent/pull/38531), [#37697](https://github.com/NousResearch/hermes-agent/pull/37697) — @teknium1, @OutThisLife)
- "Choose provider later" skip on first-run onboarding; onboarding can configure a local/custom endpoint without an API key; custom zoom shortcuts ([#39483](https://github.com/NousResearch/hermes-agent/pull/39483), [#38572](https://github.com/NousResearch/hermes-agent/pull/38572), [#37894](https://github.com/NousResearch/hermes-agent/pull/37894) — @teknium1, @ethernet8023)
- macOS helper microphone entitlement; scroll-jump fixes (native anchoring, at-rest jump, wheel-up snap-back); thinking block stays open mid-streaming ([#37745](https://github.com/NousResearch/hermes-agent/pull/37745) — @xxxigm, [#37866](https://github.com/NousResearch/hermes-agent/pull/37866), [#38221](https://github.com/NousResearch/hermes-agent/pull/38221), [#38809](https://github.com/NousResearch/hermes-agent/pull/38809) — @OutThisLife, @teknium1, @stremtec)
- GUI quality-of-life triage batch; salvaged AhmetArif0 desktop/dashboard fixes; rename session via
session.titleRPC so/titleworks ([#37536](https://github.com/NousResearch/hermes-agent/pull/37536) — @austinpickett, [#39070](https://github.com/NousResearch/hermes-agent/pull/39070), [#39410](https://github.com/NousResearch/hermes-agent/pull/39410) — @teknium1, @benbarclay) hermes debug share//debug/hermes logsnow includedesktop.log([#38203](https://github.com/NousResearch/hermes-agent/pull/38203) — @teknium1)- Simplified Chinese (简体中文) translation across every desktop UI surface — typed i18n layer, switch in Appearance settings, persisted via
display.language(English remains default) ([#38241](https://github.com/NousResearch/hermes-agent/pull/38241) — @JimLiu) - Full multi-profile support over one global-remote dashboard; remote-profile sessions are first-class (resume, read, rename/archive/delete); new chats honor their profile in global-remote mode ([#39921](https://github.com/NousResearch/hermes-agent/pull/39921), [#39894](https://github.com/NousResearch/hermes-agent/pull/39894), [#39993](https://github.com/NousResearch/hermes-agent/pull/39993) — @OutThisLife)
- Full administration panel — MCP catalog with enable/disable toggles, pairing, webhooks, credentials, memory, gateway, hook creation, system settings ([#36704](https://github.com/NousResearch/hermes-agent/pull/36704), [#36736](https://github.com/NousResearch/hermes-agent/pull/36736) — @teknium1)
- Channels page — set up every gateway messaging channel from the browser ([#37211](https://github.com/NousResearch/hermes-agent/pull/37211) — @teknium1)
- System page: check-before-update flow + Debug Share ([#38205](https://github.com/NousResearch/hermes-agent/pull/38205), [#38600](https://github.com/NousResearch/hermes-agent/pull/38600) — @teknium1)
- nous-blue theme, bulk sessions, schedule picker; enriched profiles dashboard + de-dupe channel env vars; configurable terminal background via theme ([#37383](https://github.com/NousResearch/hermes-agent/pull/37383), [#37872](https://github.com/NousResearch/hermes-agent/pull/37872) — @austinpickett, [#37156](https://github.com/NousResearch/hermes-agent/pull/37156) — @teknium1)
- Always enable embedded chat; remove dashboard
--tuiflag ([#38591](https://github.com/NousResearch/hermes-agent/pull/38591) — @benbarclay) - Pluggable username/password login (Option B); generic self-hosted OIDC provider + multi-provider verify fix;
hermes dashboard registerfor self-hosted OAuth client ([#38819](https://github.com/NousResearch/hermes-agent/pull/38819) — @benbarclay, [#38917](https://github.com/NousResearch/hermes-agent/pull/38917), [#38802](https://github.com/NousResearch/hermes-agent/pull/38802) — @teknium1) - Rotate dashboard sessions via refresh token; share
/api/*public allowlist between legacy and OAuth gates; drop/api/*paths from OAuthnext=round trip ([#37247](https://github.com/NousResearch/hermes-agent/pull/37247), [#34254](https://github.com/NousResearch/hermes-agent/pull/34254), [#36244](https://github.com/NousResearch/hermes-agent/pull/36244) — @benbarclay) - Chat tab works in gated (OAuth) mode; trust non-web WS origins on OAuth-gated binds after ticket auth; authenticate server-spawned PTY child WS; sanction plugin WS/upload auth via SDK helpers ([#34793](https://github.com/NousResearch/hermes-agent/pull/34793), [#37870](https://github.com/NousResearch/hermes-agent/pull/37870), [#37972](https://github.com/NousResearch/hermes-agent/pull/37972), [#38549](https://github.com/NousResearch/hermes-agent/pull/38549) — @teknium1, @benbarclay, @kshitijk4poor)
- Allow desktop websocket origins on remote binds ([#37747](https://github.com/NousResearch/hermes-agent/pull/37747) — @teknium1)
- New models:
deepseek-v4-flash(+ trimmed variants, maker-grouped curated lists),MiniMax-M3with 1M context on native minimax providers,qwen3.7-plus(Nous + OpenRouter),gemini-3.5-flashto Gemini OAuth + API-key pickers ([#35659](https://github.com/NousResearch/hermes-agent/pull/35659), [#36214](https://github.com/NousResearch/hermes-agent/pull/36214), [#39409](https://github.com/NousResearch/hermes-agent/pull/39409), [#37046](https://github.com/NousResearch/hermes-agent/pull/37046) — @teknium1) - Model picker: fuzzy search across WebUI/TUI/CLI; group multi-endpoint providers under one row; refresh provider descriptions + describe grouped rows; refresh catalog hourly; stop routing OpenAI selection to OpenRouter ([#36928](https://github.com/NousResearch/hermes-agent/pull/36928) — @kshitijk4poor, [#35227](https://github.com/NousResearch/hermes-agent/pull/35227), [#35773](https://github.com/NousResearch/hermes-agent/pull/35773), [#35756](https://github.com/NousResearch/hermes-agent/pull/35756), [#37175](https://github.com/NousResearch/hermes-agent/pull/37175))
- Always show Nous Tool Gateway backends, login on select; surface the Nous free tool pool (entitlement + setup prompt); route FAL video gen through managed Nous gateway ([#35792](https://github.com/NousResearch/hermes-agent/pull/35792) — @teknium1, [#36153](https://github.com/NousResearch/hermes-agent/pull/36153), [#33259](https://github.com/NousResearch/hermes-agent/pull/33259) — @alt-glitch)
- Persist mid-session model switch to database; recover model on post-interrupt recovery turn ([#35256](https://github.com/NousResearch/hermes-agent/pull/35256), [#35381](https://github.com/NousResearch/hermes-agent/pull/35381) — @teknium1)
- Credential pool:
STATUS_DEADfor terminal OAuth failures; isolate custom provider picker credentials ([#34412](https://github.com/NousResearch/hermes-agent/pull/34412), [#34810](https://github.com/NousResearch/hermes-agent/pull/34810) — @teknium1) - Disable Nous Portal legacy session-key inference fallback — JWT-only ([#34508](https://github.com/NousResearch/hermes-agent/pull/34508) — @kshitijk4poor)
/undo [N]— backs up N user turns with prefill + soft-delete (CLI/TUI + messaging-platform parity) ([#36229](https://github.com/NousResearch/hermes-agent/pull/36229), [#36699](https://github.com/NousResearch/hermes-agent/pull/36699) — @teknium1)- Progressive tool disclosure for MCP and plugin tools (scoped); embedder environment-hint hook for the system prompt; universal task-completion guidance + local Python toolchain probe ([#34493](https://github.com/NousResearch/hermes-agent/pull/34493), [#34574](https://github.com/NousResearch/hermes-agent/pull/34574), [#34340](https://github.com/NousResearch/hermes-agent/pull/34340) — @teknium1)
- Uncap delegation
max_spawn_depth(floor 1, no ceiling); broaden Hermes self-knowledge pointer to docs + skill;hermes prompt-sizediagnostic ([#39772](https://github.com/NousResearch/hermes-agent/pull/39772), [#38538](https://github.com/NousResearch/hermes-agent/pull/38538), [#35276](https://github.com/NousResearch/hermes-agent/pull/35276) — @teknium1) perf(read_file): compact line-number gutter — ~14% fewer tokens per read (now the only format) ([#35368](https://github.com/NousResearch/hermes-agent/pull/35368), [#35532](https://github.com/NousResearch/hermes-agent/pull/35532) — @teknium1)- Resolve agent cwd from
TERMINAL_CWDvia one reader; align prefill messages key handling; resume relaunches in the session's original working directory ([#35028](https://github.com/NousResearch/hermes-agent/pull/35028) — @banditburai, [#38760](https://github.com/NousResearch/hermes-agent/pull/38760) — @helix4u, [#38562](https://github.com/NousResearch/hermes-agent/pull/38562) — @teknium1) - Prevent session-id fork from concurrent compressions; observer telemetry hooks + NeMo-Relay plugin (gated tool emit) ([#34351](https://github.com/NousResearch/hermes-agent/pull/34351), [#38232](https://github.com/NousResearch/hermes-agent/pull/38232) — @teknium1)
perf(state): merge FTS5 segments on VACUUM +hermes sessions optimize; keep/branchsessions visible after parent reopen; survive missing FTS5 runtimes ([#34596](https://github.com/NousResearch/hermes-agent/pull/34596), [#39214](https://github.com/NousResearch/hermes-agent/pull/39214) — @teknium1, @kshitijk4poor, [#35452](https://github.com/NousResearch/hermes-agent/pull/35452) — @helix4u)- Honcho: make startup fail open; harden self-hosted setup paths ([#24847](https://github.com/NousResearch/hermes-agent/pull/24847) — @stephenschoettler, [#35170](https://github.com/NousResearch/hermes-agent/pull/35170) — @kshitijk4poor)
- Supermemory: session-level ingest + kebab aliases ([#38756](https://github.com/NousResearch/hermes-agent/pull/38756) — @alt-glitch)
goal_modecards run workers in a/goalloop; file attachments on tasks; attach images referenced in task bodies to worker vision ([#35710](https://github.com/NousResearch/hermes-agent/pull/35710), [#35395](https://github.com/NousResearch/hermes-agent/pull/35395), [#34210](https://github.com/NousResearch/hermes-agent/pull/34210) — @teknium1)default_assigneefallback + per-profile concurrency cap;POST /runs/{run_id}/terminateendpoint; gate notifier watcher ondispatch_in_gateway([#34244](https://github.com/NousResearch/hermes-agent/pull/34244), [#34449](https://github.com/NousResearch/hermes-agent/pull/34449), [#37174](https://github.com/NousResearch/hermes-agent/pull/37174) — @teknium1)- CLI dispatch config passthrough + humanizer skill swap ([#34337](https://github.com/NousResearch/hermes-agent/pull/34337) — @teknium1)
- Leaner default skill set ([#39028](https://github.com/NousResearch/hermes-agent/pull/39028) — @teknium1):
- Curator can now prune unused built-in skills (not just agent-created), with usage tracked for every skill ([#36701](https://github.com/NousResearch/hermes-agent/pull/36701) — @teknium1)
- Blank-slate skills —
install --no-skills+ opt-out/opt-in for the default profile ([#36228](https://github.com/NousResearch/hermes-agent/pull/36228) — @teknium1) - NVIDIA/skills trusted tap —
NVIDIA/skillsis now a default trusted Skills Hub tap alongside OpenAI/Anthropic/HuggingFace;skills.sh.jsonsidecar gives taps real category labels ([#34333](https://github.com/NousResearch/hermes-agent/pull/34333) — @teknium1) - Skills Hub: fix browse cap, add source links + copy buttons + category cleanup ([#37143](https://github.com/NousResearch/hermes-agent/pull/37143) — @teknium1)
- New optional skills:
grok(xAI Grok Build CLI),antigravity-clioperator (under autonomous-ai-agents) ([#34582](https://github.com/NousResearch/hermes-agent/pull/34582), [#34583](https://github.com/NousResearch/hermes-agent/pull/34583), [#34604](https://github.com/NousResearch/hermes-agent/pull/34604) — @teknium1) - Structured stream-event protocol + Telegram draft formatting parity; per-platform streaming defaults (Telegram on, Discord off) + dashboard toggles; surface gateway streaming block in
DEFAULT_CONFIG([#37250](https://github.com/NousResearch/hermes-agent/pull/37250), [#37303](https://github.com/NousResearch/hermes-agent/pull/37303), [#37285](https://github.com/NousResearch/hermes-agent/pull/37285) — @teknium1) - Discord voice-channel mixer — ambient idle bed + verbal acks that overlap TTS; explain
/voiceusage when toggled bare ([#39659](https://github.com/NousResearch/hermes-agent/pull/39659), [#39766](https://github.com/NousResearch/hermes-agent/pull/39766) — @teknium1) - Handle Feishu meeting invitations; bluebubbles group mention gating; matrix bang-command aliases; matrix fail-closed approval reaction auth ([#39040](https://github.com/NousResearch/hermes-agent/pull/39040), [#37091](https://github.com/NousResearch/hermes-agent/pull/37091), [#38175](https://github.com/NousResearch/hermes-agent/pull/38175) — @teknium1, @alt-glitch, [#34567](https://github.com/NousResearch/hermes-agent/pull/34567))
- Clean service restart flow; close ResponseStore + dispose unowned adapter on reconnect failure; weixin
asyncio.wait_fortimeouts ([#36188](https://github.com/NousResearch/hermes-agent/pull/36188) — @helix4u, [#37679](https://github.com/NousResearch/hermes-agent/pull/37679) — @Fearvox, [#35117](https://github.com/NousResearch/hermes-agent/pull/35117) — @banditburai) - Configurable default interface (cli vs tui) +
--cliflag; TUI single/modelcommand + unified Sessions overlay; nudge toward/agentsdashboard when delegation starts ([#37782](https://github.com/NousResearch/hermes-agent/pull/37782), [#37112](https://github.com/NousResearch/hermes-agent/pull/37112) — @OutThisLife, [#34704](https://github.com/NousResearch/hermes-agent/pull/34704) — @kshitijk4poor) - Thin out setup — Quick Setup via Nous Portal + Full Setup defaults; explain Quick vs Full inline;
hermes portalhuman-readable Portal onboarding alias + full quick-setup Nous flow ([#35723](https://github.com/NousResearch/hermes-agent/pull/35723), [#36227](https://github.com/NousResearch/hermes-agent/pull/36227), [#38449](https://github.com/NousResearch/hermes-agent/pull/38449), [#38465](https://github.com/NousResearch/hermes-agent/pull/38465) — @teknium1, @kshitijk4poor) - Set process title to
hermesin ps/top/htop; warn on unsupported pip installs + fix stale update-check cache ([#35143](https://github.com/NousResearch/hermes-agent/pull/35143), [#34846](https://github.com/NousResearch/hermes-agent/pull/34846) — @teknium1) - TUI perf: stop slow/dead MCP servers from freezing startup; stop eager MCP discovery from blocking agent-capable startup; stop persisting full tool output in trail lines (silent OOM) ([#35273](https://github.com/NousResearch/hermes-agent/pull/35273), [#35397](https://github.com/NousResearch/hermes-agent/pull/35397), [#38224](https://github.com/NousResearch/hermes-agent/pull/38224) — @teknium1)
- TUI fixes: auto-recover session on unexpected gateway death; reassemble split SGR mouse sequences; preserve UTF-8 in PowerShell clipboard; reset terminal input modes on exit;
/savesnapshots under Hermes home ([#35893](https://github.com/NousResearch/hermes-agent/pull/35893), [#38564](https://github.com/NousResearch/hermes-agent/pull/38564) — @OutThisLife, [#35222](https://github.com/NousResearch/hermes-agent/pull/35222) — @teknium1, [#36864](https://github.com/NousResearch/hermes-agent/pull/36864) — @maxmilian, [#38251](https://github.com/NousResearch/hermes-agent/pull/38251) — @austinpickett) - Setup model/provider pickers migrated off
simple_term_menuto curses (ESC + ghost-row fixes); default browser/TTS picker to free local backend, not paid Nous ([#35806](https://github.com/NousResearch/hermes-agent/pull/35806), [#37800](https://github.com/NousResearch/hermes-agent/pull/37800) — @teknium1) single managed-uv path, delete fts5 installer escalation; installer commit pinning opt-in (default branch-follow); shallow clones ([#37660](https://github.com/NousResearch/hermes-agent/pull/37660) — @ethernet8023, [#37123](https://github.com/NousResearch/hermes-agent/pull/37123) — @jquesnelle, [#39423](https://github.com/NousResearch/hermes-agent/pull/39423) — @ethernet8023)ensure_uv()survives the update boundary (no first-run crash); harden venv rebuild + verify core deps after install; require managed marker before destructive clean; stash/restore by default for non-interactive updates ([#39780](https://github.com/NousResearch/hermes-agent/pull/39780) — @OutThisLife, [#38887](https://github.com/NousResearch/hermes-agent/pull/38887), [#39568](https://github.com/NousResearch/hermes-agent/pull/39568), [#39645](https://github.com/NousResearch/hermes-agent/pull/39645) — @teknium1, @helix4u)- MCP: stop reporting false OAuth success when no token was obtained; vision honors
model.supports_visioninvision_analyze+browser_vision; MiniMax t2a_v2 TTSraise_for_status([#34807](https://github.com/NousResearch/hermes-agent/pull/34807), [#34562](https://github.com/NousResearch/hermes-agent/pull/34562), [#39057](https://github.com/NousResearch/hermes-agent/pull/39057) — @teknium1) - yuanbao: cache resolved media resources by resourceId ([#34474](https://github.com/NousResearch/hermes-agent/pull/34474) — @teknium1)
- Container reuse + bounded-sync cleanup + orphan reaper; auto-join Docker socket group for docker-in-docker backend; boot non-root containers (skip s6-setuidgid drop when already unprivileged) ([#33645](https://github.com/NousResearch/hermes-agent/pull/33645), [#34407](https://github.com/NousResearch/hermes-agent/pull/34407) — @benbarclay, [#34837](https://github.com/NousResearch/hermes-agent/pull/34837) — @IAvecilla)
- Skip unnecessary boot chown when volume ownership matches remapped UID; seed
gateway_state.jsonfromHERMES_GATEWAY_BOOTSTRAP_STATEon first boot; tag containers with hermes-agent labels for identification ([#35027](https://github.com/NousResearch/hermes-agent/pull/35027) — @Foldblade, [#37896](https://github.com/NousResearch/hermes-agent/pull/37896) — @benbarclay) - Point TUI launcher at prebuilt bundle via
HERMES_TUI_DIR; consolidate node/nix workspace lockfile + update all consumers ([#37923](https://github.com/NousResearch/hermes-agent/pull/37923), [#36171](https://github.com/NousResearch/hermes-agent/pull/36171) — @benbarclay, @ethernet8023) - CVE-2026-48710 (Starlette BadHost) — pin patched Starlette ≥1.0.1 ([#35118](https://github.com/NousResearch/hermes-agent/pull/35118) — @teknium1)
- Run URL SSRF checks off the event loop in async paths; strip Bedrock inference bearer token from subprocess env; add
bws_cache.jsonto file-safety read guard; neutralize file paths in mutation-verifier footer ([#39046](https://github.com/NousResearch/hermes-agent/pull/39046), [#34498](https://github.com/NousResearch/hermes-agent/pull/34498), [#34421](https://github.com/NousResearch/hermes-agent/pull/34421), [#35684](https://github.com/NousResearch/hermes-agent/pull/35684) — @teknium1) - Restore approval/sudo context in
execute_code+ guard entry points; add docker restart/stop/kill toDANGEROUS_PATTERNS; sanitize invisible unicode in vetted skill content; deepcopy tools before in-place xAI mutation ([#34497](https://github.com/NousResearch/hermes-agent/pull/34497), [#33438](https://github.com/NousResearch/hermes-agent/pull/33438) — @teknium1, @Sarbai, [#37245](https://github.com/NousResearch/hermes-agent/pull/37245), [#34416](https://github.com/NousResearch/hermes-agent/pull/34416)) - Sandbox-mirror soft guard for writes to per-task
.hermesmirrors; honcho fail-open on startup ([#32213](https://github.com/NousResearch/hermes-agent/pull/32213) — @briandevans, [#24847](https://github.com/NousResearch/hermes-agent/pull/24847) — @stephenschoettler) - 399 issues closed this window (2 P0, 62 P1, 16 security-tagged, 262 bug-labeled).
- Desktop: keep in-flight new chats from vanishing on refresh; Stop button actually interrupts when a turn is queued; stop background session messages bleeding into the active transcript; slash/@ completion menu navigable & Esc-dismissable; IME Enter no longer splits messages ([#37908](https://github.com/NousResearch/hermes-agent/pull/37908) — @OutThisLife, [#37948](https://github.com/NousResearch/hermes-agent/pull/37948), [#37975](https://github.com/NousResearch/hermes-agent/pull/37975), [#37937](https://github.com/NousResearch/hermes-agent/pull/37937) — @kshitijk4poor, [#38333](https://github.com/NousResearch/hermes-agent/pull/38333) — @stremtec)
- Update: stop stash/restore from clobbering desktop source on managed clones; don't fail desktop rebuild/skills sync on mid-rebuild venv; export launcher virtualenv to uv ([#38542](https://github.com/NousResearch/hermes-agent/pull/38542), [#38885](https://github.com/NousResearch/hermes-agent/pull/38885), [#35224](https://github.com/NousResearch/hermes-agent/pull/35224) — @teknium1)
- Voice: honor
PIPEWIRE_REMOTEin PortAudio fallback; allow/voiceover SSH when a sound server is reachable; restore mistralai (2.4.8 clean, ban lifted) ([#33473](https://github.com/NousResearch/hermes-agent/pull/33473) — @Dusk1e, [#35719](https://github.com/NousResearch/hermes-agent/pull/35719), [#34841](https://github.com/NousResearch/hermes-agent/pull/34841) — @teknium1) - New Desktop App guide + remote-backend sections (session token,
--tuirequirement, username/password connect, dashboard/gateway prerequisites) ([#37457](https://github.com/NousResearch/hermes-agent/pull/37457), [#38144](https://github.com/NousResearch/hermes-agent/pull/38144), [#38180](https://github.com/NousResearch/hermes-agent/pull/38180), [#38534](https://github.com/NousResearch/hermes-agent/pull/38534), [#39128](https://github.com/NousResearch/hermes-agent/pull/39128) — @teknium1) - Dashboard auth-provider suitability + registration across dashboard/Docker/Desktop; network egress isolation guide for Docker ([#39633](https://github.com/NousResearch/hermes-agent/pull/39633) — @benbarclay, [#26385](https://github.com/NousResearch/hermes-agent/pull/26385) — @Manzela)
- @teknium1
- @OutThisLife (52) — built the desktop app end to end: install, self-update, remote-gateway connect, multi-profile sessions, chat UX, status-bar model picker
- @benbarclay (44) — Docker hardening, dashboard auth (OIDC, username/password, refresh-token rotation), desktop OAuth remote connect
- @kshitijk4poor (29) — fuzzy model picker, setup/portal onboarding, desktop completion-menu & Stop-button fixes, honcho hardening
- @ethernet8023 (18) — desktop build pipeline (content-hash stamp, build flags), Linux/arm64 desktop support, managed-uv consolidation
- @austinpickett (8) — dashboard nous-blue theme + bulk sessions, desktop Providers settings, GUI QoL triage
- @alt-glitch (7) — Nous tool-pool entitlement surfacing, FAL video-gen managed gateway, supermemory session ingest, matrix aliases
- @helix4u (6) — gateway service-restart flow, update destructive-clean guard, config prefill alignment
- @jquesnelle (4) — installer commit-pinning opt-in, desktop skills/tools + model-management consolidation
- @JimLiu — full Simplified Chinese (简体中文) desktop translation + typed i18n layer
---
🖥️ Hermes Desktop App (NEW)
Install & lifecycle
Remote-gateway & multi-profile
Chat UX & settings
📊 Web Dashboard
Administration panel (NEW)
Auth
🏗️ Core Agent & Architecture
Provider & model support
Agent loop, prompt & tools
Sessions, state & memory
🧩 Multi-Agent (Kanban) & Skills
Kanban
Skills
- Removed (redundant / dead):
spotify (→ Spotify plugin's 7 native tools), linear (→ hermes mcp install linear), kanban-codex-lane, debugging-hermes-tui-commands, stale domain orphan, empty category markers (diagramming, gifs, inference-sh, mlops/training, mlops/vector-databases)- Bundled → optional:
baoyu-article-illustrator, baoyu-comic, creative-ideation, pixel-art, dspy, subagent-driven-development, minecraft-modpack-server, pokemon-player, hermes-s6-container-supervision- Consolidated:
webhook-subscriptions + native-mcp folded into the hermes-agent skill as on-demand references; writing-plans merged into plan (v2.0.0)- New
environments: frontmatter relevance gate (kanban / docker / s6) — context-specific skills stop appearing in the index for users who won't use them, still load on explicit request📱 Messaging Platforms (Gateway)
🖥️ CLI, TUI & Setup
🔧 Tool System & Installer
🐳 Docker & Deployment
🔒 Security & Reliability
🐛 Notable Bug Fixes
📚 Documentation
---

👥 Contributors
A huge thank-you to the 170 community contributors (including co-authors) who shipped work in this release.
Core
Top community contributors (by merged-PR count)
All Contributors
@0xharryriddle, @a1245582339, @adybag14-cyber, @AhmetArif0, @alaamohanad169-ship-it, @alelpoan, @alt-glitch,
@Aman113114-IITD, @amathxbt, @aminvakil, @annguyenNous, @aqilaziz, @Archerouyang, @ashishpatel26, @asimons81,
@austinpickett, @banditburai, @baofuen, @Bartok9, @bbednarski9, @beardthelion, @bedirhancode, @benbarclay,
@benfrank241, @blackpilledsoftware-prog, @bluefishs, @brian-doherty, @briancl2, @briandevans, @BROCCOLO1D,
@caojiguang, @CharZhou, @counterposition, @coygeek, @CryptoByz, @davetist, @davidgut1982, @dchenk, @dirtyren,
@donovan-yohan, @dparikh79, @dskwe, @Dusk1e, @dvir-pashut, @EloquentBrush0x, @emozilla, @ErnestHysa, @Erosika,
@ethernet8023, @f3rs3n, @faisfamilytravel, @Fearvox, @ferminquant, @fesalfayed, @firefly, @flooryyyy,
@Foldblade, @Frowtek, @gbarany, @Glucksberg, @GodsBoy, @haran2001, @harjothkhara, @HashClawAI, @hayka-pacha,
@helix4u, @HeLLGURD, @Hinotoi-agent, @hllqkb, @IAvecilla, @inchargeautomation-lab, @Interstellar-code, @isair,
@ITheEqualizer, @jeffrobodie-glitch, @JezzaHehn, @JimLiu, @Julientalbot, @julio-cloudvisor, @karmeleon,
@Kenmege, @Kewe63, @Kolektori, @konsisumer, @kshitijk4poor, @kurobaryo, @kweiner, @kyssta-exe, @Kyzcreig,
@LengR, @leonardsellem, @LeonSGP43, @libre-7, @liuboacean, @liuhao1024, @loongzhao, @luyao618, @MaheshtheDev,
@Manzela, @mathijsvandenhurk, @MattMaximo, @maxcz79, @maxmilian, @Moikapy, @MustafaKara7, @nateGeorge,
@nepenth, @nielskaspers, @ninjmnky, @octavioturra, @OCWC22, @ohMyJason, @ousiaresearch, @outsourc-e,
@OutThisLife, @Pluviobyte, @polnikale, @pxdsgnco, @Que0x, @r266-tech, @redpiggy-cyber, @rewbs, @rexdotsh,
@rob-maron, @SaguaroDev, @sahibzada-allahyar, @Sarbai, @sarvesh1327, @scubamount, @SeaXen, @seppegadeyne,
@shannonsands, @SHL0MS, @SimoKiihamaki, @SiTaggart, @solaitken, @sprmn24, @stephenschoettler, @steveonjava,
@stremtec, @Subway2023, @sweetcornna, @Sylw3ster, @ThyFriendlyFox, @tillfalko, @tmchow, @TonyPepeBear,
@Tranquil-Flow, @truenorth-lj, @tuancookiez-hub, @Twanislas, @tymrtn, @uzunkuyruk, @ViewWay, @VinciZhu,
@vinoth12940, @vladkvlchk, @vynxevainglory-ai, @WadydX, @wenchengxucool, @whyhkzk, @worlldz, @Wysie, @x1am1,
@xxxigm, @ygd58, @youngstar-eth, @zapabob, @zhaoleibd, @Zyrixtrex
---
Full Changelog: [v2026.5.29.2...v2026.6.5](https://github.com/NousResearch/hermes-agent/compare/v2026.5.29.2...v2026.6.5)
Hermes Agent v0.15.2 (v2026.5.29.2)
Release Date: May 29, 2026
🐛 Bug Fixes
- Packaging): ship bundled plugin.yaml manifests in wheel and sdist ([
827f7f07](https://github.com/NousResearch/hermes-agent/commit/827f7f07825be57108cbea18325e8f5e9fb5d2f2)) - @outsourc-e (1 commit)
- @dparikh79 (1 commit)
- @ousiaresearch (1 commit)
- @libre-7 (1 commit)
👥 Contributors
Thank you to everyone who contributed to this release!
Full Changelog: [v2026.5.29...v2026.5.29.2](https://github.com/NousResearch/hermes-agent/compare/v2026.5.29...v2026.5.29.2)