Repository navigation
OpenRig 0.7.5
OpenRig 0.7.5: more dependable delivery and recovery, plus a preview of task-following terminal views
OpenRig 0.7.5 is mostly reliability work. Sends wait up to 60 seconds for their result, a wake that couldn't be routed is retried, fresh Claude handovers wait for the new process, rig down after a rolled-back launch stays down, stuck-work findings need evidence to close, and protected Codex delivery holds a message rather than leaving it typed and unsent.
It also previews rig terminal open qitem:<id> --follow --provider herdr, which keeps one task's current owners together in one terminal workspace. Following one task is a first step toward views of larger scopes of work. The preview is limited to Linux Herdr 0.9.5 / protocol 22 and requires no internet exposure.
Hosted members retain 0.7.4's framing: experimental, unsupported, off by default and at your own risk. Local assistants can connect locally. Internet access requires your own TLS tunnel or proxy and a narrowly scoped token; anyone holding a valid token can act within its grant. Revoke it when finished with rig mcp token revoke <name>.
Before you upgrade
npm install -g @openrig/cli@0.7.5
rig daemon stop && rig daemon start- A database update stores deferred escalation addresses while preserving existing edges. Previously inert
escalates_toedges now affect recovery for seats without a delegation parent. - Startup refreshes openrig-core to 0.1.22. Its queue-handoff skill teaches agents to park long waits with a continuation and wake. Replaced files are preserved under
$OPENRIG_HOME/backups/managed-refresh/; reapply local edits you still need. No setting is added or removed. - If Codex requests hook review, review the hooks you intend to enable. The earlier hook-refresh remedy,
rig seat restart <seat> --keep-conversation --reason "refresh hooks"(preview with--plan), has an unresolved refusal report; read #2200 below before relying on it. Upgrading does not restore approvals an earlier OpenRig removed.
Reliability and fixes
Work reaches its owner
rig sendwaits up to 60 seconds for its result, locally and over HTTP, plus a requested idle wait. A send can still read unconfirmed sooner, for example when a connection drops. An unconfirmed send may still have been delivered; input may be held off-screen by a busy recipient. Reconcile before resending. No automatic resend is added. (#2198)- A wake recorded as unroutable is retried through its existing intent once the seat has a pane; stuck findings require delivery or custody evidence to close. (#2170, #2153)
- Fresh Claude handovers wait for the new process and its current input frame. A rolled-back launch followed by
rig downstays down onrig start --last. (#2159, #2166) - With a Codex seat's typing guard set to
draft-awareoropenrig-urgent, a message OpenRig can't confirm will stay visible in the composer is held before it's typed, so nothing is left typed and unsent. A message that fits is delivered and submitted once, and a person's draft stays protected. The default (guard off) and other runtimes are unchanged. Delivery's guards also recognize Codex 0.164's two-row composer footer, so a truly empty Codex 0.164 composer can receive typed delivery. (#2242, #2206)
Status tells you more
- Terminal results distinguish
pane_unconfirmedfrom opened and skipped panes. An all-unconfirmed open exits nonzero; inspect before retrying because something may have opened. (#2173) - The Overview reads the selected rig's current configuration; the TUI uses the configured local host name; snapshot status matches the scheduler. (#2188, #2162, #2168)
Presets and smaller fixes
The pi-tui example runs Pi's own terminal UI with a per-seat agent folder and startup input (#2182). Hosted-member guidance says how a member without a wake trigger gets work, that a listed tool is not a grant, and that finished work closes with no-follow-on (#2187). Other changes repair tmux separator parsing for attach --self replies (#2178), normalize capture/transcript line counts (#2164), warn on invalid MCP daemon ports (#2160), release unread notification response bodies (#2172), and accept scope folders numbered 100 and above (#2194). The changelog lists every change.
Preview: follow one task in one terminal workspace
rig terminal open qitem:<id> --follow --provider herdrshows the current owners of a task's open work as viewer tiles in one Herdr workspace. Joining agents get viewer tiles; departures close viewers, not agents or conversations.--pin,--suppressand--max-tilesadjust the view;--no-followkeeps a fixed layout. Defaults are eight tiles, four seconds of departure grace and twelve more seconds for a focused leaver. (#2199)- What you'll usually see is one agent. A queue item has one owner at a time, and handing it off closes it, so following an ordinary task shows its current owner, replaced by the next owner after a handoff. Several agents appear together only when several open rows descend from the task at the same time, by handoff or by naming it in their chain of record.
- Clients can add or reuse a verified viewer without rearranging existing panes through
POST /api/terminal/viewer/ensure. Membership grants no input authority. (#2133) - The view recognizes Codex 0.164's two-row composer footer, so a departed Codex agent's empty composer no longer reads as unconfirmed input that keeps its tile. (#2206)
- Following larger scopes of work, such as a slice or a mission, isn't in this release.
Behaviour that changed
- Parentless recovery can use an
escalates_toaddress in another rig on the same daemon. A delegation parent still wins; an open recovery keeps its recorded owner. (#1772) - Runtime send refusals return HTTP 409 instead of 500. A stale Claude pane names
rig reconcile-session <seat>as the repair. (#2157) - Follow mode retains departed tiles with drafts or unreadable input. A completely empty task drains removable tiles and stops following once none remain; run
--followagain to resume that workspace.
Known issues
- A protected Codex message can be held in a small tile (#2242): with a Codex seat's typing guard set to
draft-awareoropenrig-urgent, OpenRig holds a message before pasting it when it can't confirm the whole message will stay visible in the composer. That can happen in small task-following tiles, and many wrapped messages are held even when they would have fit. A held message is not delivered. Use a larger pane; a shorter message may also fit; turning the guard off removes draft protection and is not a fix. A very long message (over 1,000 characters) is held whatever the pane size, so shorten it. - A Slack button answer to a parked question isn't recorded. If a question waiting on you has been parked by its owner, a button answer to it isn't recorded, and the reply wrongly says the decision is no longer waiting. Other ways of answering a parked question weren't tested in this release. A repair is on main.
- Codex restart refusal (#2200): reported on one upgraded Codex seat; the cause is unknown, and it is not fixed here. The inspected 0.7.4 check already accepts the reported process tree, so this is not an established refusal of all 0.6.x staged-script launches. If refused, leave the seat running and report the refusal with CLI and daemon versions; don't count it as a completed hook refresh.
- A named Herdr session can miss a custom daemon endpoint. With
--session <name>, OpenRig may resolve Herdr's default socket
location rather than a custom endpoint your daemon is configured to use. The configured endpoint works without--session. To reach a
specific endpoint, setHERDR_SOCKET_PATHto it explicitly; don't rely onXDG_CONFIG_HOME, which the default resolver doesn't read. - Unreadable composers keep departed tiles, including unconfirmed Pi, terminal and community-harness input. Unpinning does not override this. Other providers, platforms and selectors retain one-shot open. A viewer can resize its agent's terminal;
ignore-sizeis not isolation. - Run
pi-tuiunattended, without typing into it: a wake can submit a draft someone is typing or enter an unrecognized dialog. Busy-turn wakes and native resume remain unqualified; a plain terminal receives no queue wakes. See the example's limits. - Cross-rig escalation is same-daemon only. Upgrade followed by snapshot restore of deferred targets remains unqualified.
- Existing harness limits remain: OpenClaw's interrupted local turn is not recovered; use its Gateway preset for unattended work. Hermes declares no resume, and its idle gateway exit is unmeasured.
rig downstops a community harness's pane; inspect any independently spawned processes before relying on their exit.
Verification limits
Task following was checked with real agents on Linux Herdr 0.9.5: tiles joined and left as genuine work moved (3 → 4 → 3), a focused leaver stayed briefly before closing, a person's typed draft survived a join, the tile cap, pins and suppression behaved as described, and turning following off and on again kept the same agents. The empty-task stop was confirmed from the recorded events, and on screen in a recorded run. Resource use was measured only as whole-machine CPU in one window, not for the daemon alone.
Performance against 0.7.4 was measured on an earlier build of this release, on one machine, with a synthetic workload: no measured change in command latency, memory or CPU.
Protected Codex delivery (#2242) was checked with real Codex agents: a fitting message at 80×24 was submitted once (a model reply was not checked), in a 30×9 pane it was held before paste in both guard modes, and at 32×9 a person's unsent draft was kept in both modes. The 65×9 tile, messages with hard line breaks, and very long messages were not run natively.
Credits
Thank you to @icey-zzz, @Aschenbath, @DeryFerd, @Nikhi00718 and @dajiaohuang for contributions in this release; to @rudycelekli for the work completed in #2160 and @todie for the snapshot-status change followed in #2168; and to @agraubert, @AdamWhitehurst (#1544, #2049), @kevinhsykes (#2151), @aanestesia (#605), @todie (#1419) and @tgrundtvig (#21), whose reports led to fixes here.