Local daemon: the single owner of the configured LanceDB ground directory, repository registry, per-corpus mutation locks, and the global write-lane.
See .cheese/specs/repository-daemon-wikis.md for the design.
Operational summary:
- One daemon per user-local socket (
HALLOUMINATE_SOCKET,$XDG_RUNTIME_DIR/hallouminate/daemon.sock, or~/.cache/hallouminate/daemon.sock). - Single-instance enforced via
flockon<socket>.lock. - Interactive CLI subcommands (
ground,index, …) become clients of the daemon and fail loudly when it is unreachable rather than silently auto-starting — the user sees a clear hint to runhallouminate daemon. - The non-interactive MCP
servetransport callsensure_daemon_runningto spawn a detached daemon when one is not already up. The flock keeps concurrent spawns safe: only one daemon wins the lock, the rest exit.
Lock order across the dispatcher is documented in state.rs.