hyperhive/hive-bash-mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-09 19:54:13 +02:00
..
src move hive-sh4re's harness_dir() into hive-agent-sock, drop the dev-fallback derivation 2026-08-09 19:54:13 +02:00
Cargo.toml hive-sh4re/hive-bash-mcp/hive-agent: retype TaskFile timestamps to DateTime<Utc>, drop now_unix from these crates 2026-08-02 02:12:19 +02:00
README.md docs(#2627): crate READMEs for the harness column (hive-agent, hive-agent-mcp, hive-agent-wake, hive-bash-mcp) 2026-07-23 16:41:05 +02:00

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).