| name | odu-mcp |
| description | odu MCP server launcher — drive CI from a coding agent. `bin/serve` resolves odu via Nix and runs `odu mcp` in the cwd. See the repo README for the tools/resources and override knobs. |
| user-invocable | false |
odu-mcp
The agent face of odu — an MCP stdio server
that re-exposes a live CI run as agent tools (run, node_rerun,
node_cancel, lane_cancel, wait_for_settle, cancel, lease, release) and subscribable resources
(surface://streams/nodes, surface://collections/logs/{id}), so Claude Code /
Codex / opencode / Gemini CLI drive CI with structured calls instead of
scraping terminal output.
lease / release are the agent-held venue layer: hold a free box across
discrete tool calls without re-queuing between runs. lease returns
immediately (held or waiting); re-call or inventory to observe the line.
run reuses held hosts and does not release them on exit.
wait_for_settle defaults to fail-fast: it returns the instant the first node
goes red (fail_fast_tripped: true, settled: false), so the agent drills into
the failure without blocking on the slow lanes — its failed[] is only what's
red so far, and only passed: true (a fully settled run) is a trustworthy green.
A verdict about an observed run is stamped with that run's identity —
always, whenever the coordinator reserved an ordinal — so it's clear
run it describes ( is only when none was reserved: a wait
that saw no frame, or the rare case the coordinator couldn't reserve one);
and carries full owed GitHub status rows
() not yet confirmed (reporting debt never
blocks settle — the test verdict stays the truth).
Called with
it fails loud (an error mirroring , not an empty ),
and an optional (prefix-matched against the run's ) refuses
loud when the live run's commit doesn't match. A run that is still PROVISIONING
— returns as soon as the coordinator serves its socket, which is now
it claims a machine — is a live run: blocks on it, the
resource shows running, and its log resource
carries the runner closure's progress. A claim that never
succeeds arrives as a red verdict rather than as a
-time error. If the coordinator's socket
closes before it publishes a terminal frame, the verdict comes from the run's
finalized record on disk — never green for a run torn down mid-flight. The
resource carries the same . MCP tees coordinator
stdout/stderr to .