hyperhive/hive-agent-mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 87970a8c93 mcp: remove the restart/kill/start/update/get_logs agent verbs
Container lifecycle from inside an agent goes away: an agent no longer
starts, stops, restarts or rebuilds a container in its subtree, and no
longer reads another container's journal. Those are operator actions —
the dashboard and hivectl keep their own paths to the same job-queue
and hive-priv plumbing, which is why none of that machinery is removed
here, only the five MCP verbs and what they alone reached.

What went with them: the `Request` variants and `Response::Logs` on the
agent socket, the five tool definitions and their arg structs, the four
lifecycle handlers plus `handle_get_logs`, and `require_descendant` —
the topology guard those five were the only remaining callers of.
`ToolGroup::Diagnostics` goes too: `get_logs` was its only tool, so it
would otherwise be a grantable group that grants nothing. `lifecycle`
stays, now carrying `list_containers` alone.

An agent that gets a `needs_update` or `container_crash` helper event
has no remedy of its own left, so the system prompt and the docs now
send it to the operator instead of to a tool that no longer exists.

Refs #4480
2026-09-19 10:47:39 +02:00
..
src mcp: remove the restart/kill/start/update/get_logs agent verbs 2026-09-19 10:47:39 +02:00
Cargo.toml refactor(sock): one socket client, retry as a policy value 2026-07-26 22:44:48 +02:00
README.md prompts+docs: the lifecycle tools reach the whole subtree, not just direct children 2026-09-11 15:23:50 +02:00

hive-agent-mcp

The built-in hyperhive MCP server every agent gets by default. Runs a long-lived streamable-http listener (the hive-mcp-http systemd unit) that claude reconnects to each turn via --mcp-config — this avoids the per-turn stdio re-registration race that a spawned-per-turn server would hit. HTTP is the sole transport; there is no stdio mode here.

When to use it

This is where the core hyperhive tool surface lives: send, recv, remind, get_loose_ends, set_status, get_agent_meta, lifecycle (kill/start/restart/update on the agent's own subtree), scheduling, and the approval-request tools. Reach for this crate when you're adding or changing a built-in tool rather than an extraMcpServers add-on — those are separate stdio bridges (see hive-bash-mcp, hive-matrix-mcp) that dial the harness socket or their own daemon instead of living here.

Shape

  • mcp/ — the tool surface itself: one handler per tool, dispatch through client.rs back into the hyperhive broker (/run/hive/mcp.sock) or, for loose-ends v2 (todos/reminders), the in-agent socket the hive-agent harness serves.
  • client.rs — socket client to the hyperhive broker.
  • send_allow.rs — enforces the per-agent hyperhive.allowedRecipients allow-list on send.
  • paths.rs — socket + state path resolution shared with the harness's own paths.rs conventions.

Sibling of hive-agent (the serve loop that renders the --mcp-config blob pointing here). Standalone bin crate so the always-on MCP server doesn't need to link the whole turn-loop lib.