0.27.1
Cut on 2026-10-04. coxswain-tools, coxswain-graphs and coxswain-dash are tagged v0.27.1.
coxswain-cartridges stays pinned at v0.23.1 and coxswain-crew at v0.12.0. coxswain-tools is published to
PyPI from its tag. Status: beta. This release lets the chair run on any machine, moves lands off the chair's tick,
and brings the chair into coxtop. It carries four headlines.
The chair runs on any machine. The run-liveness check and the SIGTERM that stops a run's children now work on
macOS, which has no /proc. A remote run's progress shows in the feed, and a phase branch is carried to the host
where the relaunch runs. A lane host's readiness check follows the runner, and a lane host with no plan meter of its
own uses the one the chair publishes. The chair's status line now lives in the store, so the feed reads it from any
machine.
Lands no longer hold up launches. Lands run on a land worker, so a tick launches work while a long land runs, and the chair keeps beating its lease during the land. A repo-lease refusal now counts as busy, and a stopped chair releases the leases its land worker held.
Talk with the chair from coxtop. cox chair ask, cox chair answer and cox chair decisions let the chair put a
decision to you and take your answer. coxtop gains a chair panel that hosts the chair's session, and a chair card that
shows the current action, the last tick, today's counts and the age of the last beat.
API runners record cost and honor the budget. Every API runner records cost and tokens and stops at budget_usd.
They build through a vendor-neutral tool-calling loop with an Anthropic adapter, get their own working directory, and
a model arm refuses a runner that cannot use tools.
Upgrading from 0.27.0. Nothing migrates, and the store schema is unchanged. The shared provider profile should
set work_state: store. coxswain-graphs now infers it from a Postgres storage_url, so setting it explicitly is
needed only for older harnesses. Lane hosts on macOS now work for chair duty. The chair publishes its plan meter and
its status line to the store and lane hosts read them, so upgrade the chair's machine and the lane hosts together.
Restart the chair loop after upgrading cox.
coxswain-dash
- coxtop's chair panel: the foundations that host the chair's session, and the panel and decision-card widgets (dash #20, dash #21).
- The feed's chair section carries the last tick, the last status, the current action and today's counts (dash #22).
- The chair card shows the current action, the last tick, today's counts and the beat age, and warns on a stale beat (dash #25, dash #26).
- A feed failure shows as a one-line error, whether it comes before or after the first snapshot (dash #23, dash #24).
coxswain-graphs
- SIGTERM stops a run's children on macOS too: the child-pid lookup falls back to
pgrepwhere there is no/proc(graphs #663). - Review follow-ups: the pause wait honours a fence and lease loss, and task history filters by repository (graphs #661). A task record whose scope is a string is skipped instead of raising (graphs #664).
- A lease renew keeps the lease status by default (graphs #662).
- API runners record cost and tokens and honor
budget_usd(graphs #665). - API runners build through a vendor-neutral tool-calling loop, with an Anthropic adapter on it (graphs #669, graphs #673).
- An escalated self-modification change opens a review PR instead of stopping (graphs #666).
- Build budget evidence names its source, a ticket or an estimate, not an override (graphs #667).
store_readreturnsshort_idfor runs (graphs #668).- The harness reads work state the way the chair does: with no
work_stateset, a Postgresstorage_urlmeansstore(graphs #670). - A model arm resolves its tier through the runner's capabilities and refuses a runner without tool use (graphs #671).
- API runners get their worktree as their working directory (graphs #672).
coxswain-tools
- The run-liveness check reads a process start time on macOS, where there is no
/proc(tools #1274). - A remote run's progress shows in the feed (tools #1277).
clear_branchescarries a phase branch to the host where the relaunch runs, pushing it there first when only the chair holds it (tools #1276).plan_landswaits on a phase whose task's run is unknown instead of raising (tools #1283).- Lands run on a land worker, so a tick launches while a long land runs, and the lease is beaten during it (tools
#1285, #1287). A first wiring into
chair run(tools #1290) was reverted because its lands could never land (tools #1293); it is wired again without the double lease (tools #1296). - A repo-lease refusal is busy even though it exits non-zero (tools #1292).
- A stopped chair releases the leases its land worker held (tools #1295).
- The chair's status line is recorded in the store, so the feed reads it on any machine (tools #1291).
- The feed's chair section reports the current action, the last tick, today's counts and the beat age (tools #1286, tools #1288).
cox chair ask,cox chair answerandcox chair decisionsask the chair's decisions, answer them and list them (tools #1279).cox host removedeletes a drained, idle host from the hosts table (tools #1278).- The lane host's readiness check follows the runner, in the doctor and as a preflight before a launch on a host (tools #1280, tools #1284).
- A lane host with no plan meter of its own uses the chair's: the chair publishes its reading and the host adopts the newest fresh one (tools #1281, tools #1282).
- Six small chair and feed fixes: a task with no recorded activity is stale for that reason, the courier appends an ack instead of rewriting its file and skips a malformed line, and the feed's weekly hard stop reads the policy the loop enforces (tools #1289); the chair acks the land notices of tasks that are done (tools #1294); and the lane cap is read one way for the loop, the console and the feed, with the local host's login check on its console row (tools #1297).
- Revert PRs the harness opens end with the footer the other PRs carry (tools #1275).
coxswain
- The tap formula PR the release opens ends with the Coxswain footer (coxswain #220).
Components
coxswain-tools carries the macOS fixes, the land worker, the chair's decisions and the lane-host changes,
coxswain-graphs the runner, budget and work-state changes, coxswain-dash the coxtop chair panel and feed errors,
and the umbrella the tap footer. coxswain-cartridges is unchanged since v0.23.1 and coxswain-crew is pinned at
v0.12.0.