hermes-agent 2026.5.28 - #285115
Merged
Merged
Conversation
hermes-agent: update deps Signed-off-by: Rui Chen <rui@chenrui.dev>
chenrui333
force-pushed
the
bump-hermes-agent-2026.5.28
branch
from
May 28, 2026 18:47
5767919 to
7065a3a
Compare
botantony
approved these changes
May 28, 2026
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.resourceblocks have been checked for updates.release notes
The Big Refactor —
run_agent.pyis no longer 16,000 lines — The file at the heart of Hermes — the agent conversation loop — has been reduced from 16,083 lines to 3,821 (-76%), with the extracted code redistributed across 14 cohesive modules underagent/. Behavior is unchanged: every extraction keeps a thin forwarder onAIAgent, every test patch path still works, every external caller is compatible. The reason you care: future Hermes development moves faster, plugin authors can finally grep the codebase, and the file that took 90 seconds to load in your editor opens in a blink. (#27248)Kanban grew into a real multi-agent platform — 104 PRs end to end — Triage auto-decomposes one task into a tree of sub-tasks.
hermes kanban swarmcreates a full Swarm v1 graph in one command — root, parallel workers, gated verifier, gated synthesizer, shared blackboard. Tasks support per-task model overrides (cheap models for boilerplate, expensive ones for hard sub-tasks), board-level default workdirs, per-task worktree paths and branches, scheduled start times, configurable claim TTL, retry fingerprinting, stale-task detection, respawn guards, and a drag-to-delete trash zone. Workers report through/workers/active,/runs/{id}, and/inspectendpoints. (#27572, #28443, #28364, #28394, #28462, #28384, #28467, #28455, #28452, #28432, #28468, #28420)Cold-start perf wave keeps going — another second saved, 47% fewer per-turn function calls — Three new optimization rounds: defer
openai._base_clientimport (-240ms / -17MB on every CLI invocation), hot-path optimizations cut 47% of per-conversation function calls (399k → 213k for 31-turn chat), defer compression-feasibility check (-170 to -290ms on every agent construction), adaptive subprocess polling (-195ms per tool call, 1+ second per turn). Termux cold start drops from 2.9s to 0.8s.hermes --versioncold drops 63% (701ms → 258ms), flipping the head-to-head benchmark against Codex CLI from 5/11 wins to 6/11. (#28864, #28866, #28957, #29006, #29419, #30121, #30609, #31968)session_searchrebuilt — no LLM, no cost, 4,500× faster — The oldsession_searchwas an aux-LLM-powered tool that cost ~$0.30/call and took ~30 seconds to summarize three sessions, sometimes confabulating when the right session wasn't even in the FTS5 hit list. The new shape is one tool with three modes (discovery, scroll, browse) inferred from which args are set — nomodeparameter, no aux-LLM, no config knob, no companion skill. Discovery is ~20ms instead of ~90s; scroll is ~1ms. Searching your past sessions for context is now free and instant. (#27590)Promptware defense — Brainworm-class attacks blocked at three chokepoints — Inspired by recent Brainworm / Promptware Kill Chain research (Origin HQ, arxiv 2601.09625), Hermes now defends the context window against prompt-injection attacks that try to hijack the agent via tool output, recalled memory, or stored skills. Single source of truth (
tools/threat_patterns.py) with ~15 new Brainworm/C2 patterns; recalled memory is scanned at load time; tool results get delimiter markers so a malicious file or remote service can't impersonate Hermes' own system content. Paired with a newsecurity-guidanceplugin that pattern-matches dangerous code writes. (#32269, #33131, #9151)Bitwarden Secrets Manager — one bootstrap token replaces every per-provider API key — Stop keeping plaintext API keys in
~/.hermes/.env. Install Bitwarden Secrets Manager (bwsauto-installs lazily on first use), point Hermes at it with one bootstrap token (BWS_ACCESS_TOKEN), and every credential you need comes from Bitwarden at startup. Rotate a key in the Bitwarden web app and the rotation actually takes effect — Bitwarden defaults to source-of-truth so its values overwrite matching env vars on startup. Flipsecrets.bitwarden.override_existing: falseto invert. EU Cloud and self-hosted Bitwarden server URLs supported. Detected credentials are now labeled with their source so you can see at a glance which keys came from Bitwarden vs. the local env. (#30035, #31378, #30364)ntfy as the 23rd messaging platform — push notifications without an account — ntfy is the self-hostable push-notification service with no signup, no API key, just a topic URL. Hermes now adapts to it as a platform plugin (zero edits to core), so your agent can send you push notifications from any cron job, kanban task completion, or chat
send_message— to your phone, your watch, your desktop, your homelab. (salvages #30625 → originally #4043) (#30867)Skill bundles —
/<name>loads multiple skills at once — A skill bundle is a named group of skills that loads them all together with one slash command. Set up your "writing day" bundle (humanizer + ideation + obsidian + youtube-content) and/writing-dayactivates all four for the session. Skills Hub now has health checks, a freshness badge, and a watchdog cron. Three new optional skills land:code-wiki(Karpathy's LLM-Wiki, persistent indexed dev wiki),openhands(delegate to OpenHands for parallel coding agents), andweb-pentest(OWASP-style web pentest recipes). (#28373, #32345, #32240, #32261, #32265)TUI session orchestrator — multiple live sessions in one TUI window — The Ink TUI gained an active-session switcher overlay. List, switch between, refresh, and close multiple live process-local sessions without leaving the TUI; dispatch a new session with a session-scoped model picker. Plus a wave of TUI polish — mouse-tracking DEC mode presets, scrollback preservation across branches and termux, slash-dropdown fixes, x.com link rendering, and CJK / IME input rendering improvements. (salvages #27642) (#32980, #30084)
Two new image_gen providers — Krea 2 Medium + Large, FAL ported to plugin — Krea joins the image_gen lineup as a built-in plugin:
Krea 2 Medium($0.03) andKrea 2 Large($0.06), auto-discovered, selectable viahermes tools→ Image Generation → Krea. Available through both the native Krea plugin and the FAL.ai catalog. The FAL.ai backend got pulled out of the monolithic image-generation tool intoplugins/image_gen/fal/, completing the four-way architectural parity already established by web, browser, and video_gen — new image providers are now one file, not a fork. (#33236, #30380, #33506)Nous-approved MCP catalog with interactive picker — A curated catalog of Nous-vetted MCP servers, mirroring the optional-skills shape. Run
hermes mcpand you get an interactive picker; install with one keystroke, credentials prompted at install time and written to~/.hermes/.env. Ships with the n8n manifest first. Closes the discovery gap that left users hunting GitHub for trusted MCP servers. (#30870)OpenHands orchestration skill — A new optional skill under
optional-skills/autonomous-ai-agents/openhands/lets the agent delegate coding tasks to the OpenHands CLI alongsideclaude-code,codex, andopencode. OpenHands is the model-agnostic member of that family — any LiteLLM-supported provider works (OpenAI, Anthropic, OpenRouter, your own), so you can route a sub-task to the cheapest model that can finish it. Drop-in worker for kanban swarms and/delegateflows. (closes #477) (#32261)Deep xAI integration round — Web Search plugin, OAuth proxy upstream, May 15 retirement detection, natural TTS, security hardening — Six interlocking xAI improvements:
plugins/web/xai/provider, slots alongside Brave / Tavily / Exa / SearXNG / DDGS / Firecrawl — reuses your existing Grok OAuth orXAI_API_KEYcredentials, no new env vars. (#29042)hermes proxygains an xAI upstream — your local OpenAI-compatible endpoint can now be backed by SuperGrok OAuth, no PKCE-refresh code to write in your client. (#28356)grok-4,grok-4-fast{,-reasoning,-non-reasoning},grok-3,grok-code-fast-1,grok-imagine-image-proetc. are detected in doctor and chat startup, withhermes migrate xaito one-shot config migration to the supported model. No more silent 404s after the retirement date. (#29277)auto_speech_tagsfor xAI TTS — inserts light[pause]tags between paragraphs and sentences for more natural-sounding voice replies. Default OFF. (#29376)xai-oauthbase_urlpinned tox.aiorigin — closes a silent credential-leak vector whereXAI_BASE_URLcould repoint OAuth-authenticated inference to an attacker-controlled host. (#28952)x_searchdegraded-results surfacing, tier-gated 403 with API-key fallback, PKCEcode_challengeround-trip fix, dead-token quarantine on terminal refresh failure, MiniMax-style short-token refresh on per-request, andWKE=unauthenticatedhonor at both classifier sites. (#29484, #28351, #27560, #28116, #30619, #30872)🏗️ Core Agent & Architecture
The Big Refactor —
run_agent.py16k → 3.8krun_agent.pyfrom 16,083 → 3,821 lines (-76%), extracted into 14 cohesiveagent/*modules.run_conversationalone was 3,877 lines before the refactor. Every extraction keeps a thin forwarder onAIAgent, every test-patch path is preserved, every external caller stays compatible. (#27248)Agent loop & conversation
reasoning_contenton cross-provider fallback to require-side providers. (salvage #33784) (#33795)tools[]cache parity. (#29704)jiternative parser. (#33692)Sessions & memory
session_searchrebuilt — single-shape (discovery + scroll + browse), no aux-LLM, ~20ms vs. ~90s. (#27590)platform_message_idfor recall across gateway restarts. (#29449)enabled_toolsets. (#30177)MEMORY.md/USER.md. (#30877)Codex / Responses-API maturation
responses.stream()helper; consume events directly. (#33042)invalid_encrypted_content. (salvage of #10144) (#33035)rs_tmpreasoning replay state. (#33156, #33146)toolskey when no tools registered. (#33409)🎛️ Kanban — Multi-Agent Maturation Wave
Orchestration & dispatch
hermes kanban swarmcreates a Swarm v1 graph (root + parallel workers + gated verifier + gated synthesizer + shared blackboard). (salvages #26791 by @Niraven) (#28443)blocker_authinstead of auto-blocking. (#28683)/workers/active,/runs/{id},/inspect. (salvages #23761 by @Interstellar-code) (#28432)Task configuration & scheduling
max_in_progressconfig to cap concurrent running tasks. (#28420)--sortforhermes kanban list. (#28427)boardparameter on all MCP tools. (#28444)auto_promote_childrenconfig toggle. (#28344)archive --rmto hard-delete archived tasks. (#28355)promoteverb for manualtodo→readyrecovery + bulk--ids. (salvage #29464) (#31334)Dashboard
model_overridein show + tool output. (#28442)kanban.notification_sources. (#28395)Reliability
unblock_task. (#28379)decompose_triage_tasksibling-link pre-validation. (#28088)accept-hooksto worker chat subprocess. (#28393)max_tokensfor kanban specify. (#28374)writable_roots. (#28435)⚡ Performance
openai._base_clientimport deferred — 240ms / 17MB off every CLI cold start. (#28864)--versionwall time 63% — flips head-to-head vs Codex CLI. (#31968)🔧 Tool System
Tool surface
patch: indent preservation, CRLF preservation, per-file failure escalation. (#32273)terminal: warn at call time whenbackground=trueruns silently. (#31289)terminal: nudge homebrewed CI pollers at the tool surface. (#33142)x_search: surface degraded results + validate dates. (#29484)x_search: auto-enable toolset when xAI credentials are configured. (#27376)computer_use: route SOM/vision captures via auxiliary.vision. (#30126)transcription: reject symlinked audio inputs. (#10082)[pause]in xAI auto speech tags. (#32237)auto_speech_tagsspeech-tag pauses for natural voice replies. (#29376)PULSE_SERVER/PIPEWIRE_REMOTEinside Docker. (#22534)Browser
Image generation
plugins/image_gen/fal. (salvage #27966) (#30380)Web search
MCP
skipat paste prompt bypasses auth without disabling server. (#32069)mcp_prefix on both ends of round-trip. (#31700)🧩 Skills Ecosystem
Skills system
/<name>loads multiple skills. (#28373)View the full release notes at https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.28.