| Filename | Latest commit message | Latest commit date |
|---|---|---|
a_signal_url_reaches_the_subagent_and_a_status_check_renders_no_config built a config with a signal_url, which makes mcp_config::build write a real --mcp-config file and resolve hive_agent_sock::paths::harness_dir. That reads HYPERHIVE_HARNESS_DIR, which the meta flake injects into every in-container service but a nix-sandboxed cargo test does not set — so the test passed locally and panicked in CI. Set the var to a scratch dir for the duration of this one test instead. Refs #4403 |
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
hive-subagent-mcp
Per-agent daemon (hive-subagent-daemon) that spawns nested headless
claude sessions on request and serves the tool surface
(start/continue/status/interrupt, plus a separate
subagent-facing goal_reached/need_help route) directly over
streamable-http. No stdio bridge, no per-turn respawn — claude
reconnects to the same stable URL every turn.
Independent of hive-bash-mcp — a subagent spawns a full nested
claude session, a much heavier capability than a bash command, worth
its own deployable/restartable unit.
Shape
One bin (hive-subagent-daemon, src/main.rs) built from the crate's
own lib (src/lib.rs):
session.rs— the actual claude-facing logic:Claude::spawn+RunningClaude::wait/cancel_handle(notInfiniteSession::run, which has no cancel handle to reach in — see the module doc for the v1 scope this trades away), the turn-continuation loop agoalswitches on, and the in-memory maps that are the only state this daemon keeps (no task files — a restart stops whatever's running; the actual claude session is the durable store, found again by name viahive_claude::SessionStore).mcp.rs— thermcptool routers (the parent'sstart/continue/status/interrupton/mcp, the subagent'sgoal_reached/need_helpon/signal/mcp) +serve_http.paths.rs— the in-agent todo-socket path.