hermes-agent/website/docs/user-guide/features
Teknium 9fad45fcda feat(kanban,mcp): orphaned-card reconciliation + per-server MCP identity header
Two small config-gated features:

1. Kanban orphaned-card reconciliation (kanban.reconcile_orphans, default
   true, config.yaml): a running card with broken claim bookkeeping
   (claim_lock or claim_expires NULL — crash mid-claim, manual SQL, DB
   restore) is invisible to all existing recovery paths
   (release_stale_claims requires claim_expires NOT NULL,
   detect_crashed_workers requires host-local lock + pid,
   detect_stale_running is config-disabled by default) and shows Running
   forever. New reconcile_orphaned_running() pass in kanban_db.py runs
   each dispatch_once tick: requeues orphans to ready with an explanatory
   comment, closes any leaked run, emits a 'reconciled' event, and defers
   when the recorded PID is still alive on this host (never requeue
   beside a live worker). Surfaced via DispatchResult.reconciled_orphans.

2. Per-server MCP identity header (mcp_servers.<name>.identity_header,
   config.yaml): optional {name, value_from: static|profile, value}
   mapping; the header is attached to that server's HTTP/SSE transport
   requests. 'static' sends the config value; 'profile' resolves the
   active Hermes profile name once at connect time (no per-call
   mutation). Explicit per-server headers of the same name (any casing)
   win. Invalid blocks warn-and-ignore; stdio servers warn-and-ignore.

Tests: tests/gateway/test_kanban_reconcile_orphans.py (9),
tests/tools/test_mcp_identity_header.py (13), all written first (RED)
then implemented (GREEN). No new HERMES_* env vars.

Inspired by: openai/symphony tracker reconciliation (Apache-2.0) +
Poke per-user MCP identity (idea-level).
2026-08-07 08:58:20 -07:00
..
_category_.json
…
acp.md
…
api-server.md
…
batch-processing.md
…
browser.md
…
built-in-plugins.md
…
code-execution.md
…
codex-app-server-runtime.md
…
computer-use.md
…
context-files.md
…
context-references.md
…
credential-pools.md
…
cron.md
…
curator.md
…
delegation.md fix(delegation): harden steer lifecycle ownership 2026-08-06 09:40:27 -07:00
deliverable-mode.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
extending-the-dashboard.md
…
fallback-providers.md
…
goals.md feat(goals): quality gates — deterministic commands that must pass before /goal completes 2026-08-05 22:32:39 -07:00
heartbeat.md
…
honcho.md
…
hooks.md
…
image-generation.md
…
kanban-tutorial.md
…
kanban-worker-lanes.md
…
kanban.md feat(kanban,mcp): orphaned-card reconciliation + per-server MCP identity header 2026-08-07 08:58:20 -07:00
lsp.md
…
mcp.md
…
memory-providers.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
memory.md
…
mixture-of-agents.md
…
overview.md
…
personality.md docs: document /personality none|default|neutral reset across personality docs 2026-08-03 12:29:49 -07:00
pets.md
…
plugins.md
…
provider-routing.md
…
skills.md
…
skins.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
spotify.md
…
subscription-proxy.md
…
tool-gateway.md
…
tool-search.md perf(tools): shrink lazy tool catalog overhead 2026-08-03 19:11:30 +05:30
tools.md
…
tts.md
…
vision.md
…
voice-mode.md fix(voice): full-duplex agent-turn listener — interrupt by voice during generation AND playback 2026-07-29 10:08:53 -07:00
wake-word.md
…
web-dashboard.md
…
web-search.md
…
x-search.md
…