Repository navigation
loadmaster says to an agent only what it can act on, and does itself what only it can: a waiting run no longer fills the logs agents read later, a check that just failed under load outside the queue waits for the machine to have room before running again, a guard test's held refusal is said only when it may be why a check failed, and status shows this checkout's jobs and what they wait behind. Measured with fresh Claude Code and Codex sessions on held-out scenarios against 0.16.1; see eval/agents.
Changed
- A wait read later says one line. Off a terminal, where an agent's tool hands the output over once the command has ended, a waiting run says what it waits for and behind whom when it starts waiting, then only
loadmaster: #42testhas waited 4m00s;loadmaster statussays what forevery 4 minutes, to keep the command alive. On a terminal, as before. In the held-out logs, what agents read fell to 28%. - A check that failed under outside load waits it out. If the last run of a task from this checkout failed or was killed while the CPUs were 95% busy or more, ran 3 s or more and ended in the last 30 minutes, the next run waits before getting in line until the CPU outside the queue leaves it its weight: at most 10 minutes, then it gets in line anyway; within
--max-wait, after which it exits with 75 and keeps no place. A run that may resume a kept place does not wait. The note after such a failure now ends with aloadmaster: next:line saying so, and a failure in under 3 s gets no note. Agents had run such checks again at once into the same load or handed the wait back to their user: on the held-out scenario 1 of 6 runs got the check to pass, now 6 of 6. loadmaster heldinside a job leaves the reason to the job's run. In the process group of a running job, a refusal is the asking script's:heldprints nothing then, keeps the reason in the state directory, and the job's run says it (loadmaster: note: inside it, ...) at its end only if the job failed. Outside any job it says why and what to run, as before. A test that checks a guard refuses no longer prints the refusal in every passing run, which agents had reported to their user as a warning.statusin a checkout shows its jobs and what they wait behind. Run from a checkout, the text lists that checkout's jobs and, for each that waits, the jobs ahead of it that have not started and the jobs its wait names, with the jobs using the cores; the rest is one line. A job of this checkout isfrom this checkout. Agents found their own job and why it waited in one call, reading 10 to 41% of the status output of 0.16.1.- The guide says the new wait lines, what to do after the note, and that
--jsonis for programs: Codex, told it was for tools, read the JSON, several times the text.
Added
loadmaster status --all: every job, asstatusshowed before (also what it shows outside any checkout).eval/agents: the harness that measured these changes, with its scenarios, thresholds and results.
Breaking changes
status(text) lists only this checkout's jobs and those in their way when run from a checkout; use--allfor every job.status --jsonis unchanged and lists every job.- Off a terminal, a waiting
runno longer says when what it waits for changes, nor once a minute. loadmaster heldprints nothing when it refuses inside a running job's process group; its exit code is unchanged.
Install
mise use -g github:ktanaka101/loadmaster@0.17.0Or download the archive for your platform below: macOS (Apple Silicon and Intel) and Linux (x86_64 and arm64, statically linked).