live jobs + agent-fleet pane — for idiots
Zero-knowledge walkthrough. What it IS: jobs-fleet-pane-design.md. How-to: jobs-fleet-pane-guide.md.
What is this?
A screen in the dwarves GUI that answers one question a CI operator always asks: "what is running, and where?"
It has two parts:
- A job list — every recent build/test/release the forge ran, with a green ✓, a yellow ▶ (still running), or a red ✗, how long it took, and — the new bit — which machine ran it (Loki, Odin, or the little NUC). Heavy jobs go to the big machines (Loki/Odin); the NUC only gets light work.
- A fleet list — the worker machines themselves: their name, how many CPU cores, and whether they're
idleorbusyright now (a ● means online).
Where does the data come from?
- The job list comes from the jera ledger — one shared file (
jobs.redb) where every dwarves process writes "I ran this job on that machine". When you dodwarves run <repo>, a row gets written there. The pane just reads that file. - The fleet list comes from asking a running
dwarves-server"who are your workers?" (theAgentPoolquestion) over the network.
What if there's nothing to show?
If the ledger is empty (nobody has run anything) or the server is offline, the pane shows a pretend example instead of a blank screen, and labels it clearly ("fixture") so you know it's not real. It never crashes.
Try it
# 1. run a build so the ledger has something real in it
dwarves --warehouse /tmp/wh run /path/to/some/repo
# 2. open the demo, pointing it at that ledger
DWARVES_JOBS_DIR=/tmp/wh/jobs cargo run -p dwarves-gui
# → click the "Jobs (live)" tab
You'll see your build in the list, tagged local (it ran on your own machine). The list refreshes itself every couple of seconds (the ● live button) — start another build and watch it pop in.
The one clever idea
The job list and the machine name each come from somewhere the rest of the constellation already uses (the shared jera ledger, the shared facett-jobview widget). Nothing here is a private copy — that's the house rule: build the thing once, use it everywhere.