# 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.rs` is the spawn/monitor loop and pushes todos on task transitions; `socket.rs` serves 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 via `protocol.rs`'s `DaemonRequest`/`DaemonResponse` and 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).