hermes - 💡(How to fix) Fix Add command and auto-recovery for disabled dispatcher

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

There is currently no way to check dispatcher health without parsing journalctl logs. This is especially confusing because the board may have ready tasks that simply never get picked up.

Fix Action

Fix / Workaround

The kanban dispatcher (running inside the gateway via dispatch_in_gateway) can silently become disabled when it encounters repeated failures (e.g., SQLite WAL corruption from concurrent access). When this happens, tasks in ready state sit indefinitely with no indication that dispatch has stopped.

There is currently no way to check dispatcher health without parsing journalctl logs. This is especially confusing because the board may have ready tasks that simply never get picked up.

  1. Gateway running with dispatch_in_gateway: true
  2. Kanban DB encounters corruption (e.g., WAL issue from concurrent access)
  3. Dispatcher logs errors, then disables itself: "disabling dispatch for this board until the file changes or the gateway restarts"
  4. Even after the DB recovers, the dispatcher stays disabled — requires a full gateway restart
  5. No command exists to check this state

Code Example

hermes kanban dispatch-status

---

{
  "board": "default",
  "enabled": true,
  "last_tick": "2026-05-26T06:05:00Z",
  "interval_seconds": 60,
  "ready_queue": 3,
  "last_error": null
}
RAW_BUFFERClick to expand / collapse

The kanban dispatcher (running inside the gateway via dispatch_in_gateway) can silently become disabled when it encounters repeated failures (e.g., SQLite WAL corruption from concurrent access). When this happens, tasks in ready state sit indefinitely with no indication that dispatch has stopped.

There is currently no way to check dispatcher health without parsing journalctl logs. This is especially confusing because the board may have ready tasks that simply never get picked up.

Reproduction

  1. Gateway running with dispatch_in_gateway: true
  2. Kanban DB encounters corruption (e.g., WAL issue from concurrent access)
  3. Dispatcher logs errors, then disables itself: "disabling dispatch for this board until the file changes or the gateway restarts"
  4. Even after the DB recovers, the dispatcher stays disabled — requires a full gateway restart
  5. No command exists to check this state

Requested features

A) Status command

hermes kanban dispatch-status

Returns:

{
  "board": "default",
  "enabled": true,
  "last_tick": "2026-05-26T06:05:00Z",
  "interval_seconds": 60,
  "ready_queue": 3,
  "last_error": null
}

When disabled: enabled: false and last_error contains the reason.

B) Auto-recovery

When the dispatcher disables itself due to DB errors, it should attempt re-enabling on subsequent ticks once the DB file is valid again, rather than requiring a manual gateway restart.

Hermes version: 0.14.0 (2026.5.16)

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING