@iamlukethedev

I'm a Hermes Builder - Hermes Bots Mobile App - Hermes Agora - Hermes Bible - Hermes 3D Christian • Dad • Life Lover https://nitter.cf/t.co/htQ7bCae8A - https://nitter.cf/t.co/jRAxxZ5GSt

United States
Joined March 2009
After 6 months of OpenClaw, I finally tried Hermes. Three hours later, my Jira agent had already saved me nearly 2 months of engineering time. Teknium, you were right. For the last 6+ months, I’ve been one of the biggest OpenClaw supporters. I built @Claw3DCity on top of it. I shipped countless workflows with it. I genuinely love the project. But over the last few weeks, I kept getting messages: “Have you tried Hermes?” “OpenClaw broke my workflow.” “The latest OpenClaw update broke Codex.” Then Teknium replied to one of my posts. So I finally stopped being stubborn and gave Hermes a real shot. I rebuilt my Jira → Agent → GitHub workflow in Hermes. And honestly… It blew my mind. Not because it could do something OpenClaw couldn’t. But because of how smooth the experience was. While building the workflow, Hermes suggested improvements. It pointed out edge cases. It recommended additional protections. And most importantly: It worked on the first pass. The OpenClaw version took me around 7 hours to get where I wanted it. The Hermes version took about 1 hour. Today alone, the workflow closed 12 Jira tickets in under 3 hours. Work that would’ve likely consumed well over two months of engineering time. That got my attention. A lot. So I’ve made my decision. I’m moving my personal workflows to Hermes. I’ll likely move client workflows as well. That’s not a knock on OpenClaw. OpenClaw inspired a lot of what I’m building today, and I’ll keep following the project closely. But right now, for my use case, Hermes feels like the better fit. Teknium, thank you for pushing me to try it. And thank you for all the support you’ve given Claw3D along the way. Now comes the fun part. Getting Claw3D running even deeper on Hermes. 👀 If you want me to share the full Jira → Hermes → GitHub workflow, comment: HERMES FLOW
Replying to @iamlukethedev
Replace 4 months of engineering by using Hermes Agent :)
83
41
15
872
205,376
I know I’m a little bit ahead of myself but this is giving me goosebumps My own Hermes OS
Didn't want to say anything but I kinda started something a few days ago
42
31
2
774
72,024
Important context on what “making Hermes more like Pi” actually means: The direction is a leaner Hermes core with more functionality moved into plugins Memory providers are the first test. Instead of Hermes bundling and maintaining every integration, those integrations can live in their creators’ repos and be distributed through the new Plugin Catalog. Less bundled code Less bloat Less maintenance in core More ownership for plugin creators And now, actual discoverability through the catalog Hermes stays a personal agent. The ecosystem around it becomes more modular I really like this direction
We are going to lean into making Hermes more like Pi, and less like OpenClaw
4
3
56
4,717
Didn't want to say anything but I kinda started something a few days ago
With the full range of plugins you can now explore you could soon replace your whole operating system with Hermes Agent!
14
22
2
479
107,708
Hermes just crossed 100 plugins. Now add yours The new Plugin Catalog launches with 4 official plugins + 96 from the community, covering browsers, desktop, voice, automation, tools, models and more. But my favorite part is that this is open to builders If you’ve built a Hermes plugin, you can submit it to the catalog through a PR. Your plugin needs to be public, released/tagged, pass catalog validation, and submissions are reviewed before being added. Once accepted, anyone can install it with: hermes plugins install And catalog installs are pinned to the exact reviewed commit, so pushing new code to your repo doesn’t silently change what users install. There are 100 today Curious how quickly the community turns that into 200
10
1
29
4,880
Hermes just crossed 100 plugins. Now add yours The new Plugin Catalog launches with 4 official plugins + 96 from the community, covering browsers, desktop, voice, automation, tools, models and more. But my favorite part is that this is open to builders If you’ve built a Hermes plugin, you can submit it to the catalog through a PR. Your plugin needs to be public, released/tagged, pass catalog validation, and submissions are reviewed before being added. Once accepted, anyone can install it with: hermes plugins install And catalog installs are pinned to the exact reviewed commit, so pushing new code to your repo doesn’t silently change what users install. There are 100 today Curious how quickly the community turns that into 200
Hermes Agent now has a Plugin Catalog: starting with 4 official plugins and 96 from the community, covering desktop mods, new platforms, browsing, specialized tools, and more. Our team reviews every community plugin, and we will add new ones regularly. hermes-agent.nousresearch.co…
3
2
1
40
9,427
September Record. Hermes merged 226 PRs today The ones worth knowing: • Plugin catalog: 66 community plugins from the Discord sweep, shelved by category, ranked by stars • Local models prefer llama.cpp b10964 with one-click engine updates • Desktop profile rail can hide; gateway and profile groups drag by header • read_file and search_files mask opaque credentials; hermes config get masks secrets by default • write_file/patch refuse to overwrite vault, browser-profile, Google OAuth, and Bitwarden cache • WhatsApp group @ mentions work again; Slack clarify cards retire cleanly; Feishu inbound stays awake • Checkpoint store gc no longer stalls tool calls, gateway boot, or hermes update • Late-registered plugin routes and keybinds finally reach Desktop tables • Computer-use element clicks work on cua-driver 0.21+; doctor diagnoses denied spawn • Teammate @ hermes handoffs drive the primary bot in group rooms • MCP OAuth works against RFC 9207 servers from dashboard, Desktop, and TUI • LTX 2.5 and Kling O3 video families land; hermes-live-voice joins the catalog Here is the full list: DESKTOP IMPROVEMENTS (45 PRs) • fix(desktop): route tile tab title heals when its plugin route registers late • fix(desktop): remembered plugin page survives boot when the session list beats disk plugins • fix(gateway): Desktop readiness probe no longer shows onboarding on a multiplexed backend or when a fallback provider serves the session • fix(desktop): a lone chat keeps its tab strip while another chat zone is open • fix(desktop): late-registered plugin routes and keybinds reach their tables • fix(desktop): stabilize session loading and history restoration • fix(desktop): long sessions no longer lurch a full viewport on switch • Desktop: profile rail can be hidden (statusbar Profiles dropdown) and gateway/profile groups drag by header • fix(dashboard): dropped terminal viewers no longer pin the PTY as attached forever • fix(bot-mode): live-DM intent files with the message plaintext no longer linger forever • fix(desktop): switching back to a gateway restores its last-used profile instead of default • fix(web): iPhone Safari /chat keeps the composer above the keyboard instead of pinning the page to the top • fix(bot-mode): NO_REPLY/[SILENT] turns no longer render or relay as chat text in Bot Mode • fix(compression): Desktop no longer sits on a bare spinner while the first compaction probes the aux model • fix(desktop): a machine removed from Connections leaves every gateway's relay roster • fix(desktop): hung remote SSH probes die on the remote instead of piling up orphans • fix(desktop): code block copy button no longer overlaps the block's scrollbar • fix(desktop): Settings exposes the Codex compression auto-raise toggle beside the threshold • fix(desktop): Passwords page no longer shows a cached 'Not detected' manager after it becomes available • fix(desktop): Settings Keys no longer saves an unsaved credential draft into the newly selected profile • fix(desktop): composer up-arrow history recall no longer replaces a just-typed draft • fix(desktop): sidebar 'Show all sessions' shows every session in overview and lanes • fix(linux): hermes.desktop Exec no longer flips to the module form on a cold-context launch • fix(desktop): local-runtime job poller no longer throws after test-env teardown (main CI red) • fix(mcp): dashboard-served profiles keep their own MCP connections and credentials • fix(state): archiving a Bot Chat no longer locks its title; the replacement becomes canonical • docs: Bot Mode group chats document the editable name and room picture • fix(bot-mode): group-room sends no longer vanish silently, error surfaced, draft kept • fix(dashboard): Restart Gateway works on system-scope installs • Desktop and TUI errors say what happened and offer one-click fixes (message audit, GUI) • fix(desktop): settings pages state loudly when they edit a non-default profile's config • Desktop profile switches stay on the selected gateway • Dashboard errors read as plain sentences with a fix button (message audit, web) • live-dashboard optional skill: one-sentence self-updating status pages, rendered in the Desktop preview pane • fix(mcp): MCP OAuth login works against RFC 9207 servers (Cloudflare, Resend) from the dashboard, Desktop and TUI • fix(desktop): show sudo commands without blurring the conversation • fix(bot-mode): give each group thread its own member session • Routed cron fires in the desktop backend run under multiplex semantics, so launch-profile secrets never reach another profile's child • Desktop runtime discovery runs off the main event loop • Desktop window enumeration loads get-windows from app.asar.unpacked on macOS • fix(bot-mode): group follow-ups and late replies stay visible • fix(desktop): dragging a link from a browser attaches an @url chip instead of failing • fix(cron): Bot Chat output waits for CLI owners to release • fix(bot-mode): service DMs use the active Hermes installation • fix(bot-mode): a teammate's @hermes handoff now drives the primary bot in group rooms VOICE & REAL-TIME (5 PRs) • fix(stt): local faster-whisper loads a cached model without a Hub round-trip and names the HF mirror levers • fix(desktop): Capabilities TTS voice fields write the scoped profile's config, not the active one • feat(video_gen): LTX 2.5 + Kling O3 video families; Happy Horse now runs v1.1 • test(stt): idle-timeout progress test gets a spawn-latency-proof idle budget • feat(plugin-catalog): add hermes-live-voice (community) DEVELOPER TOOLS & PLUGINS (47 PRs) • hermes update no longer fails fleet verification on a slow gateway boot • plugin-catalog: 66 community plugins from the Discord sweep + maintainer-sweep submission rule • hermes update / doctor warn when /rollback checkpoints are on and the store is over its cap • ci: OSV scan runs weekly against main, not on every PR • AGENTS.md states the profile-scope invariant (one process, many profiles) with the real seams per area; advisory CI lint for the hazard shapes • Checkpoint store gc no longer stalls tool calls, gateway startup or hermes update • fix(update): hermes update no longer dies on stale root-level modules like utils • fix(cli): hermes no longer crashes on launch with NameError file_signature • fix(cli): an interrupting message with an image attachment is re-queued instead of silently dropped • fix(state): existing WAL state.db on a virtiofs/9p mount now warns at startup and in hermes doctor • fix(local-runtime): idle models unload despite transient telemetry probe errors • fix(skills): skill_view no longer reports a collision for a package's internal prompts/.md • fix(local-runtime): managed llama-server starts on llama.cpp b10964: --no-webui renamed to --no-ui • docs(developer-guide): document HERMES_HOME resolution, profile isolation and the test state.db guard bypass • test(gateway, cli): five tests no longer read or restart the live install • fix(mcp): tools with a parameter named properties/required no longer 400 every request • Plugin catalog stars: probe only from the scheduled skills-index run, one GraphQL request • catalog: hermes-memory-wiki, Memory Wiki dashboard plugin • fix(mcp): Windows profile deletion no longer fails on the cached mcp-stderr.log after a stdio probe • fix(cli): first repaint no longer dropped on freshly booted machines (CI flake 32494557030) • docs(tools): clarify terminal background waits • feat(skills): skills . auto_load pins skills into every new session • fix(cli): `hermes sessions list|stats|pinned` and a plain `hermes doctor` no longer open state.db as a writer • fix(cli): profile export and clone no longer abort on a Unix socket or FIFO in the profile • hermes update no longer autostashes flat-install runtime state • Plugin hook gate keys on the call, so parallel same-tool calls are no longer blocked • Plugin catalog: rank by GitHub stars, probed at most once a day • feat(plugin-catalog): add grill-tab community plugin • CI: the advisory OSV scan no longer gates merges • Plugin catalog page: entries shelved by category (Memory, Desktop, Platforms, ...) • feat(plugins): add Octen web search provider to catalog • feat(plugin-catalog): add metamask-wallet community entry • plugin catalog: add community plugin hermes-newswire • plugin-catalog: add hermes-pets-all • feat(local-models): prefer b10964 and add one-click engine updates • feat(plugin-catalog): add hermes-auto-titler (community) • fix(computer-use): element clicks work on cua-driver 0.21+, doctor diagnoses denied spawn, skill matches driver • Plugin catalog: no self-updaters instead of a 2-week pin age, enforced in CI • feat(catalog): add shodan community plugin • feat(catalog): add hermes-terminal community plugin • feat(catalog): add hermes-tailscale community plugin • feat(catalog): add hermes-ssh community plugin • feat(catalog): add hermes-rss community plugin • feat(catalog): add hermes-office community plugin • feat(catalog): add hermes-nous-prices community plugin • feat(catalog): add hermes-resetwatch community plugin • feat(catalog): add hermes-ledgerline community plugin SECURITY & SECRETS (12 PRs) • fix(redact): read_file/search_files mask opaque credentials in secret-bearing files • fix(file-safety): write_file/patch no longer overwrite vault, browser-profile, Google OAuth and Bitwarden cache under HERMES_HOME • fix(approval): command_allowlist rule keys are honored in cron/-q/unattended sessions • fix(security): HERMES_HOME under a symlinked parent (macOS /tmp, /var) is secured to 0700 • fix(config): `hermes config get` masks API keys and secrets by default; --raw opts out • fix(cli): approvals suggest no longer re-prints credentials from mined commands • fix(vault): 1Password/Bitwarden logins fill on every saved website origin • approval checks also catch unquoted brace/glob spellings of find -delete/-exec and read-tool exec flags • fix(file-tools): reject Windows NT/device-namespace paths on the raw string before resolution (NTLM leak hardening) • fix(approval): cron and other unattended runs no longer hang on approval cards after inheriting gateway presence env • MCP write-capable tools are not auto-retried after mid-flight session expiry (no duplicate side effects) • MCP OAuth refresh is fenced across processes so a rotated refresh token is presented exactly once INTEGRATIONS & CHAT (43 PRs) • fix(mcp): Figma OAuth login completes despite the omitted iss parameter • fix(gateway): skill scans no longer block the event loop from slash fallthrough or the Telegram menu • fix(kanban): linking a ready card under an unfinished parent records why it dropped to todo • fix(matrix): a reply to the bot keeps its reply_to_author under require_mention • fix(agent): opencode-zen encrypted-reasoning and NVIDIA NIM tool-content 400s now recover instead of poisoning the session • fix(kanban): worker sessions are named after their card, no title model call per worker • fix(kanban): a claim that never spawns a worker trips the failure breaker instead of reclaiming forever • fix(agent): Gemini via OpenRouter no longer 400s on an empty thought signature sidecar • fix(gateway): multiplex eviction commits memory under the owning profile; launch-profile webhooks register at startup • fix(codex): /usage recovers from a server-revoked token with a forced refresh on 401 • fix(codex): HERMES_CODEX_BASE_URL now applies to pooled and auxiliary Codex clients • fix(auth): provider picker no longer hangs on provider auto + base_url recursion • fix(acp): named provider endpoints offer one round-tripping model id, raw-key ids no longer sent upstream • fix(codex): replayed tool call_ids that recur across turns no longer 400 with duplicate function_call_output • fix(auxiliary): a failed auth-refresh retry now falls through to the configured fallback_chain • fix(vision): Xiaomi tool-message veto survives OpenRouter routing, no more 400 'text is not set' after image tools • fix(copilot): two-slash enterprise BYOK model ids are no longer truncated before the request • fix(auxiliary): 422 shape rejections of response_format.json_schema now retry without structured output • fix(bedrock): xAI Grok on Converse no longer 400s on temperature/topP; aux retry reads Bedrock's rejection wording • fix(whatsapp): group @ mentions and replies to the bot are no longer ignored • fix(slack): system-message subtypes no longer start an agent turn • fix(slack): clarify cards retire in place on timeout, reset and free-prose cancel • fix(telegram): transport failure lines name the error and polling logs its recovery • fix(feishu): inbound no longer goes deaf after the loop default executor is torn down • fix(photon): inbound messages containing U+2028 line separators are no longer dropped • fix(auth): Nous routing overrides fail closed without a profile scope; Portal-returned inference host must match the operator's override • fix(telegram): CJK content can opt in to native rich messages • fix(auth): a non-production Portal's token is spent at its own inference host on every path • feat(webhook): rapid same-entity events coalesce into one agent run • fix(gemini): host-root GEMINI_BASE_URL no longer 404s, /v1beta appended automatically • fix(codex): reap app-server descendant processes • fix(kanban): review handoff of a never-claimed card is attributed to the implementer, not the reviewer • fix(discord): hidden channels no longer appear in the directory or backfill (Discord obfuscation change, Nov 16 deadline) • fix(whatsapp): system/reaction envelopes no longer trigger blank agent turns (Cloud API BSUID webhooks, Aug 2026) • fix(pairing): accept spaced approval codes • Subagents keep execute_code state, can write scratch Kanban boards, and never lose a result to an output_schema miss • Multiplex gateway: unserved WhatsApp/Relay secondaries are reported, needs_attention clears on connect, legacy Relay exporter vars auto-migrate to relay-plugins.toml • fix(kanban): block-loop triage pings no longer claim a human decision unless the block is needs_input • fix(kanban): homes with kanban.dispatch_profiles no longer claim other homes' default cards on a shared board • fix(cron): hermes pause now stops managed-cron webhook fires and the misfire backstop • fix(gemini): parallel calls to one tool no longer collide into unparseable arguments • Matrix sync loop classifies auth errors by errcode/status instead of substrings • Discord adapter trips liveness when the socket ACKs heartbeats but delivers no events STABILITY & FIXES (74 PRs) • Multiplex gateway boot no longer re-scans every plugin's source per profile • fix: env-backed pool rows outside the registry tuple hydrate and rotate • fix(tests): pytest basetemp inside the Hermes home no longer turns the sandbox into the live install • fix(gateway): a human message answered with a bare silence marker gets a visible reply instead of vanishing • feat(free-tier): every account-service and welcome-host failure has a code, a sentence and a ruled retry • Served-profile children and background threads run with their own profile's env/scope; kanban never kills a recycled PID • fix(config): same-size, same-mtime config replacements are picked up without a restart • fix(update): flat-install runtime state (state.db, snapshots, config) no longer swept into the autostash • fix(cron): restart-safe worker names a vanished user bus and re-probes instead of failing every tick with exit 1 • fix(profile): distribution update no longer deletes user-added skills or cron jobs • fix(browser): loopback CDP dials bypass the macOS system proxy, browser_exec works again • fix(cron): an off-tick fire no longer drops the next scheduled slot • fix(state): consecutive background-review prompts no longer drop the real assistant reply on restore • fix(gateway): agent-cache memory valve counts same-cgroup child processes, not just the gateway's own RSS • fix(agent): the /steer briefing tells the model the steer arrives as its own user message, not inside a tool result • fix(journey): a skill created by /learn or skill_manage shows in /journey before its first use • fix(file-sync): a hard-killed sync-back no longer leaks its temp tar until the disk fills • fix(moa): non-finite fanout/temperature settings fall back instead of crashing hermes moa list • fix(logging): a second profile home in one process gets its own routed log, not every profile's lines • fix(state): a reaction no longer rewrites the whole session's display order on the next read • fix(sessions): reopening a parent no longer rewrites a /branch child as a reset successor • fix(agent): free-tier OpenCode model under the paid opencode profile no longer loops on 401, keyless placeholder never sent as a bearer • profile clone can opt into staying synced with its source • fix(gateway): SIGUSR2 stack dump no longer kills the gateway • fix(gateway): allow_all_users in config.yaml is honoured instead of silently dropped • fix(gateway): no 'possible duplicate send' warning on turns with text streaming off • fix(gateway): a translated silence sentinel ([静默]) is no longer delivered as content; cron prompt pins the ASCII token • Cron 'Script not found' explains per-profile lookup and the fix • fix(gateway): a leaked terminal eos sentinel no longer hides the MEDIA attachment • fix(process): a background child that closes stdout early is still reaped • optional skill ip-as-logo: minimal cute mascot marks via image_generate • fix(gateway): startup watchdog no longer kills a large install mid-maintenance and always keeps its stack dump • fix(gateway): a follow-up arriving before admission no longer drops the original message • fix(update-windows): a dead-attested profile is cold-started even when another profile is still running • Failed turns, CLI errors, gateway and cron notices explain themselves and name the fix (message audit, core) • fix(agent): prompt guidance no longer mandates web tools the session doesn't have • fix(update): import probe no longer times out on installs with external secret sources; log EIO named once • fix(update): post-pull config migration no longer dies on a stale cached module • fix(gateway): restart hands an externally-supervised gateway back to its supervisor instead of wedging it • fix(update): fleet_restart_pending settles on a verified gateway serving the pulled sha; foreign state-file writers never read as current • optional skill auteur: cinematic web design with executable anti-slop gates • fix(nix): NixOS module lingers the service user so restart-safe cron workers get a user scope • session_search recovers paraphrased multi-word queries via OR-relaxed retry on a zero-result miss • fix(cron): lifecycle guard no longer blocks inert python heredocs that name a large data file • fix(goals): failed quality gates re-run every boundary instead of replaying a stale git-status fingerprint • docs: optional-skills catalog drops a stray conflict marker; creative rows back in the creative table • fix(goals): /goal never parks on a PID that is not alive on the Hermes host • Imported agent setups stay in sync: `hermes import-agent --sync` • fix(cron): skills attached to cron jobs receive their [Skill config] block • session_search: after/before time bounds (ISO or 7d/24h/2w) and exclude_session_ids • fix(file-tools): stale write_file overwrites are refused before disk mutation • fix: classify Anthropic output-cap errors • CI-ready JSONL event output for one-shot runs: hermes chat -q --format stream-json • Session JSON exports include text-free timing evidence derived from message timestamps • fix(ci): slow healthy test files no longer die at the flat 300s cap as false FLAKYs • Multi-profile serve fails closed: secondary profiles never read the launch profile's secrets; default-member hosted rooms no longer crash • fix(tests): close leaked SessionDB handles suite-wide • feat(gateway): 'decline' unauthorized-DM behavior, one-time polite decline instead of pairing code • fix(cron): a job that removes itself during its run still delivers that run's output • fix(tools): persisted tool-result archives are verified lossless before being referenced • fix(web): config RMW handlers hold the mutation lock, concurrent saves stop dropping writes • fix(config): provider switch clears the stale model.key_env pointer • fix(agent): streamed refusals no longer vanish into empty-response retries • fix: memory-plugin and Qwen-CLI config JSON no longer silently lost to a Windows BOM • /context lists each instruction file with load / truncated / shadowed status • inbox-triage reply drafts calibrate to the user's own sent replies before drafting • CLI: turn-end notification no longer paints the pet's kitty frame as base64 / ghost status bar • Skills search no longer drops provider-filtered matches • fix(agent): a stale-killed stream unwinds its reader and reconnects instead of looping until the provider times out • fix(supermemory): capture turns via documents API so self-hosted sessions are not dropped • Codex Responses replay drops foreign message ids and scopes reasoning replay to the issuing model • Deleted-WAL guard no longer counts a descriptor closed mid-scan as a holder • Install scanner: SOCAT in prose is no longer a critical reverse-shell finding • fix(tools): one-shot notify follow-up no longer lost when the child finishes mid-publish (CI flake) 226 new features and fixes nitter.cf/iamlukethedev/status/2…
Hermes merged 108 PRs on September 14 The ones worth knowing: • Chat Font setting lands in Desktop so OpenDyslexic and friends work for chat and UI text • Skill and plugin scanners stop false-positive blocking on prose, doc links, and read-only ~/.ssh mentions • Auxiliary model pins cover all 11 Desktop slots and survive Settings saves • Per-task reasoning effort lives under Settings, Model, Auxiliary • manage_connections covers local MCP servers; portal-disabled Nous accounts no longer 404 the model • Gateway grows server to client JSON-RPC requests and Pydantic-generated TypeScript plus OpenRPC types • Cron jobs can fire from app webhook events, not just the clock • Subagents can see images with per-task image forwarding • Video: Gemini Omni Flash 1.1 text-to-video, Kling 3.0, and Wan 3.0 on FAL • state.db WAL and lock fixes stop Desktop chat dying after updates and Docker bind-mount corruption • OAuth callback no longer reflects errors as raw HTML; MCP OAuth tokens stay issuer-bound • v0.21.3 rollup ships so Cloud agents get the remote sign-in fix Here is the full list: DESKTOP IMPROVEMENTS (18 PRs) • feat(desktop): Chat Font setting for chat/UI text (OpenDyslexic etc.) • docs: macOS Desktop installer is Apple Silicon only • fix(desktop): HERMES_SKIP_INTRO no longer kills the guided first launch • fix(desktop): stopped clarify no longer swallows the next question; doctor counts state.db holders on macOS • Desktop: a concurrent apply no longer starts an SSH bootstrap before the pool stop teardown finishes • chore(desktop): backend contract v7 for the server to client request wire • Connector card offers one verb per row; Continue is the only way out (NS-869 leg one) • fix(config): Desktop fallback editor keeps per-entry routing; MoA save writes only the moa section • Desktop connect runs on the connection operation: one card, no link to the model, no renderer polling (NS-868) • fix(desktop): reserve red tool rows for clear failures • state.db WAL survives sibling closes and stray lock cancellation on every runtime (Desktop chat dies after update) • Auxiliary model pins: all 11 slots in Desktop, pins survive Settings saves, review effort honored on routed forks • Multiplexed secondary's Docker MEDIA paths and Desktop MCP Test-connection resolve under its own profile scope • Desktop: per-task reasoning effort in Settings, Model, Auxiliary • fix(desktop): SSH-isolated backends Desktop owns are no longer retired by idle-exit • fix(desktop): preserve tool results and keep live tool activity inspectable • feat(desktop): pasting a link over selected composer text now hyperlinks it • Desktop text fields no longer submit on IME composition Enter VOICE & REAL-TIME (5 PRs) • fix(image-gen): Codex-auth images use the native images endpoints, no pinned chat model • feat(video): Gemini Omni Flash 1.1, text-to-video now works on the FAL family (was image-only) • video_generate gains Wan 3.0 + Wan 3.0 Prime on the FAL backend • image_generate gains Kling Image v3 (t2i + singular-key edit) on FAL • video_generate gains Kling 3.0 Standard + Pro on the FAL backend DEVELOPER TOOLS & PLUGINS (34 PRs) • manage_connections is absent for Nous accounts the portal has not enabled (gateway 404 no longer reaches the model) • chore(release): v0.21.3 (v2026.9.14), rollup patch so Cloud agents get the remote sign-in fix • fmt(js): `npm run fix` auto-fix (3x) • test: hosted-room suites stop flaking under the parallel runner • feat(gateway): Pydantic wire contracts generate the TypeScript + OpenRPC types • feat(gateway): server to client JSON-RPC requests replace the *.request/*.respond event pairs • fix(delegation): parent stop reaches children whose background admission was rejected • fix(delegate): stopping an orchestrator subagent now stops grandchildren it was still spawning • Connector code lives in one package, tools/connectors/ (move only; NS-868 prep) • fix(cli): self-relaunch no longer escapes the venv through the source launcher • manage_connections covers local MCP servers; setup_mcp leaves the schema (NS-867, PR1) • fix(anthropic): malformed streamed tool JSON retries with buffered tool input • feat(web): send Hermes identity headers on Perplexity requests • fix(models): delist hy3-free + laguna-s-2.1-free, OpenCode relay dropped both (anon 401) • feat(tool_search): hunts for nonexistent tools return no results instead of incidental matches • feat(gemini): tool schemas no longer break on unions/refs, full JSON Schema via parametersJsonSchema • fix(fallback): automatic fallback no longer relabels named custom providers as 'custom' • fix(models): Anthropic /v1/models catalogs no longer stop at the first page • fix(doctor): gh CLI auth is detected on every gh version • feat(skills): scrollcraft, premium scroll-driven landing pages • feat(delegation): subagents can see images, per-task image forwarding • feat(skills): ai-presenter-video, verified presenter videos from script + image • feat(cli): /queue prompts are now listable, editable, and reorderable before they run • feat(model): large sessions now confirm before a cache-breaking mid-session model switch • feat(webhook): cron jobs can fire from app events, not just the clock • feat(cli): hermes worktree gains --json, --older-than, and external-tree visibility • The last unbounded CI job can no longer hold a runner for 6 hours • slash-commands.md can no longer drift from the command registry • Codex model discovery no longer hides models behind a fake client version • test: seven recurring bug classes can no longer regress silently, invariant conformance suites (117 tests) • fix(mcp): overlong minted MCP tool names no longer 400 every turn on strict providers • fix(title): prompt-example echoes no longer become session titles SECURITY & SECRETS (15 PRs) • Plugin scanner no longer hard-blocks plugins over prose and comments mentioning attack shapes • Skills scanner no longer quarantines a skill for naming the secrets it refuses to read • Skill/plugin scanner stops flagging attribute access as shell-rc edits and sudo event names as sudo usage • Content scanners stop blocking read-only mentions of ~/.ssh; writes still blocked • Skills scanner no longer blocks installs over relative Markdown doc links • fix(approval): escaped quotes in grep patterns no longer hardline-blocked, and no longer hide a following hardline command • Codex: concurrent profile refreshes of a shared root grant adopt the rotated pair instead of replaying the token • fix(dashboard): apply the sensitive-path guard • fix(approval): Approvals off no longer prompts on computer_use (shared gate honours approvals.mode off) • fix(auth): a Codex refresh under a profile rotates the root grant it borrowed • fix(plugin-guard): require confirmation for ambiguous JS capability references • Windows uvx.exe/pipx.exe MCP servers no longer skip the OSV malware preflight • feat(mcp): stored OAuth refresh tokens can no longer be sent to a different issuer • fix(security): OAuth callback page no longer reflects the error param as raw HTML • fix(redact): Python repr dict secrets no longer leak in tracebacks and pytest output INTEGRATIONS & CHAT (13 PRs) • Multiplexed gateway: boot probes, session-end memory commits, execute_code children and the root file gate no longer fail closed outside the profile scope • Multiplex gateway: cron ticker survives startup and is respawned, Discord-thread Kanban subs deliver under profile_routes, secondary-profile skills dispatch • gateway migrate --multiplex keeps the system unit's User=, rolls back or resumes instead of stranding the fleet; opt-out reads the declared key • fix(bot-mode): nested one-shot DM replies resume on the recipient's session • fix(gateway): Slack task cards obey a written tool_progress off; un-threaded chats stop degrading to text bubbles • fix(google-chat): optional deps install on sealed hosted images • feat(slack): pasted tables no longer vanish before reaching the agent • Mid-turn messages now get read receipts on every adapter • fix(gateway): WHATSAPP_ENABLED=true no longer overrides an explicit platforms.whatsapp.enabled: false • fix(telegram): large PNGs no longer time out on upload, pre-compress to JPEG • fix(discord): oversized attachments rejected before upload, batch sends included • ACP clients no longer collapse separate assistant turns into one bubble • fix(telegram): hidden text-link URLs reach the agent inline STABILITY & FIXES (23 PRs) • fix(local-runtime): contain Windows servers and safely recover orphans • fix(cron): incidents resolve when the job runs OK again and re-open on a repeat of the same error • Remove two verbatim duplicates flagged in review (tool-streaming beta constant, canonical_sqlite_path) • Gateway lifecycle ledger: a --replace handover no longer reads as an unclean death (unit mismatch) • Windows update cold-start: attestation is generation-bound, identity-bound and consumed only after readiness • Long-lived processes stop leaking duplicate state.db writer handles: dashboard, gateway, ACP, CLI • Max-iterations summary keeps the main loop's prompt-cache lineage • state.db maintenance from a second process refuses any live holder (doctor --fix checkpoint, schema repair) • state.db WAL lock guard follows the handle lifecycle: reopen, checkpoint-vs-close, fd reuse • fix(agent): same-model background review lands in its parent's cache bucket • fix(state): read paths open state.db read-only instead of taking a writer • state.db table rebuilds no longer strand rows when a sibling process opens mid-migration • fix(update): Windows update cold-starts the gateway when the Desktop-owned one is dead • state.db no longer silently corrupts on Docker Desktop/OrbStack bind mounts • Oversized MCP HTTP/SSE bodies fail at the wire instead of blowing up SDK parse • computer_use captures of an unchanged screen no longer resend the image • fix(process_registry): finished processes no longer hold FDs for the TTL window • fix(agent): exhausted-credit responses no longer retried blind, OpenAI spend/usage-limit codes classify as billing • fix(agent): uppercase finish_reason (STOP/MAX_TOKENS) no longer bypasses stop/length handling • Cron runs no longer re-schedule themselves from recurring prompt language • fix(tests): banner update-check daemon no longer flakes process-wide subprocess mocks • fix(agent): streamed reasoning_details no longer dropped, replay continuity survives streaming • fix(tests): relay files no longer flake with a blank ERROR from the adapter-guard cache race 108 new features and fixes nitter.cf/iamlukethedev/status/2…
16
3
2
56
9,869
Hermes just used 1,393 subagents to clean up its own codebase @Teknium gave it one /goal: simplify a repo with over a million lines of Python. The main run lasted about 19 active hours, reaching 218 subagents working at once. (Nous Research) After follow up work and community review: • Non test Python code shrank by 34.4% • Functions over 300 lines dropped from 192 to 2 • Average tokens returned per code lookup fell 55% (Nous Research) Around $25K in model usage, including follow ups. Nous estimated doing it manually would cost $150K to $1.8M. Human review time is separate. But the part I find most interesting is how it started. Hermes already had reusable skills built from working with Teknium. It used those procedures during the refactor, then saved new lessons that other engineers can give their own agents. It wasn’t flawless. Community reviewers caught regressions the tests missed, and more fixes followed after merging That makes this more useful to read, honestly. Actual results, actual costs, and what went wrong. Worth your time, especially if you’re building with Hermes
New blog post: We had a million lines of Python to clean up. On September 2nd @Teknium asked Hermes Agent to do it. 1,393 subagents and nineteen hours later, the codebase was 34.4% smaller, saving us nearly $2m in engineering hours. nousresearch.com/refactoring…
1
3
35
4,496
PetDex is now on my Apple Watch ⌚️🐾 I just added it to Herald, my Hermes Bots companion app Now when one of my Hermes Bots is working, I don’t just see a boring status message I can actually see the Bot as a little animated pet on my wrist while it runs commands Tiny detail, but it makes the agents feel way more alive Hermes Bots on iPhone iPad Apple Watch CarPlay And now they have pets too nitter.cf/iamlukethedev/status/2…
I put Hermes Bots on my Apple Watch I just built Herald for Apple Watch so I can keep up with my Hermes bots straight from my wrist See who’s online See who’s working Read the latest messages Stay close to your agents without even pulling out your phone Hermes is starting to feel less like software and more like a real companion that follows you everywhere Herald on Apple Watch nitter.cf/iamlukethedev/status/2…
5
2
40
4,585
Luke The Dev retweeted
Hermes hidden gem: /review Your agent says the PR is ready But I want more than “looks good” before merging Paste the PR link into your Hermes conversation, then run: /review focus on security, error handling, and backwards compatibility Hermes launches a separate reviewer in the background while you keep working. With the necessary access and tools, it can: • Open the PR and inspect the diff • Read the surrounding code • Run tests and investigate potential defects It is not limited to judging whatever snippet you pasted. The best part is where the findings go The review comes back into the same conversation. Your main agent can then investigate the findings and work on fixes. You do not have to copy feedback between windows or explain the whole task again. A couple of useful details: Give it a clear target. The reviewer starts with your last 10 user and assistant messages, so keep the PR link or relevant files in that recent context. Choose your reviewer. It uses your main model by default, but you can configure a different one through auxiliary.review. It is not only for code. You can also ask it to review documentation or a design you just discussed. Available in Desktop, CLI, TUI, and supported messaging channels. This does not replace CI or a human review. It gives you another chance to catch something before they do. One agent builds. Another checks. You keep moving
Hermes hidden gem: /reasoning Not every problem deserves maximum brainpower Sometimes you need Hermes to deeply reason through a difficult problem. Five minutes later, you just need a quick lookup You shouldn’t have to switch models or start a new session That’s what /reasoning is for Change reasoning effort mid-session: /reasoning low → quick tasks /reasoning high → harder problems /reasoning ultra → when you want Hermes to really think /reasoning none → no extra reasoning There are 8 levels: none → minimal → low → medium → high → xhigh → max → ultra And there’s another hidden part: you can control how reasoning is displayed too. /reasoning show → show reasoning /reasoning hide → clean output /reasoning full → full reasoning blocks /reasoning clamp → cap displayed reasoning at 10 lines Want a default for every new session? /reasoning high --global Otherwise, your change only applies to the current session and resets with /new. This is how I’d actually use it: Quick lookup → /reasoning low Normal work → /reasoning medium Hard debugging → /reasoning high Problem from hell → /reasoning ultra One session. Same model. Turn the thinking up or down when you need it. Another Hermes feature that’s easy to miss
4
9
56
5,956
Hermes merged 108 PRs on September 14 The ones worth knowing: • Chat Font setting lands in Desktop so OpenDyslexic and friends work for chat and UI text • Skill and plugin scanners stop false-positive blocking on prose, doc links, and read-only ~/.ssh mentions • Auxiliary model pins cover all 11 Desktop slots and survive Settings saves • Per-task reasoning effort lives under Settings, Model, Auxiliary • manage_connections covers local MCP servers; portal-disabled Nous accounts no longer 404 the model • Gateway grows server to client JSON-RPC requests and Pydantic-generated TypeScript plus OpenRPC types • Cron jobs can fire from app webhook events, not just the clock • Subagents can see images with per-task image forwarding • Video: Gemini Omni Flash 1.1 text-to-video, Kling 3.0, and Wan 3.0 on FAL • state.db WAL and lock fixes stop Desktop chat dying after updates and Docker bind-mount corruption • OAuth callback no longer reflects errors as raw HTML; MCP OAuth tokens stay issuer-bound • v0.21.3 rollup ships so Cloud agents get the remote sign-in fix Here is the full list: DESKTOP IMPROVEMENTS (18 PRs) • feat(desktop): Chat Font setting for chat/UI text (OpenDyslexic etc.) • docs: macOS Desktop installer is Apple Silicon only • fix(desktop): HERMES_SKIP_INTRO no longer kills the guided first launch • fix(desktop): stopped clarify no longer swallows the next question; doctor counts state.db holders on macOS • Desktop: a concurrent apply no longer starts an SSH bootstrap before the pool stop teardown finishes • chore(desktop): backend contract v7 for the server to client request wire • Connector card offers one verb per row; Continue is the only way out (NS-869 leg one) • fix(config): Desktop fallback editor keeps per-entry routing; MoA save writes only the moa section • Desktop connect runs on the connection operation: one card, no link to the model, no renderer polling (NS-868) • fix(desktop): reserve red tool rows for clear failures • state.db WAL survives sibling closes and stray lock cancellation on every runtime (Desktop chat dies after update) • Auxiliary model pins: all 11 slots in Desktop, pins survive Settings saves, review effort honored on routed forks • Multiplexed secondary's Docker MEDIA paths and Desktop MCP Test-connection resolve under its own profile scope • Desktop: per-task reasoning effort in Settings, Model, Auxiliary • fix(desktop): SSH-isolated backends Desktop owns are no longer retired by idle-exit • fix(desktop): preserve tool results and keep live tool activity inspectable • feat(desktop): pasting a link over selected composer text now hyperlinks it • Desktop text fields no longer submit on IME composition Enter VOICE & REAL-TIME (5 PRs) • fix(image-gen): Codex-auth images use the native images endpoints, no pinned chat model • feat(video): Gemini Omni Flash 1.1, text-to-video now works on the FAL family (was image-only) • video_generate gains Wan 3.0 + Wan 3.0 Prime on the FAL backend • image_generate gains Kling Image v3 (t2i + singular-key edit) on FAL • video_generate gains Kling 3.0 Standard + Pro on the FAL backend DEVELOPER TOOLS & PLUGINS (34 PRs) • manage_connections is absent for Nous accounts the portal has not enabled (gateway 404 no longer reaches the model) • chore(release): v0.21.3 (v2026.9.14), rollup patch so Cloud agents get the remote sign-in fix • fmt(js): `npm run fix` auto-fix (3x) • test: hosted-room suites stop flaking under the parallel runner • feat(gateway): Pydantic wire contracts generate the TypeScript + OpenRPC types • feat(gateway): server to client JSON-RPC requests replace the *.request/*.respond event pairs • fix(delegation): parent stop reaches children whose background admission was rejected • fix(delegate): stopping an orchestrator subagent now stops grandchildren it was still spawning • Connector code lives in one package, tools/connectors/ (move only; NS-868 prep) • fix(cli): self-relaunch no longer escapes the venv through the source launcher • manage_connections covers local MCP servers; setup_mcp leaves the schema (NS-867, PR1) • fix(anthropic): malformed streamed tool JSON retries with buffered tool input • feat(web): send Hermes identity headers on Perplexity requests • fix(models): delist hy3-free + laguna-s-2.1-free, OpenCode relay dropped both (anon 401) • feat(tool_search): hunts for nonexistent tools return no results instead of incidental matches • feat(gemini): tool schemas no longer break on unions/refs, full JSON Schema via parametersJsonSchema • fix(fallback): automatic fallback no longer relabels named custom providers as 'custom' • fix(models): Anthropic /v1/models catalogs no longer stop at the first page • fix(doctor): gh CLI auth is detected on every gh version • feat(skills): scrollcraft, premium scroll-driven landing pages • feat(delegation): subagents can see images, per-task image forwarding • feat(skills): ai-presenter-video, verified presenter videos from script + image • feat(cli): /queue prompts are now listable, editable, and reorderable before they run • feat(model): large sessions now confirm before a cache-breaking mid-session model switch • feat(webhook): cron jobs can fire from app events, not just the clock • feat(cli): hermes worktree gains --json, --older-than, and external-tree visibility • The last unbounded CI job can no longer hold a runner for 6 hours • slash-commands.md can no longer drift from the command registry • Codex model discovery no longer hides models behind a fake client version • test: seven recurring bug classes can no longer regress silently, invariant conformance suites (117 tests) • fix(mcp): overlong minted MCP tool names no longer 400 every turn on strict providers • fix(title): prompt-example echoes no longer become session titles SECURITY & SECRETS (15 PRs) • Plugin scanner no longer hard-blocks plugins over prose and comments mentioning attack shapes • Skills scanner no longer quarantines a skill for naming the secrets it refuses to read • Skill/plugin scanner stops flagging attribute access as shell-rc edits and sudo event names as sudo usage • Content scanners stop blocking read-only mentions of ~/.ssh; writes still blocked • Skills scanner no longer blocks installs over relative Markdown doc links • fix(approval): escaped quotes in grep patterns no longer hardline-blocked, and no longer hide a following hardline command • Codex: concurrent profile refreshes of a shared root grant adopt the rotated pair instead of replaying the token • fix(dashboard): apply the sensitive-path guard • fix(approval): Approvals off no longer prompts on computer_use (shared gate honours approvals.mode off) • fix(auth): a Codex refresh under a profile rotates the root grant it borrowed • fix(plugin-guard): require confirmation for ambiguous JS capability references • Windows uvx.exe/pipx.exe MCP servers no longer skip the OSV malware preflight • feat(mcp): stored OAuth refresh tokens can no longer be sent to a different issuer • fix(security): OAuth callback page no longer reflects the error param as raw HTML • fix(redact): Python repr dict secrets no longer leak in tracebacks and pytest output INTEGRATIONS & CHAT (13 PRs) • Multiplexed gateway: boot probes, session-end memory commits, execute_code children and the root file gate no longer fail closed outside the profile scope • Multiplex gateway: cron ticker survives startup and is respawned, Discord-thread Kanban subs deliver under profile_routes, secondary-profile skills dispatch • gateway migrate --multiplex keeps the system unit's User=, rolls back or resumes instead of stranding the fleet; opt-out reads the declared key • fix(bot-mode): nested one-shot DM replies resume on the recipient's session • fix(gateway): Slack task cards obey a written tool_progress off; un-threaded chats stop degrading to text bubbles • fix(google-chat): optional deps install on sealed hosted images • feat(slack): pasted tables no longer vanish before reaching the agent • Mid-turn messages now get read receipts on every adapter • fix(gateway): WHATSAPP_ENABLED=true no longer overrides an explicit platforms.whatsapp.enabled: false • fix(telegram): large PNGs no longer time out on upload, pre-compress to JPEG • fix(discord): oversized attachments rejected before upload, batch sends included • ACP clients no longer collapse separate assistant turns into one bubble • fix(telegram): hidden text-link URLs reach the agent inline STABILITY & FIXES (23 PRs) • fix(local-runtime): contain Windows servers and safely recover orphans • fix(cron): incidents resolve when the job runs OK again and re-open on a repeat of the same error • Remove two verbatim duplicates flagged in review (tool-streaming beta constant, canonical_sqlite_path) • Gateway lifecycle ledger: a --replace handover no longer reads as an unclean death (unit mismatch) • Windows update cold-start: attestation is generation-bound, identity-bound and consumed only after readiness • Long-lived processes stop leaking duplicate state.db writer handles: dashboard, gateway, ACP, CLI • Max-iterations summary keeps the main loop's prompt-cache lineage • state.db maintenance from a second process refuses any live holder (doctor --fix checkpoint, schema repair) • state.db WAL lock guard follows the handle lifecycle: reopen, checkpoint-vs-close, fd reuse • fix(agent): same-model background review lands in its parent's cache bucket • fix(state): read paths open state.db read-only instead of taking a writer • state.db table rebuilds no longer strand rows when a sibling process opens mid-migration • fix(update): Windows update cold-starts the gateway when the Desktop-owned one is dead • state.db no longer silently corrupts on Docker Desktop/OrbStack bind mounts • Oversized MCP HTTP/SSE bodies fail at the wire instead of blowing up SDK parse • computer_use captures of an unchanged screen no longer resend the image • fix(process_registry): finished processes no longer hold FDs for the TTL window • fix(agent): exhausted-credit responses no longer retried blind, OpenAI spend/usage-limit codes classify as billing • fix(agent): uppercase finish_reason (STOP/MAX_TOKENS) no longer bypasses stop/length handling • Cron runs no longer re-schedule themselves from recurring prompt language • fix(tests): banner update-check daemon no longer flakes process-wide subprocess mocks • fix(agent): streamed reasoning_details no longer dropped, replay continuity survives streaming • fix(tests): relay files no longer flake with a blank ERROR from the adapter-guard cache race 108 new features and fixes nitter.cf/iamlukethedev/status/2…
Hermes merged 78 PRs on September 11 The ones worth knowing: • Multiplex isolation hardens: secondary profiles stop inheriting the default bot's bearer, allowlists, vault secrets, and host identity • MEDIA: delivery under multiplex can no longer attach another profile's .env, auth.json, or state.db • state.db stops wedging on healthy WALs, corrupt rows, and FTS damage; doctor/repair handle real incident shapes • Desktop Bot Mode and roster hover no longer spawn a backend per profile or per row • Pooled remote profile clicks no longer storm reconnects while the VPS backend cold-starts • Guided first launch ships behind HERMES_GUEST_ONBOARDING, with free-tier chip badge polish • Bedrock Claude and Converse models survive /model, fallback, and restore on one runtime binder • Bedrock Guardrails enforce on the Claude route; blocks surface as refusals • Native DeepSeek Flash keeps 1M context and vision without a config pin • OpenRouter :nitro/:floor variants resolve their base model's context window • Compression model_thresholds can be scoped per provider so Codex Astra's 0.85 no longer leaks onto OpenRouter/Nous • Release v0.21.2 lands (2026.9.11) Here is the full list: DESKTOP IMPROVEMENTS (25 PRs) • fix(desktop): qualify group (you) by connection, not bare profile name • fix(desktop): stage group-chat PDFs as workspace files • Desktop: open bot tiles no longer cold-start or pin pooled backends from the background • fix(serve): the backend exits when its Desktop parent dies instead of living forever • Desktop: an expired remote OAuth session no longer flickers the Sign-in overlay • fix(desktop): older session history stays reachable across scope spellings and backends • fix(desktop): preserve local provider identity across new chats • fix(desktop): recover trapped sidebars and keep titlebar controls clickable • fix(desktop): republish composer clearance after an effect replay • and more… DEVELOPER TOOLS & PLUGINS (15 PRs) • fix(bootstrap-installer): stamp setup app version from release semver • fix: update checks poll the GitHub API once a day instead of git-fetching every 30 min • test(auth): fix main-red anon-auth fixture after the per-profile token memo • main is green again: anon-auth fixture resets the token memo to its dict shape • fmt(js): `npm run fix` auto-fix (5x) • fix: update errors name the real cause; hermes update can't hang on a stalled fetch; shallow grafts pruned • feat(compression): model_thresholds keys can be scoped to one provider (Codex Astra no longer leaks its 0.85 onto OpenRouter/Nous) • and more… SECURITY & SECRETS (10 PRs) • fix(gateway): MEDIA: delivery can no longer attach another profile's .env / auth.json / state.db under multiplex • fix(auth): secondary profiles no longer get a sibling profile's Nous bearer from per-process memos under multiplex • fix(gateway): secondary-profile bots no longer inherit the default profile's allow-all / allowlists • and more… INTEGRATIONS & CHAT (11 PRs) • feat(wisdom): add Hermes Collective Wisdom Agent V1 • fix(relay): honor explicit profile disable before relay startup • fix(feishu): secondary-profile drive-comment turns and SDK callbacks no longer run under the launch profile • Bedrock Claude and Converse models survive /model, fallback and restore (one runtime binder for all wires) • feat(relay): pass API request metadata to Relay tracking • Guided first launch behind HERMES_GUEST_ONBOARDING: intro, guided chat, first task in default (NS-848, PR B1) • and more… STABILITY & FIXES (17 PRs) • fix(sessions): a lost WAL generation is captured durably before shutdown settles; 3.11 retires the handle unclosed • fix(gateway): /p// webhook replies and api_server callbacks stay on the routed profile • fix(gateway): secondary-profile send_message, notices and /loop wakeups no longer post through the default bot • fix(terminal): remote NOPASSWD sudo no longer prompts for a password
8
3
1
61
18,333
Your best Hermes workflow shouldn’t stay on one person’s laptop Hermes Business lets you invite colleagues through Nous Portal, share skills, and give your team agents across channels. One central balance, with spending limits for each person. But the shared skills are what caught my attention Someone builds a useful workflow. The rest of the team can reuse it instead of starting from scratch. That knowledge becomes something the company keeps building on. Need control over where it runs? Hermes Enterprise brings the same capabilities to your own servers or your preferred cloud. Shared knowledge, controlled spending, and agents working across the business. A lot to like here for engineering teams
Hermes Agent is open for business. Nous Portal now lets you invite colleagues to a Hermes Business account: your team gets agents across channels while sharing one central balance with per-member caps and shared skills that compound into proprietary IP. Hermes Enterprise brings the same capabilities to on-prem or the cloud of your choice: a complete, self-improving, sovereign AI stack already trusted by some of the world's largest companies. Contact us to join them. portal.nousresearch.com/busi…
2
1
11
3,063
Just added Live Activities to Herald When a Hermes Bot starts working, I can see it: • In the Dynamic Island • At the top of my iPhone while using other apps • On my Lock Screen • With the Bot’s avatar, status, and how long it has been working So I can give my agent Teknium a task, leave Herald, lock my phone, and still know that he’s working without constantly reopening the app. When the task finishes, Herald updates me. Small feature, but this makes Hermes Bots feel a lot more alive on iPhone. Your agents are working in the background. Now you can actually see it
Hermes Bots on my phone📱 I couldn’t wait to have Hermes Bots on my phone, so I built my own app Nothing complicated All my agents at my fingertips Open any Bot Chat one on one Create and customize new Bots Jump into group chats with the whole team This is NOT an official Hermes app I just built it to solve my own problem while we wait for the official one I know that one is coming I just couldn’t wait 😂
13
2
83
9,498
This is a big one for Hermes ChatGPT Image 2.5 is now available directly through the Nous Portal🔥 Which means your Hermes Agent can generate and edit with it without setting up another provider or juggling another API key. One Portal. One credit balance. More models and tools for your agents. The Nous Portal is becoming one of the easiest ways to run Hermes.
ChatGPT-Image-2.5 is now available on Nous Portal to use in Hermes Agent, as well as it's previously supported Fal and ChatGPT direct routes!
1
2
29
3,492
Para os brazucas de plantão: eu não esqueci de vocês 🇧🇷 O Herald, meu app para acessar e controlar seus Hermes Bots pelo celular, agora está 100% em Português E tem mais: o app já está no processo de aprovação da App Store 👀 Assim que a Apple liberar... é só alegria. 😂🇧🇷 Hermes Bots no bolso e agora falando português. Vou precisar de testers para o TestFlight 👇 nitter.cf/iamlukethedev/status/2…
日本のHermesコミュニティの皆さん、お待たせしました 🇯🇵 皆さんのこと、忘れていませんでしたよ。 Hermes Botsこと Heraldが日本語に対応しました! スマホからHermes Agentにアクセスして、Botとの会話や管理を日本語でより快適にできるようになりました。 そして、これはまだ始まりです。 これからHeraldをもっと多くの言語に対応させていきます。 日本のHermesコミュニティの皆さんとも、もっとつながっていけたら嬉しいです 🇯🇵 次は何語に対応してほしいですか?👇 nitter.cf/SA3e1AUGuA59273/status…
18
3
95
7,040
Luke The Dev retweeted
A lot of people have asked, here's how I setup my auxiliary models in Hermes Agent. Gemini Flash saves a lot of dough, and astra gives me a second perspective when I run /review
113
93
17
1,831
95,585
Hermes hidden gem: /review Your agent says the PR is ready But I want more than “looks good” before merging Paste the PR link into your Hermes conversation, then run: /review focus on security, error handling, and backwards compatibility Hermes launches a separate reviewer in the background while you keep working. With the necessary access and tools, it can: • Open the PR and inspect the diff • Read the surrounding code • Run tests and investigate potential defects It is not limited to judging whatever snippet you pasted. The best part is where the findings go The review comes back into the same conversation. Your main agent can then investigate the findings and work on fixes. You do not have to copy feedback between windows or explain the whole task again. A couple of useful details: Give it a clear target. The reviewer starts with your last 10 user and assistant messages, so keep the PR link or relevant files in that recent context. Choose your reviewer. It uses your main model by default, but you can configure a different one through auxiliary.review. It is not only for code. You can also ask it to review documentation or a design you just discussed. Available in Desktop, CLI, TUI, and supported messaging channels. This does not replace CI or a human review. It gives you another chance to catch something before they do. One agent builds. Another checks. You keep moving
Hermes hidden gem: /reasoning Not every problem deserves maximum brainpower Sometimes you need Hermes to deeply reason through a difficult problem. Five minutes later, you just need a quick lookup You shouldn’t have to switch models or start a new session That’s what /reasoning is for Change reasoning effort mid-session: /reasoning low → quick tasks /reasoning high → harder problems /reasoning ultra → when you want Hermes to really think /reasoning none → no extra reasoning There are 8 levels: none → minimal → low → medium → high → xhigh → max → ultra And there’s another hidden part: you can control how reasoning is displayed too. /reasoning show → show reasoning /reasoning hide → clean output /reasoning full → full reasoning blocks /reasoning clamp → cap displayed reasoning at 10 lines Want a default for every new session? /reasoning high --global Otherwise, your change only applies to the current session and resets with /new. This is how I’d actually use it: Quick lookup → /reasoning low Normal work → /reasoning medium Hard debugging → /reasoning high Problem from hell → /reasoning ultra One session. Same model. Turn the thinking up or down when you need it. Another Hermes feature that’s easy to miss
4
9
56
5,956
One of my favorite things about Hermes Agent has always been how much of it is built in public, by the community 3,000 developers have now contributed to making Hermes better. Congrats Teknium, NousResearch and every single person who has shipped code, fixed a bug, opened a PR, tested something, or helped someone get started And somehow it still feels like we’re early🪽
Hermes Agent has just hit 3000 contributors. Thank you to all of the developers who have worked to make hermes better for everyone!
4
6
50
3,415
I just put my Hermes Bots on my iPad Herald now has a proper iPad layout, with your Bot roster, open conversation, and live inspector side by side. Rotate the screen or use Split View and the layout adapts. But the extra screen space deserved more than a bigger chat window Here’s what I added: • 2 chats side by side: Keep a conversation with one Bot open while talking to another Bot or group. The inspector follows whichever chat you’re using. • Mission Control: See who’s working, upcoming scheduled jobs, unread mail, Kanban totals, and this week’s spending. Select several Bots and send them the same message at once. • A live inspector: Check plans, subagents, workspace, skills, and MCP connections without leaving the conversation. Manage schedules or compress context and see the token count before and after. • Drag and drop: Bring files, photos, or text from another app directly into a chat. Drop something onto a Bot in the roster and Herald opens its chat with the attachment ready. • Keyboard shortcuts: Search, switch Bots, open a second chat, toggle the inspector, and send messages. Hold ⌘ to see the shortcuts. Voice, multiple connections, and group chats are still there too You can start something on desktop, check it from your phone, talk to it from your Apple Watch, check while driving via CarPlay and now manage the whole thing from an iPad Hermes Bots on iPad. Still my unofficial Hermes companion app. Just getting a lot more useful nitter.cf/iamlukethedev/status/2…
Hermes Bots on my phone📱 I couldn’t wait to have Hermes Bots on my phone, so I built my own app Nothing complicated All my agents at my fingertips Open any Bot Chat one on one Create and customize new Bots Jump into group chats with the whole team This is NOT an official Hermes app I just built it to solve my own problem while we wait for the official one I know that one is coming I just couldn’t wait 😂
14
6
76
9,582
Hermes merged 78 PRs on September 11 The ones worth knowing: • Multiplex isolation hardens: secondary profiles stop inheriting the default bot's bearer, allowlists, vault secrets, and host identity • MEDIA: delivery under multiplex can no longer attach another profile's .env, auth.json, or state.db • state.db stops wedging on healthy WALs, corrupt rows, and FTS damage; doctor/repair handle real incident shapes • Desktop Bot Mode and roster hover no longer spawn a backend per profile or per row • Pooled remote profile clicks no longer storm reconnects while the VPS backend cold-starts • Guided first launch ships behind HERMES_GUEST_ONBOARDING, with free-tier chip badge polish • Bedrock Claude and Converse models survive /model, fallback, and restore on one runtime binder • Bedrock Guardrails enforce on the Claude route; blocks surface as refusals • Native DeepSeek Flash keeps 1M context and vision without a config pin • OpenRouter :nitro/:floor variants resolve their base model's context window • Compression model_thresholds can be scoped per provider so Codex Astra's 0.85 no longer leaks onto OpenRouter/Nous • Release v0.21.2 lands (2026.9.11) Here is the full list: DESKTOP IMPROVEMENTS (25 PRs) • fix(desktop): qualify group (you) by connection, not bare profile name • fix(desktop): stage group-chat PDFs as workspace files • Desktop: open bot tiles no longer cold-start or pin pooled backends from the background • fix(serve): the backend exits when its Desktop parent dies instead of living forever • Desktop: an expired remote OAuth session no longer flickers the Sign-in overlay • fix(desktop): older session history stays reachable across scope spellings and backends • fix(desktop): preserve local provider identity across new chats • fix(desktop): recover trapped sidebars and keep titlebar controls clickable • fix(desktop): republish composer clearance after an effect replay • and more… DEVELOPER TOOLS & PLUGINS (15 PRs) • fix(bootstrap-installer): stamp setup app version from release semver • fix: update checks poll the GitHub API once a day instead of git-fetching every 30 min • test(auth): fix main-red anon-auth fixture after the per-profile token memo • main is green again: anon-auth fixture resets the token memo to its dict shape • fmt(js): `npm run fix` auto-fix (5x) • fix: update errors name the real cause; hermes update can't hang on a stalled fetch; shallow grafts pruned • feat(compression): model_thresholds keys can be scoped to one provider (Codex Astra no longer leaks its 0.85 onto OpenRouter/Nous) • and more… SECURITY & SECRETS (10 PRs) • fix(gateway): MEDIA: delivery can no longer attach another profile's .env / auth.json / state.db under multiplex • fix(auth): secondary profiles no longer get a sibling profile's Nous bearer from per-process memos under multiplex • fix(gateway): secondary-profile bots no longer inherit the default profile's allow-all / allowlists • and more… INTEGRATIONS & CHAT (11 PRs) • feat(wisdom): add Hermes Collective Wisdom Agent V1 • fix(relay): honor explicit profile disable before relay startup • fix(feishu): secondary-profile drive-comment turns and SDK callbacks no longer run under the launch profile • Bedrock Claude and Converse models survive /model, fallback and restore (one runtime binder for all wires) • feat(relay): pass API request metadata to Relay tracking • Guided first launch behind HERMES_GUEST_ONBOARDING: intro, guided chat, first task in default (NS-848, PR B1) • and more… STABILITY & FIXES (17 PRs) • fix(sessions): a lost WAL generation is captured durably before shutdown settles; 3.11 retires the handle unclosed • fix(gateway): /p// webhook replies and api_server callbacks stay on the routed profile • fix(gateway): secondary-profile send_message, notices and /loop wakeups no longer post through the default bot • fix(terminal): remote NOPASSWD sudo no longer prompts for a password
Hermes merged 69 PRs on September 10 The ones worth knowing: • Nous free tier ships: free inference and connectors out of the box, created once at boot only behind HERMES_GUEST_ONBOARDING=1 • Sign in with a Nous account from chat via /login, one shared flow • Vault two-factor codes: automatic from a saved authenticator key, otherwise asked for in your UI • Agent signs in, pays, and fills addresses from 1Password, Bitwarden, or the local vault, password-blind on every browser backend • DeepSeek V4.1 Flash lands on the Nous Portal and OpenRouter pickers • Plugins: pin to a commit from Desktop, install private git repos with stored credentials, one Plugins page under Capabilities • Radio ships as an opt-in SDK plugin, with credits linking to artist profiles • /model onto Bedrock Mantle OpenAI models no longer 401s (SigV4 survives client rebuilds) • Desktop login-shell PATH probe settles on timeout so Linux boot cannot hang • Bot DMs carry their sender into the recipient turn; ALLOW_BOTS chats get a loop guard • archify appears in the optional-skills catalog, content pulled live from upstream • In-app tips show once each instead of re-appearing every six hours Here is the full list: DESKTOP IMPROVEMENTS (21 PRs) • feat(desktop): Nous free tier on Hermes Desktop • fix(desktop): settle the login-shell PATH probe and kill the probe child on timeout • fix(desktop): in-app tips show once each instead of re-appearing every six hours • fix(desktop): idle HUD/popout windows no longer refuse drive_preview for the active session • fix(desktop): Hyprland HUD floats even when j/clients lags the first map • fix(desktop): HUD mode shows the transcript again • fix(desktop): hide fixed titlebar clusters on contributed full pages • fix(desktop): leaving HUD mode always gives the app window back • fix(desktop): model picker keeps the (provider, model) pair; a shared id on OpenRouter no longer rewrites the pick • Desktop Telegram setup: no stale 'No bot token' error, QR quick setup + restart banner ported from the dashboard, gateway restart no longer bails on linger • fix(desktop): Windows update no longer reports a healthy install as a missing Desktop exe • fix(desktop/settings): searchable-select popover sized to content, not the shrink-wrapped trigger • feat(desktop): integrate panel tabs into the titlebar • fix(desktop): make native notifications reveal their session tab • feat(desktop): link radio credits directly to artist profiles • fix(desktop): restore Cmd/Ctrl+Enter in clarify forms • feat(desktop): show more recent sessions in project grouping • fix(desktop): keep artifact links at the bottom of the status stack • fix(desktop): keep settings search opaque under Glass • fix(desktop): wait for session discovery without discarding queued prompts • fix(desktop): collapse composer status groups except todos VOICE & REAL-TIME (1 PRs) • fix(desktop): auto-TTS reads a reply once while the HUD is open DEVELOPER TOOLS & PLUGINS (18 PRs) • fix(desktop): resolve plugin SDK namespaces lazily so disk plugins load in production builds • fmt(js): `npm run fix` auto-fix (11x) • feat(skills): archify appears in the optional-skills catalog, content pulled live from upstream • feat(desktop): Plugins is one row per plugin; desktop halves are app-level, never profile-scoped • feat(plugins): pin a plugin to a commit from Desktop, pins shown in every list • refactor(desktop): one Plugins page under Capabilities, owns agent + desktop plugins, install, and the catalog • feat(plugins): private git repos install with the user's stored credentials • feat(desktop): ship Radio as an opt-in SDK plugin SECURITY & SECRETS (4 PRs) • feat(vault): two-factor codes: automatic from a saved authenticator key, otherwise asked for in the user's UI • feat: agent signs in, pays and fills addresses from 1Password/Bitwarden/local vault: zero setup, password-blind on every browser backend • fix(relay): accept a provision response that issues no secret • fix(desktop): exclude expired Windows trust roots with real-certificate coverage INTEGRATIONS & CHAT (15 PRs) • The free tier is created in one place, at boot, only behind HERMES_GUEST_ONBOARDING=1 • feat(gateway): sign in with a Nous account from a chat (/login), one shared sign-in flow • fix(auth): a sign-in from the free tier settles the default model and route • feat(auth): Nous free tier: free inference and connectors out of the box, one command to sign in • fix(providers): use chat completions for all Actual routes • /model onto Bedrock Mantle OpenAI models no longer 401s (SigV4 survives client rebuilds) • feat(honcho): each turn is written under its author's peer; bot DMs get their own session • feat(bot-mode): bot DMs carry their sender into the recipient's turn; ALLOW_BOTS chats get a loop guard • feat(models): DeepSeek V4.1 Flash on the Nous Portal and OpenRouter pickers • fix(routing): /model and auxiliary auto never bill a provider the user did not select (Astra to OpenRouter, Grok to Nous) • DeepSeek provider no longer rewrites custom model ids • fix(models): never auto-switch to a provider the user has no credentials for; keep session custom endpoints; ACP explicit prefix wins • fix(models): /model keeps a model the current provider serves; deepseek-flash is DeepSeek's canonical Flash id • fix(metadata): GLM context windows from the live catalog; hyphenated slugs, entry-level overrides, aux inherits main pin • fix(dashboard-auth): offer every configured provider in native sign-in STABILITY & FIXES (10 PRs) • fix(gateway): long-session 400 envelope gets the /compact reply, other failures keep their text • Hidden seed rows stay out of search, a partial seed copy is rolled back, live resume counts the wire • Seeded sessions survive a gateway restart and store their seed once • Subagent roster and controls survive prompt-driven reconnects • fix(bot-mode): relay waiter outlives the Desktop deliver deadline • fix: join delegated work before finite chat exits • fix(agent): stop background reviews creating phantom plugin sessions • fix(sessions): a stale explicit-close stamp no longer wedges compression • fix(cron): bare-platform home deliveries are continuable • test(gateway): make 7 macOS-failing gateway tests host-honest nitter.cf/iamlukethedev/status/2…
4
7
1
70
15,701