Repository navigation
OpenRig v0.4.6 — workflows + multi-host + factory
OpenRig v0.4.6
Summary — Workflows + multi-host coordination + factory foundations
OpenRig v0.4.6 lands the deterministic workflow engine and the
multi-host coordination model that runs on top of it. Workflows are
now a first-class product surface: a rock-solid engine, a full-
featured spec language, a workflow CLI, a workflow web UI, and an
exception + human-gate maturity model that keeps a healthy run
zero-interruption. On top of that engine, the self-driving factory
starter ships as an MVP shipped starter (rig up factory-rsi) —
one rig, seven seats, a self-driving plan → implement → qa_check → review → release inner loop with dogfood decoupled and running
out-of-band against the shipped product, feeding recorded findings
into the next plan.
Multi-host coordination lands the full happy path. Hosts register
and select through dashboard-visible cards; a remote host's
workspace surfaces are readable from the local operator; queue
items and hot-potato handoffs cross hosts explicitly through the
registered transport (never a silent selection re-home); the direct
coordination verbs (rig send, rig capture, rig transcript,
rig broadcast) cross hosts CLI-direct via the shipped http
transport branch with byte-verbatim ssh behavior preserved; a
fleet-altitude attention band rolls up needs-attention across the
whole registered fleet.
Foundations round out the release: a new agent runtime adapter (Pi)
joining Claude/Codex as a first-class runtime, terminal provider
first-class treatment across the terminal-facing surfaces, and
daemon read-path hardening for the multi-host + workflow load with
no functional behavior change.
Two new bundled skills ship canonical + plugin with byte-parity
guard: openrig-herdr (rig terminal open/views/status model) and
openrig-cmux (provider-agnostic delta).
Migrations are additive only: 049_workflow_instance_version,
050_workflow_spec_json, 051_workflow_resume,
052_workflow_instance_bound_rig, 053_sessions_node_id_index,
054_queue_transitions_archive. Existing v0.4.4 databases upgrade
by running rig daemon start on the new daemon. (v0.4.5 was
skipped; there is no cut between v0.4.4 and v0.4.6.)
What Shipped
Workflows
- The rock-solid deterministic engine — strict spec validation
(unknown keys reject; unreachable steps and unguarded cycles
fail);loop_guards.max_hopsenforced at projection; waiting-
exit replay absorption; per-instance keepalive watchdogs auto-
armed in the routing transaction; startup sweep re-arms and
surfaces stuck instances;rig workflow continuerelabeled to
its read-only inspector semantics. - The full-featured spec language — steps with role /
target.rig / preferred_targets / next_hop.on / invariants /
loop_guards / exception_routing / closure / gates / skill_refs /
spawn_budget; strict-keyset validation; shipped-spec compat
pinned by fixture round-trip. - The workflow CLI — new verbs
rig workflow run(instantiate- follow to terminal; exit 3 = workflow-failed distinct from
transport 1/2),rig workflow watch(mid-flight attach),
rig workflow status(needs-attention rollup),rig workflow route(frontier re-target in one transaction). Formatted
trace/list/showhuman output;--jsonbyte-identical
to before. New guard rejects out-of-band terminal closure of a
live workflow-frontier packet.
- follow to terminal; exit 3 = workflow-failed distinct from
- The workflow web UI — new
Workflows/Instance/InstancesBand/TopologyGraph/InstanceTrailTimeline
pages; SSE stream unscoped by rig; purebuildLauncherViews+
suggestLayout+ edge-handle assignment exports. UI acceptance
is carried by per-cut real screenshots + the two-host
integration proof; twin fixture backfill is routed as a
non-blocking 0.4.7 hygiene fast-follow. - The exception + human-gate model —
rig workflow resume
verb (redrive a failed instance from its failed step, rebound,
fresh capability-aware re-resolution, one freshmax_hops
window); exceptions become durable attention items in the same
transaction as the failure; maturity dialorchestrator-first | human_onlyper class / per workflow / per host; the attention
band is workflow-aware; the happy-path guarantee is unchanged.
Multi-host coordination
- Add / select hosts + dashboard —
HostConfigCard+
HostIndicatorsurfaces on the dashboard;rig host select
persists a sticky selection consumed by the observe/interactive
verbs; newuseHosts/useFleethooks. - View remote workspace — workspace observability tabs gain
--host <id>scope; registry + bearer fans out per-host reads.
Read-only. - Cross-host queue routing —
rig queue create / handoff / handoff-and-completegain--host <id>+ host-qualified
destination formmember@rig@<host>. Explicit-only routing.
At-least-once + idempotent via deterministic successor id;
handoff creates successor FIRST + closes local SECOND; retries
absorb on primary key. Failure honesty per host outcome. - Cross-host agent coordination —
rig send+rig capture
gain an http transport branch reaching the remote daemon's
existing/api/transport/send|captureroutes CLI-direct;
rig transcript+rig broadcastgain their first cross-host
affordance the same way. Theagent@rig@hosttarget form is
CLI-edge sugar for session-target verbs. Byte-verbatim ssh
behavior preserved for ssh-registered hosts; explicit--hosttarget sugar > selection;
send --verifyover http prints
the REMOTE route's verdict verbatim. - Fleet-attention altitude — fleet-wide attention rollup via
FleetBand+FleetPage; per-host status + drill-down.
Factory
- The workflow-to-rig binding layer — bind a workflow to a rig
at instantiation via--rig; roles resolve to seats by
capability; capable-seat resolution honors managed-only,
harness-pin-aware runtime match, least pending backlog,
deterministic tiebreak; resolve-once, record-in-the-packet;
roles bind to the stable seat coordinate{pod}-{member}@{rig}
(agent handover behind the seat never strands the workflow). - The self-driving factory starter (
factory-rsi) — new
rig up factory-rsistarter; newfactory-rsibuiltin
workflow with aplan → implement → qa_check → review → releaseinner loop sanctioned byloop_guards.max_hops;
dogfood decoupled + running out-of-band against the shipped
product with its findings feeding the next plan (the RSI edge,
ungated in the MVP — refined in a later release); publish stays
a human act viarelease_signoffgate. - The member-exists advisory + cross-rig wrapping —
mis-routed workflow destinations caught loudly at instantiate;
cross-rig wrapping workflows travel via the cross-host queue
routing path.
Runtime + terminal + read-path
- Pi agent runtime adapter — a new first-class runtime
joining Claude/Codex; participates in all workflow / role /
queue / send / capture surfaces exactly like the shipped
runtimes. - Terminal provider first-class treatment — terminal provider
first-class treatment across the terminal launcher,
send/capture/broadcast, and the newopenrig-cmuxskill's
--provider cmuxseam with best-effort fallback. - Daemon read-path hardening — SSE stream backpressure
guards, projection caches, additive indices for read-side query
performance. No functional behavior change; the same reads
return the same results, faster.
New bundled skills
openrig-herdr— the full rig terminal open/views/status
model (verbs, view grammar, honest-partial reading, read-only
policy, terminal-views.yaml schema). AGPL clean-room rail — no
herdr source text vendored.openrig-cmux— the provider-agnostic vs cmux-specific
delta with shipped-integration open-or-focus rule.
Both ship canonical + bundled openrig-core plugin, byte-parity
guarded.
Migrations
Additive only:
049_workflow_instance_version— optimistic concurrency on
workflow_instances.050_workflow_spec_json— full parsed spec cached on
workflow_specs; legacy rows self-heal on next read-through.051_workflow_resume—resume_count+hops_baselineon
workflow_instances.052_workflow_instance_bound_rig— nullablebound_rigTEXT
onworkflow_instances.053_sessions_node_id_index— additive index.054_queue_transitions_archive— archive table for read-side
query performance.
Existing v0.4.4 databases upgrade by running rig daemon start on
the new daemon.
Known Follow-ons
- Save-verb did not land in 0.4.6; rides 0.4.7.
- Twin fixture backfill for the new workflow + multi-host UI
routes routed as a non-blocking 0.4.7 hygiene fast-follow; UI
acceptance for the cut carried by per-cut real screenshots + the
two-host integration proof. - Continuous out-of-band dogfood runtime — the factory-rsi
RSI edge ships ungated in the MVP; the continuous mechanism is
refined in a later release. - Carry-forwards from 0.4.4:
openrig-userbundled plugin
stale-copy sweep,whoami --all-hostssilent host filter,
managed-stop SIGTERM-escalation brittleness, post-cutover
reconcile-settle-visibility signal on/healthz. - iOS Safari (Living Notes composer verification) —
carry-forward from 0.4.4. - Wider mission-template prose sweep — post-cut sequencing.
Full technical detail lives in
CHANGELOG.md.