Status: Accepted Date: 2026-07-22 (recorded retroactively)
Upstream Hermes WebUI and the Hermes CLI share one state.db, written by the
agent. The WebUI keeps a JSON “sidecar” as a cache and self-heals it from
state.db whenever the agent has written newer turns
(_sync_sidecar_from_state_db_if_newer). Continuing a terminal session works
because both surfaces are views onto a single store.
ARES is not a client of one agent. It is a product that connects to several,
each with its own home directory and its own store. .claude/CLAUDE.md
forbids modifying a worker’s runtime state.
Two stores, with a one-way boundary:
ARES_HOME/webui/sessions/*.json — read and write.$HERMES_HOME/state.db, ~/.claude/projects,
JaegerAI instance DBs) — ARES reads them read-only.ARES_HOME/state.db does not exist in a normal install.
Good:
Costs:
?mode=ro). A writable handle on a
worker’s database creates WAL/journal files inside that worker’s home and
breaks the boundary. Two existing call sites (insights.py,
schedules_store.py) still open writable handles and must not be repointed
at a worker store without being converted first.ARES ever becomes the sole writer of a runtime’s state — at which point the sidecar could collapse into that store. Until then, prefer fixing a read seam over widening write access.