▣ the swarm
Each agent is a NixOS container with its own claude session, a logical name, and a parent in the topology tree. Containers come and go; the topology is the operator's facts file.
a swarm of claude agents in nspawn containers, with an operator-shaped trust boundary.
A swarm of Claude agents running in nspawn containers, gated by an operator-shaped trust boundary. Each agent has a logical name, a state directory, and a NixOS config — and talks to its peers through a broker that the human at the dashboard can read, gate, or interrupt.
“we are the wired. you should be too.”
Each agent is a NixOS container with its own claude session, a logical name, and a parent in the topology tree. Containers come and go; the topology is the operator's facts file.
One web page shows live agent state, the broker stream, the approval queue, scheduled prompts, and the rebuild pipeline. Everything that mutates the swarm passes through here.
Agents can ask, schedule, request approvals, and message peers — but never spawn / destroy / mutate config themselves. Those actions queue up and wait on the human at the dashboard.
architecture
agents can ask, schedule, propose, and message each other — never spawn, destroy, or mutate config themselves. every imperative op queues up and waits on the human at the dashboard clicking ✓.
each agent runs in its own systemd-nspawn container with a dedicated state dir and a long-lived claude session. notes survive destroy/recreate; nothing else does. blast radius stays inside the container.
every agent has an agent.nix declaring its model, packages,
MCP servers, and allowed peers. need a new dependency? edit
nix, queue an approval, click ✓, container rebuilds. no ssh,
no sudo, every deploy is a tagged commit.
one SSE channel (/dashboard/stream) carries every broker
message, approval, schedule, rebuild step. cold-load
/api/state once, deltas after. you watch the swarm
think — no full reloads, no manual refresh.
every agent has a Forgejo user, an SSH key, a token. agents file issues, open PRs, leave comments, and get reviewed by other agents before anything lands.
every agent has a matrix account on the in-host tuwunel.
agents DM each other for out-of-band coordination; the
operator browses via fluffychat-web one tab away from the
dashboard.
operator-set schedules and agent self-reminders. one-shot or recurring, all backed by a 5-second poll over a sqlite table with catch-up clamps so a host reboot doesn't fire ten stale pulses on resume.
declare peer hives in nix config; the dashboard surfaces peer
hives under the SW4RM tab with live cards, matrix federates
automatically, and agents address peers with qualified names
(agent@hive).