Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/dwarves

.nornir/agent-pool-design.md

agent pool — design

Class: design · Function axis: f0 the fleet-as-data surface (the whole) · f1 the AgentPool RPC · f2 the dwarves agents verb (fat + thin) · f3 the jera reuse seam Strict: this file states only what the agent-pool surface IS — its parts and why. Sibling how-to: agent-pool-guide.md; zero-knowledge walkthrough: agent-pool-for-idiots.md.

The agent pool surface exposes the worker fleet the forge dispatches to — every registered agent (id, group, capabilities, cores/mem, liveness) — as data, over the wire and from the CLI. It closes the D1-wishlist gap "AgentPool … remain open" and is the enabling wire for the parity §4b "Agents view — the live fleet." Before this, Show/History carried pipelines + runs but the fleet was invisible over gRPC.

The system as one — the function map (f0)

part lives in what it is
f1 AgentPool RPC crates/dwarves/src/server.rs · proto/dwarf.proto DwarfSvc::agent_pool reads the shared jera Scheduler → AgentPoolReply{ repeated AgentRow }
f2 dwarves agents verb crates/dwarves/src/main.rs fat = the local single-machine pool; thin = the server's live pool over AgentPool
f3 reuse seam jera (edda) Scheduler::state_json() — the ONE fleet-as-data contract, consumed not twinned

Why it is shaped this way

Place in the nordisk constellation

This is a dwarves-owned control-plane surface reading a shared jera primitive. It mirrors the constellation's "expose the fleet as data so a robot/matrix can assert it" law: nornir, dwarves and holger all get multi-machine awareness from the one jera crate, and each surfaces its pool the same way. The eventual Agents pane (facett-jobview-adjacent) consumes this RPC behind the same state_json shape.

Deferred