| Filename | Latest commit message | Latest commit date |
|---|---|---|
A node ruled out by its own dependency edges settles `Skipped` host-side, but the wire folded it into `Cancelled` and `dag_view` filtered it out entirely, so a client never saw which branch a run didn't take. Post-#2785 that is not a rare shape: every approval DAG has two not-taken tails and every rebuild has one, on the happy path as much as on failure. `State` gains `Skipped`, and it counts as terminal — the wait loops in hivectl's progress display and the daemon's dag-settled check decide "finished" with `all(is_terminal)`, so omitting it would hang them on essentially every DAG. `dag_view` now emits skipped nodes but no longer lets them keep a DAG alive. Serialization and completion were the same expression: a DAG left the snapshot because its nodes had all been filtered away. Keeping skipped nodes on the wire under that rule would pin every finished deploy in the queue view forever, so the completion test is now its own flag. `rollupState` in the dashboard gains the matching arm. It has no `done` case — `done` is inferred by falling off the wire — so its trailing `return 'queued'` catches anything it doesn't recognise, and a green deploy would have read as permanently queued the moment the backend started emitting the new state. The Rust and JS roll-ups have silently disagreed before; they are edited together here and say so. |
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
hivectl
The operator-facing host CLI. A thin client for the hive-c0re
daemon — speaks the host admin socket protocol (hive-host-sock) and
does not link the daemon crate. Container lifecycle, the approval
queue, and provisioning verbs all forward to the daemon and need it
running; a few (wg/peer-config, choom) work off local host state
instead.
When to use it
Reach for this crate when adding an operator-run host command — agents
talk to the daemon over their own MCP tool surface
(hive-agent-mcp), not this binary. hivectl is what a human operator
(or a host-side script) runs.
Shape
One module per subcommand family; main.rs is just the clap parse +
dispatch:
agents.rs— container lifecycle (spawn/kill/rebuild/restart/…).approvals.rs— the config/init-config/meta-input approval queue.dag_progress.rs— rebuild-queue progress rendering.power.rs— restart/start/stop at the container level.choom.rs— drop into an interactive claude session in a container.forge.rs,matrix.rs,github.rs,gateway.rs— per-integration account/token provisioning.wg.rs— WireGuard mesh helpers.subvol.rs— btrfs state-subvolume ops.quota.rs,util.rs,completions.rs,open.rs— shared helpers, shell completions, browser-open.
Full verb reference: docs/tools/hivectl.md.