case studies
shipped, scoped, and one decision i’m proud of each.
two projects. not three, not “many.” fewer means each one gets the case study it deserves.
wip · 2026
caduceus
label an issue. wake an agent. get a pull request.
a self-hosted rust daemon + hermes plugin. polls github for labeled issues, hands each one to a configurable ai harness in an isolated worktree, and finalizes the result as a branch + push + pr.
rusttokiogithub rest + webhookshermes pluginisolated git worktreesposix flock
$ caduceus run --issue 42 --worker opencode~/projects
[caduceus] claim acquired issue #42
[caduceus] worktree /var/lib/caduceus/work/42
[caduceus] worker started opencode (pid 8741)
[caduceus] heartbeat ok (12s)
[caduceus] worker exit 0 1 file changed, 24 insertions(+), 7 deletions(-)
[caduceus] branch pushed refs/heads/caduceus/issue-42
[caduceus] pr opened https://github.com/barkley-assistant/caduceus/pull/87
[caduceus] worktree cleaned ok
[caduceus] state idlelive · 2026
signal house
engineering health, in one quiet dashboard.
a self-hosted dashboard that reads github, local git, and the agent session databases, and tells you whether work is actually moving — without opening five tabs.
bunreacttypescriptechartszustandbun:sqlite
src/shared/math.ts~/projects
export function sum(values: ReadonlyArray<number | null>): number | null {
let acc = 0;
let seen = false;
for (const v of values) {
if (v !== null && Number.isFinite(v)) {
acc += v;
seen = true;
}
}
return seen ? acc : null; // unknown stays unknown
}