Release Date: March 12, 2026
First tagged release since v0.1.0 (the initial pre-public foundation). In just over two weeks, Hermes Agent went from a small internal project to a full-featured AI agent platform — thanks to an explosion of community contributions. This release covers 216 merged pull requests from 63 contributors, resolving 119 issues.
-
Multi-Platform Messaging Gateway — Telegram, Discord, Slack, WhatsApp, Signal, Email (IMAP/SMTP), and Home Assistant platforms with unified session management, media attachments, and per-platform tool configuration.
-
MCP (Model Context Protocol) Client — Native MCP support with stdio and HTTP transports, reconnection, resource/prompt discovery, and sampling (server-initiated LLM requests). (#291 — @0xbyt4, #301, #753)
-
Skills Ecosystem — 70+ bundled and optional skills across 15+ categories with a Skills Hub for community discovery, per-platform enable/disable, conditional activation based on tool availability, and prerequisite validation. (#743 — @teyrebaz33, #785 — @teyrebaz33)
-
Centralized Provider Router — Unified
call_llm()/async_call_llm()API replaces scattered provider logic across vision, summarization, compression, and trajectory saving. All auxiliary consumers route through a single code path with automatic credential resolution. (#1003) -
ACP Server — VS Code, Zed, and JetBrains editor integration via the Agent Communication Protocol standard. (#949)
-
CLI Skin/Theme Engine — Data-driven visual customization: banners, spinners, colors, branding. 7 built-in skins + custom YAML skins.
-
Git Worktree Isolation —
hermes -wlaunches isolated agent sessions in git worktrees for safe parallel work on the same repo. (#654) -
Filesystem Checkpoints & Rollback — Automatic snapshots before destructive operations with
/rollbackto restore. (#824) -
3,289 Tests — From near-zero test coverage to a comprehensive test suite covering agent, gateway, tools, cron, and CLI.
- Centralized provider router with
resolve_provider_client()+call_llm()API (#1003) - Nous Portal as first-class provider in setup (#644)
- OpenAI Codex (Responses API) with ChatGPT subscription support (#43) — @grp06
- Codex OAuth vision support + multimodal content adapter
- Validate
/modelagainst live API instead of hardcoded lists - Self-hosted Firecrawl support (#460) — @caentzminger
- Kimi Code API support (#635) — @christomitov
- MiniMax model ID update (#473) — @tars90percent
- OpenRouter provider routing configuration (provider_preferences)
- Nous credential refresh on 401 errors (#571, #269) — @rewbs
- z.ai/GLM, Kimi/Moonshot, MiniMax, Azure OpenAI as first-class providers
- Unified
/modeland/providerinto single view
- Simple fallback model for provider resilience (#740)
- Shared iteration budget across parent + subagent delegation
- Iteration budget pressure via tool result injection
- Configurable subagent provider/model with full credential resolution
- Handle 413 payload-too-large via compression instead of aborting (#153) — @tekelala
- Retry with rebuilt payload after compression (#616) — @tripledoublev
- Auto-compress pathologically large gateway sessions (#628)
- Tool call repair middleware — auto-lowercase and invalid tool handler
- Reasoning effort configuration and
/reasoningcommand (#921) - Detect and block file re-read/search loops after context compression (#705) — @0xbyt4
- Session naming with unique titles, auto-lineage, rich listing, and resume by name (#720)
- Interactive session browser with search filtering (#733)
- Display previous messages when resuming a session (#734)
- Honcho AI-native cross-session user modeling (#38) — @erosika
- Proactive async memory flush on session expiry
- Smart context length probing with persistent caching + banner display
/resumecommand for switching to named sessions in gateway- Session reset policy for messaging platforms
- Native file attachments: send_document + send_video
- Document file processing for PDF, text, and Office files — @tekelala
- Forum topic session isolation (#766) — @spanishflu-est1918
- Browser screenshot sharing via MEDIA: protocol (#657)
- Location support for find-nearby skill
- TTS voice message accumulation fix (#176) — @Bartok9
- Improved error handling and logging (#763) — @aydnOktay
- Italic regex newline fix + 43 format tests (#204) — @0xbyt4
- Channel topic included in session context (#248) — @Bartok9
- DISCORD_ALLOW_BOTS config for bot message filtering (#758)
- Document and video support (#784)
- Improved error handling and logging (#761) — @aydnOktay
- App_mention 404 fix + document/video support (#784)
- Structured logging replacing print statements — @aydnOktay
- Native media sending — images, videos, documents (#292) — @satelerd
- Multi-user session isolation (#75) — @satelerd
- Cross-platform port cleanup replacing Linux-only fuser (#433) — @Farukest
- DM interrupt key mismatch fix (#350) — @Farukest
- Full Signal messenger gateway via signal-cli-rest-api (#405)
- Media URL support in message events (#871)
- New email gateway platform — @0xbyt4
- REST tools + WebSocket gateway integration (#184) — @0xbyt4
- Service discovery and enhanced setup
- Toolset mapping fix (#538) — @Himess
- Expose subagent tool calls and thinking to users (#186) — @cutepawss
- Configurable background process watcher notifications (#840)
edit_message()for Telegram/Discord/Slack with fallback/compress,/usage,/updateslash commands- Eliminated 3x SQLite message duplication in gateway sessions (#873)
- Stabilize system prompt across gateway turns for cache hits (#754)
- MCP server shutdown on gateway exit (#796) — @0xbyt4
- Pass session_db to AIAgent, fixing session_search error (#108) — @Bartok9
- Persist transcript changes in /retry, /undo; fix /reset attribute (#217) — @Farukest
- UTF-8 encoding fix preventing Windows crashes (#369) — @ch3ronsa
- Data-driven skin/theme engine — 7 built-in skins (default, ares, mono, slate, poseidon, sisyphus, charizard) + custom YAML skins
/personalitycommand with custom personality + disable support (#773) — @teyrebaz33- User-defined quick commands that bypass the agent loop (#746) — @teyrebaz33
/reasoningcommand for effort level and display toggle (#921)/verboseslash command to toggle debug at runtime (#94) — @cesareth/insightscommand — usage analytics, cost estimation & activity patterns (#552)/backgroundcommand for managing background processes/helpformatting with command categories- Bell-on-complete — terminal bell when agent finishes (#738)
- Up/down arrow history navigation
- Clipboard image paste (Alt+V / Ctrl+V)
- Loading indicators for slow slash commands (#882)
- Spinner flickering fix under patch_stdout (#91) — @0xbyt4
--quiet/-Qflag for programmatic single-query mode--fuck-it-ship-itflag to bypass all approval prompts (#724) — @dmahan93- Tools summary flag (#767) — @luisv-1
- Terminal blinking fix on SSH (#284) — @ygd58
- Multi-line paste detection fix (#84) — @0xbyt4
- Modular setup wizard with section subcommands and tool-first UX
- Container resource configuration prompts
- Backend validation for required binaries
- Config migration system (currently v7)
- API keys properly routed to .env instead of config.yaml (#469) — @ygd58
- Atomic write for .env to prevent API key loss on crash (#954)
hermes tools— per-platform tool enable/disable with curses UIhermes doctorfor health checks across all configured providershermes updatewith auto-restart for gateway service- Show update-available notice in CLI banner
- Multiple named custom providers
- Shell config detection improvement for PATH setup (#317) — @mehmetkr-31
- Consistent HERMES_HOME and .env path resolution (#51, #48) — @deankerr
- Docker backend fix on macOS + subagent auth for Nous Portal (#46) — @rsavitt
- Native MCP client with stdio + HTTP transports (#291 — @0xbyt4, #301)
- Sampling support — server-initiated LLM requests (#753)
- Resource and prompt discovery
- Automatic reconnection and security hardening
- Banner integration,
/reload-mcpcommand hermes toolsUI integration
- Local browser backend — zero-cost headless Chromium (no Browserbase needed)
- Console/errors tool, annotated screenshots, auto-recording, dogfood QA skill (#745)
- Screenshot sharing via MEDIA: on all messaging platforms (#657)
execute_codesandbox with json_parse, shell_quote, retry helpers- Docker: custom volume mounts (#158) — @Indelwin
- Daytona cloud sandbox backend (#451) — @rovle
- SSH backend fix (#59) — @deankerr
- Shell noise filtering and login shell execution for environment consistency
- Head+tail truncation for execute_code stdout overflow
- Configurable background process notification modes
- Filesystem checkpoints and
/rollbackcommand (#824) - Structured tool result hints (next-action guidance) for patch and search_files (#722)
- Docker volumes passed to sandbox container config (#687) — @manuelschipper
- Per-platform skill enable/disable (#743) — @teyrebaz33
- Conditional skill activation based on tool availability (#785) — @teyrebaz33
- Skill prerequisites — hide skills with unmet dependencies (#659) — @kshitijk4poor
- Optional skills — shipped but not activated by default
hermes skills browse— paginated hub browsing- Skills sub-category organization
- Platform-conditional skill loading
- Atomic skill file writes (#551) — @aydnOktay
- Skills sync data loss prevention (#563) — @0xbyt4
- Dynamic skill slash commands for CLI and gateway
- ASCII Art — pyfiglet (571 fonts), cowsay, image-to-ascii (#209) — @0xbyt4
- ASCII Video — Full production pipeline (#854) — @SHL0MS
- DuckDuckGo Search — Firecrawl fallback (#267) — @gamedevCloudy; DDGS API expansion (#598) — @areu01or00
- Solana Blockchain — Wallet balances, USD pricing, token names (#212) — @gizdusum
- AgentMail — Agent-owned email inboxes (#330) — @teyrebaz33
- Polymarket — Prediction market data (read-only) (#629)
- OpenClaw Migration — Official migration tool (#570) — @unmodeled-tyler
- Domain Intelligence — Passive recon: subdomains, SSL, WHOIS, DNS (#136) — @FurkanL0
- Superpowers — Software development skills (#137) — @kaos35
- Hermes-Atropos — RL environment development skill (#815)
- Plus: arXiv search, OCR/documents, Excalidraw diagrams, YouTube transcripts, GIF search, Pokémon player, Minecraft modpack server, OpenHue (Philips Hue), Google Workspace, Notion, PowerPoint, Obsidian, find-nearby, and 40+ MLOps skills
- Path traversal fix in skill_view — prevented reading arbitrary files (#220) — @Farukest
- Shell injection prevention in sudo password piping (#65) — @leonsgithub
- Dangerous command detection: multiline bypass fix (#233) — @Farukest; tee/process substitution patterns (#280) — @dogiladeveloper
- Symlink boundary check fix in skills_guard (#386) — @Farukest
- Symlink bypass fix in write deny list on macOS (#61) — @0xbyt4
- Multi-word prompt injection bypass prevention (#192) — @0xbyt4
- Cron prompt injection scanner bypass fix (#63) — @0xbyt4
- Enforce 0600/0700 file permissions on sensitive files (#757)
- .env file permissions restricted to owner-only (#529) — @Himess
--forceflag properly blocked from overriding dangerous verdicts (#388) — @Farukest- FTS5 query sanitization + DB connection leak fix (#565) — @0xbyt4
- Expand secret redaction patterns + config toggle to disable
- In-memory permanent allowlist to prevent data leak (#600) — @alireza78a
- sessions.json (#611) — @alireza78a
- Cron jobs (#146) — @alireza78a
- .env config (#954)
- Process checkpoints (#298) — @aydnOktay
- Batch runner (#297) — @aydnOktay
- Skill files (#551) — @aydnOktay
- Guard all print() against OSError for systemd/headless environments (#963)
- Reset all retry counters at start of run_conversation (#607) — @0xbyt4
- Return deny on approval callback timeout instead of None (#603) — @0xbyt4
- Fix None message content crashes across codebase (#277)
- Fix context overrun crash with local LLM backends (#403) — @ch3ronsa
- Prevent
_flush_sentinelfrom leaking to external APIs (#227) — @Farukest - Prevent conversation_history mutation in callers (#229) — @Farukest
- Fix systemd restart loop (#614) — @voidborne-d
- Close file handles and sockets to prevent fd leaks (#568 — @alireza78a, #296 — @alireza78a, #709 — @memosr)
- Prevent data loss in clipboard PNG conversion (#602) — @0xbyt4
- Eliminate shell noise from terminal output (#293) — @0xbyt4
- Timezone-aware now() for prompt, cron, and execute_code (#309) — @areu01or00
- Guard POSIX-only process functions (#219) — @Farukest
- Windows native support via Git Bash + ZIP-based update fallback
- pywinpty for PTY support (#457) — @shitcoinsherpa
- Explicit UTF-8 encoding on all config/data file I/O (#458) — @shitcoinsherpa
- Windows-compatible path handling (#354, #390) — @Farukest
- Regex-based search output parsing for drive-letter paths (#533) — @Himess
- Auth store file lock for Windows (#455) — @shitcoinsherpa
- Fix DeepSeek V3 tool call parser silently dropping multi-line JSON arguments (#444) — @PercyDikec
- Fix gateway transcript losing 1 message per turn due to offset mismatch (#395) — @PercyDikec
- Fix /retry command silently discarding the agent's final response (#441) — @PercyDikec
- Fix max-iterations retry returning empty string after think-block stripping (#438) — @PercyDikec
- Fix max-iterations retry using hardcoded max_tokens (#436) — @Farukest
- Fix Codex status dict key mismatch (#448) and visibility filter (#446) — @PercyDikec
- Strip <think> blocks from final user-facing responses (#174) — @Bartok9
- Fix <think> block regex stripping visible content when model discusses tags literally (#786)
- Fix Mistral 422 errors from leftover finish_reason in assistant messages (#253) — @Sertug17
- Fix OPENROUTER_API_KEY resolution order across all code paths (#295) — @0xbyt4
- Fix OPENAI_BASE_URL API key priority (#420) — @manuelschipper
- Fix Anthropic "prompt is too long" 400 error not detected as context length error (#813)
- Fix SQLite session transcript accumulating duplicate messages — 3-4x token inflation (#860)
- Fix setup wizard skipping API key prompts on first install (#748)
- Fix setup wizard showing OpenRouter model list for Nous Portal (#575) — @PercyDikec
- Fix provider selection not persisting when switching via hermes model (#881)
- Fix Docker backend failing when docker not in PATH on macOS (#889)
- Fix ClawHub Skills Hub adapter for API endpoint changes (#286) — @BP602
- Fix Honcho auto-enable when API key is present (#243) — @Bartok9
- Fix duplicate 'skills' subparser crash on Python 3.11+ (#898)
- Fix memory tool entry parsing when content contains section sign (#162) — @aydnOktay
- Fix piped install silently aborting when interactive prompts fail (#72) — @cutepawss
- Fix false positives in recursive delete detection (#68) — @cutepawss
- Fix Ruff lint warnings across codebase (#608) — @JackTheGit
- Fix Anthropic native base URL fail-fast (#173) — @adavyas
- Fix install.sh creating ~/.hermes before moving Node.js directory (#53) — @JoshuaMart
- Fix SystemExit traceback during atexit cleanup on Ctrl+C (#55) — @bierlingm
- Restore missing MIT license file (#620) — @stablegenius49
- 3,289 tests across agent, gateway, tools, cron, and CLI
- Parallelized test suite with pytest-xdist (#802) — @OutThisLife
- Unit tests batch 1: 8 core modules (#60) — @0xbyt4
- Unit tests batch 2: 8 more modules (#62) — @0xbyt4
- Unit tests batch 3: 8 untested modules (#191) — @0xbyt4
- Unit tests batch 4: 5 security/logic-critical modules (#193) — @0xbyt4
- AIAgent (run_agent.py) unit tests (#67) — @0xbyt4
- Trajectory compressor tests (#203) — @0xbyt4
- Clarify tool tests (#121) — @Bartok9
- Telegram format tests — 43 tests for italic/bold/code rendering (#204) — @0xbyt4
- Vision tools type hints + 42 tests (#792)
- Compressor tool-call boundary regression tests (#648) — @intertwine
- Test structure reorganization (#34) — @0xbyt4
- Shell noise elimination + fix 36 test failures (#293) — @0xbyt4
- WebResearchEnv — Multi-step web research RL environment (#434) — @jackx707
- Modal sandbox concurrency limits to avoid deadlocks (#621) — @voteblake
- Hermes-atropos-environments bundled skill (#815)
- Local vLLM instance support for evaluation — @dmahan93
- YC-Bench long-horizon agent benchmark environment
- OpenThoughts-TBLite evaluation environment and scripts
- Full documentation website (Docusaurus) with 37+ pages
- Comprehensive platform setup guides for Telegram, Discord, Slack, WhatsApp, Signal, Email
- AGENTS.md — development guide for AI coding assistants
- CONTRIBUTING.md (#117) — @Bartok9
- Slash commands reference (#142) — @Bartok9
- Comprehensive AGENTS.md accuracy audit (#732)
- Skin/theme system documentation
- MCP documentation and examples
- Docs accuracy audit — 35+ corrections
- Documentation typo fixes (#825, #439) — @JackTheGit
- CLI config precedence and terminology standardization (#166, #167, #168) — @Jr-kenny
- Telegram token regex documentation (#713) — @VolodymyrBg
Thank you to the 63 contributors who made this release possible! In just over two weeks, the Hermes Agent community came together to ship an extraordinary amount of work.
- @teknium1 — 43 PRs: Project lead, core architecture, provider router, sessions, skills, CLI, documentation
- @0xbyt4 — 40 PRs: MCP client, Home Assistant, security fixes (symlink, prompt injection, cron), extensive test coverage (6 batches), ascii-art skill, shell noise elimination, skills sync, Telegram formatting, and dozens more
- @Farukest — 16 PRs: Security hardening (path traversal, dangerous command detection, symlink boundary), Windows compatibility (POSIX guards, path handling), WhatsApp fixes, max-iterations retry, gateway fixes
- @aydnOktay — 11 PRs: Atomic writes (process checkpoints, batch runner, skill files), error handling improvements across Telegram, Discord, code execution, transcription, TTS, and skills
- @Bartok9 — 9 PRs: CONTRIBUTING.md, slash commands reference, Discord channel topics, think-block stripping, TTS fix, Honcho fix, session count fix, clarify tests
- @PercyDikec — 7 PRs: DeepSeek V3 parser fix, /retry response discard, gateway transcript offset, Codex status/visibility, max-iterations retry, setup wizard fix
- @teyrebaz33 — 5 PRs: Skills enable/disable system, quick commands, personality customization, conditional skill activation
- @alireza78a — 5 PRs: Atomic writes (cron, sessions), fd leak prevention, security allowlist, code execution socket cleanup
- @shitcoinsherpa — 3 PRs: Windows support (pywinpty, UTF-8 encoding, auth store lock)
- @Himess — 3 PRs: Cron/HomeAssistant/Daytona fix, Windows drive-letter parsing, .env permissions
- @satelerd — 2 PRs: WhatsApp native media, multi-user session isolation
- @rovle — 1 PR: Daytona cloud sandbox backend (4 commits)
- @erosika — 1 PR: Honcho AI-native memory integration
- @dmahan93 — 1 PR: --fuck-it-ship-it flag + RL environment work
- @SHL0MS — 1 PR: ASCII video skill
@0xbyt4, @BP602, @Bartok9, @Farukest, @FurkanL0, @Himess, @Indelwin, @JackTheGit, @JoshuaMart, @Jr-kenny, @OutThisLife, @PercyDikec, @SHL0MS, @Sertug17, @VencentSoliman, @VolodymyrBg, @adavyas, @alireza78a, @areu01or00, @aydnOktay, @batuhankocyigit, @bierlingm, @caentzminger, @cesareth, @ch3ronsa, @christomitov, @cutepawss, @deankerr, @dmahan93, @dogiladeveloper, @dragonkhoi, @erosika, @gamedevCloudy, @gizdusum, @grp06, @intertwine, @jackx707, @jdblackstar, @johnh4098, @kaos35, @kshitijk4poor, @leonsgithub, @luisv-1, @manuelschipper, @mehmetkr-31, @memosr, @PeterFile, @rewbs, @rovle, @rsavitt, @satelerd, @spanishflu-est1918, @stablegenius49, @tars90percent, @tekelala, @teknium1, @teyrebaz33, @tripledoublev, @unmodeled-tyler, @voidborne-d, @voteblake, @ygd58
Full Changelog: v0.1.0...v2026.3.12