36 lines
1.5 KiB
Markdown
36 lines
1.5 KiB
Markdown
# 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).
|