feat(#2659): serve hive-bash-mcp over persistent streamable-http, drop stdio bridge
This commit is contained in:
parent
ecc2ebe682
commit
c4fcf7fbf1
26 changed files with 376 additions and 574 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Bash execution tools
|
||||
|
||||
Background shell execution via `hive-bash-mcp`. Tools land as
|
||||
Background shell execution via `hive-bash-daemon`. Tools land as
|
||||
`mcp__bash__<tool>` (the MCP server name is `bash`, not `hyperhive`).
|
||||
Available on every agent unconditionally — `nix/agent-modules/mcp.nix` always
|
||||
injects bash into `hyperhive.extraMcpServers` (with `allowedTools =
|
||||
|
|
@ -91,21 +91,17 @@ this structured path so tasks get task-id tracking and structured output.
|
|||
|
||||
## Architecture
|
||||
|
||||
The bash tooling follows the same daemon + stdio-bridge pattern as the
|
||||
matrix MCP:
|
||||
|
||||
- **`hive-bash-daemon`** — long-running process (one per agent container,
|
||||
systemd service in `nix/agent-modules/mcp.nix`). Owns subprocess management,
|
||||
output file writing, and todo delivery on the harness's in-agent socket.
|
||||
Listens on `/run/hive-bash/socket` inside the container.
|
||||
|
||||
- **`hive-bash-mcp`** — stdio bridge spawned by claude per turn (declared
|
||||
in `hyperhive.extraMcpServers.bash`). Connects to the daemon socket and
|
||||
forwards `run` / `status` tool calls. Has no subprocess management logic
|
||||
of its own.
|
||||
|
||||
This split keeps claude's turn-local MCP bridge lightweight while the
|
||||
daemon tracks long-running tasks that outlive a single turn.
|
||||
`hive-bash-daemon` is a single long-running process (one per agent
|
||||
container, systemd service in `nix/agent-modules/mcp.nix`) — no stdio
|
||||
bridge, no separate bin. It owns subprocess management, output file
|
||||
writing, todo delivery on the harness's in-agent socket, **and** serves
|
||||
the `run`/`status`/`kill` MCP tools directly over streamable-http on
|
||||
`hyperhive.mcp.bashHttpPort` (declared in `hyperhive.extraMcpServers.bash`
|
||||
as `{ type = "http"; url = ...; }`). Same shape as the built-in
|
||||
`hyperhive` surface (`hive-mcp-http`) — claude reconnects to the stable
|
||||
URL every turn instead of respawning a stdio child, so there's no
|
||||
per-turn MCP re-registration race and no round-trip socket hop for tool
|
||||
calls.
|
||||
|
||||
### Completion as a todo (loose-ends v2)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue