fix(nix): swarm-controller is not a core binary, and it needed a README

Per review: daemonBins is the core stack, and it drives the bundle that
services.hyperhive.c0re.package points at -- so listing a swarm-scoped
service there would put it in every hive's closure when one hive in a
swarm runs it. It gets the same per-bin extractor, bound on its own, the
way hivectl already is.

The crate also had no README while every other one does. Both misses are
the same shape: adding a thing without updating what describes the set of
things.
This commit is contained in:
atlas 2026-08-05 12:23:55 +02:00 committed by mara
commit fb51006717
3 changed files with 71 additions and 1 deletions

View file

@ -40,7 +40,6 @@ let
hive-forge = "hyperhive Forgejo CLI";
hive-forge-notify = "hyperhive per-agent Forgejo notification poller daemon";
hive-github-notify = "hyperhive per-agent github.com notification poller daemon";
swarm-controller = "hyperhive swarm-level controller daemon";
};
# ONE compile of the whole workspace (every bin, sharing the
@ -134,6 +133,16 @@ in
}
// binPkgs
// {
# Swarm-level controller daemon. Deliberately NOT in `daemonBins`:
# that list is the core stack — the binaries hive-c0re and the agent
# harness are made of — and it drives the `default` bundle that
# `services.hyperhive.c0re.package` points at. This daemon is a
# separate swarm-scoped service with its own module and its own
# `package` option, and one hive in a swarm runs it, so folding it
# into the core bundle would put it in every hive's closure to no end.
# Uses the same per-bin extractor, just bound on its own.
swarm-controller = mkBinPackage "swarm-controller" "hyperhive swarm-level controller daemon";
# Bundled browser assets — see ./frontend.nix. Output is
# $out/{dashboard,agent}/ which the Rust binaries serve via
# tower_http::ServeDir.