Skip to content

Root Kernel Hermes Agent v0.19.1

Choose a tag to compare

@irootkernel irootkernel released this 07 Aug 03:23
· 1471 commits to main since this release

Root Kernel Hermes Agent is the Root Kernel fleet's downstream distribution of NousResearch Hermes Agent, built directly on the verified upstream tag v2026.7.30 (package version 0.19.1). It ships everything upstream v0.19.1 ships, plus a small set of reviewed, ledger-tracked patches ("carries") that close gaps we hit while running a 49-profile, multi-agent production fleet. Every carry has an explicit retirement rule: it is dropped the moment upstream ships an exact replacement.

Baseline: direct update from v0.18.2 → v0.19.1; 16 carry commits on top of the signed upstream tag; live-activated across the fleet with session state migrated to schema 23.

What differs from upstream Hermes Agent

CJK-aware offline session recovery

Upstream hermes sessions recover silently loses every message (5 of 5 lost in our reproduction) when the CJK full-text-search tokenizer is enabled, because the recovery path reopens the destination database without loading the tokenizer. We load the existing CJK extension on the destination and verification connections. Why it matters: Korean, Japanese, and Chinese session histories survive offline recovery intact, with working CJK search — instead of an "empty but successful" recovery.

Fail-closed skill write approval

Upstream's skill write-approval check failed open: if the approval module failed to import, or raised during evaluation, the skill write was allowed anyway. Both failure paths now return a structured success: false before any mutation. Why it matters: a broken or partially installed approval layer can no longer silently switch off your skill write protection.

OpenAI Codex credential pinning and labelled reauth

Adds profile-local pinning to an exact credential ID/label inside a shared Codex auth pool, failing closed on duplicate, missing, dead, or exhausted entries, plus labelled reauth that updates exactly the pinned OAuth row. Why it matters: when many Hermes profiles share one machine's Codex credentials, each profile keeps its own account, and a reauth refreshes only that profile's credential — not whichever pool row happened to load first.

Discord thread ownership and role-mention fail-close

Adds persistent thread-owner tracking shared by live and recovered-message admission, treats Discord role mentions as explicit routing, and extends ownership marking to auto-created, slash-created, and forum threads. Why it matters: in a multi-agent Discord server, a message addressed to another agent's role no longer falls through to the default responder, and only the agent that owns a thread answers in it — even across restarts and missed-message recovery.

Kanban same-card review workflow

Restores and extends the full same-card review loop on top of upstream's native Kanban dispatch: cooperative handoff, kanban_submit_review and kanban_request_changes, creator final acceptance, worker result submission with durable scratch-artifact handling, review-outcome watcher notifications, a board-local mutex_key that serializes simultaneous claims, and a closed set of per-card workflow_type protocol banners injected into worker context. Why it matters: multi-agent coding teams get an enforced implement → review → accept pipeline: a reviewer can send work back to exactly the worker who produced it, two dispatchers cannot claim the same mutex-keyed card, and each card can carry its own workflow rules.

CLI return-code passthrough

Upstream propagates nonzero exit codes but accidentally treats True as failure (isinstance(True, int) is true in Python). We propagate only values whose exact type is int; True, False, None, and strings remain success. Why it matters: scripts and CI wrapping hermes commands see truthful exit codes — a handler returning True no longer reports failure.

Doctor optional-tool warning filter

hermes doctor warned about missing API keys for every unavailable tool, including platforms you never enabled. Unavailable-tool warnings are now filtered through your actually enabled CLI and platform toolset scope (fail-open on any ambiguity). Why it matters: on a minimal install, doctor no longer nags about Discord, Spotify, Home Assistant, or X search keys you never configured — a warning now means something you turned on is genuinely missing a key.

Governance

Every carry is recorded in for-root-kernel.md and root-kernel/carry.yaml with rationale, verification results, a tested rollback path, and independent read-only review before commit.