hive-bash-mcp
Per-agent background bash-task runner: a long-running daemon
(hive-bash-daemon) plus the thin stdio MCP bridge
(hive-bash-mcp) claude spawns each turn to talk to it. This is what
backs the bash_run / bash_status tools agents use to kick off
long-lived shell commands (builds, test suites, anything that
shouldn't block a turn) and check on them later.
When to use it
Look here when changing how background bash tasks are spawned,
tracked, or surfaced. The daemon owns all subprocess lifecycle
(sh -c spawn, completion monitoring, task state files under
harness/bash-tasks/) and pushes task-completion todos onto the
harness's in-agent socket so they show up in get_loose_ends. The
bridge binary is deliberately dumb: no subprocess management, just a
unix-socket round-trip per tool call, so it cold-starts in
milliseconds every turn.
Shape
Two bins from one shared lib (src/lib.rs):
hive-bash-daemon(src/main.rs) — the long-running daemon.runner.rsis the spawn/monitor loop and pushes todos on task transitions;socket.rsserves the daemon's own unix socket for tool-call requests from the bridge.hive-bash-mcp(src/bin/mcp.rs) — the stdio MCP server claude spawns per turn. Forwards every tool call to the daemon over the socket viaprotocol.rs'sDaemonRequest/DaemonResponseand returns the result.
Supporting modules: paths.rs (daemon socket + agent-socket
resolution), stats.rs (the bash_commands favorite-tool stat
recorded into turn-stats.sqlite).