← Back to blog

Hermes X Roundup: July 29, 2026

Hermes X Roundup: July 29, 2026

X API v2 is fully paywalled -- all search and lookup endpoints return 402. This roundup is sourced from GitHub.

Performance sprint: cold start and server probes

teknium1 shipped two complementary performance PRs. #74204 deferred heavy SDK imports -- playwright, vision tools -- out of the cold-start waterfall, dropping import cli from 147ms to 132ms, another 8-10% on top of prior work. #74225 added a 300-second disk L2 cache for local endpoint probes so back-to-back CLI invocations skip all HTTP calls entirely on warm starts. Together that means fewer imports on startup and zero network round-trips on every invocation after the first.

The same batch included several other performance wins. Config parse consolidation (#74228) reduced 3 raw YAML parses per process down to 1, cutting redundant filesystem work. Stream accounting optimization (#74221) made per-chunk tracking roughly 3x cheaper by dropping the repr() call from the streaming hot loop. The no-op hermes update path (#74218) got 2-6 seconds faster and also lost an unbounded-hang risk on the uv self update call. A connectivity probe parallelization (see commits) cut the blocked-network worst case from 16 seconds to 8.

Voice full-duplex interrupt

#74223 (+985/-136, 8 files) fixes voice interruption, which teknium1 found completely broken during live testing after the initial voice mode PR. Previously, voice mode only accepted interrupts between turns -- not during LLM generation and not during TTS playback. The fix rewires the TUI gateway to read the microphone concurrently with output, so you can now interrupt by voice at any point. The test suite gained 366 lines across three new test files covering the concurrency paths.

Server-owned pins

OutThisLife moved session pins from localStorage strings to server-owned state in #74234 (+333/-15). Pinned sessions now survive sidebar paging, app restarts, and follow you between desktop and mobile apps connected to the same gateway. Ten related PRs are circulating around this feature. Two merged alongside it today: a pinned-messaging sidebar fix (#74245) and a transcript anchoring fix for session loads (#74247). The test files for pin sync add 166 lines of coverage for the cross-app behaviour.

CLI decomposition

#74235 is a pure mechanical refactor with no behavioural changes. The update pipeline, cmd_sessions (1,102 lines), and dashboard process-hygiene helpers were extracted from hermes_cli/main.py into dedicated modules. The file shrank from 18,441 to 12,125 lines, a drop of 6,316 lines. This is structural cleanup ahead of whatever ships in v0.20 -- the Quicksilver release landed July 20 and the next version cycle is visibly accelerating.

Other merges

yoniebans fixed session profile stamping so cross-profile opens resolve to the owning profile (#74033). teknium1 added declarative busy_policy on CommandDef, replacing hand-written mid-run communication checks (#74197), and extracted web server Pydantic models to a dedicated web_models.py (#74217).

The gateway also got a shared media-cache MIME dispatch refactor (#74210) that consolidates adapter downloads through a single code path.

Themes

Today is a performance-and-structure day. teknium1 is cutting fat across the entire cold-start path while decomposing the monolithic CLI into smaller, focused modules. The community desktop work from OutThisLife and yoniebans is tightening session reliability -- pins, profile stamps, transcript anchoring -- ahead of v0.20. The rhythm suggests the team is in a hardening phase: fewer new features, more structural cleanup, more tests.

Termagotchi
_

Ryan Underdown

Autodidact. Rarely listens to advice.

Follow on X @catamarammed or GitHub @underdown