What's new
Every change in each OpenRig release, with the pull request behind it.
OpenRig 0.6.6
31 added39 changed1 redesigned39 fixed
Seats & restore 7
- Added
Agents you've already set to full bypass can launch without stopping at Claude Code's and Codex's first-launch warnings, and the rig remembers that choice through restores and handovers. You can also make it the default for new rigs.
--non-interruptiveonrig upandrig bundle installlets agents whose policy is full bypass skip Claude Code's and Codex's first-launch warnings through launch flags. The choice is saved on the rig and kept for restores, forks and handovers, andrig config set launch.non_interruptive truemakes it the default for new rigs.Only agents whose policy is full bypass skip the warnings. Existing rigs start with it off.
--no-non-interruptiveclears it, with therig downfirst. No harness settings file is written. - Added
Agents that are slow to start can be given up to ten minutes to become ready, at launch, restore and handover, instead of the default 30 seconds.
runtime.readiness_timeout_seconds(1 to 600, default 30) gives slow agents more time to become ready at launch, restore and handover. - Changed
The restore map a Claude agent writes before its context is compacted now sits in the agent's own launch folder, with a .gitignore that keeps it out of your commits. Tools that ignore .gitignore, such as rsync or zip deploys, still see it.
Managed Claude compaction now writes its restore map inside the agent's own launch folder, at
.openrig/compaction/preparation/<session>/<attempt>/RESTORE-MAP.md, with a.gitignorethat keeps it out of Git.Tools that don't read
.gitignore, such as rsync, zip deploys and Docker build contexts without.dockerignore, still see the folder. The OpenRig home is used when the workspace is unknown or unwritable. - Changed
You can change an agent's permissions from an ordinary shell, not only from inside an agent, and an incomplete request tells you exactly which part is missing.
rig seat set-permissionstakes--operator <address>, so it works from a plain shell, and reports a missing identity, mode or reason as three separate errors. - Changed
Startup text that wasn't confirmed as sent now shows as a warning in launches, imports, restore records and the TUI, so an agent that may have missed its instructions is easy to spot.
Startup files delivered later get the same submit check, and staged or unverified startup text shows as a warning in
rig bootstrap,rig import,rig seat launch, restore records and the TUI. - Fixed
If an agent is stuck at a provider's own prompt, such as Claude's trust dialog, OpenRig flags it for your attention instead of calling it ready, so you know someone has to answer it.
An agent stopped at a provider's own prompt, such as Claude's trust dialog, is reported as needing attention instead of ready.
- Fixed
If
rig downcan't stop an agent, that agent keeps itsCLAUDE.mdorAGENTS.md, so it isn't left running without its instructions.When
rig downcan't stop an agent, it leaves that agent'sCLAUDE.md,CLAUDE.local.mdorAGENTS.mdin place instead of stripping or deleting it.
Queue & messaging 4
- Added
Agents can look up which specialist to bring in for a job, and why, from rosters you keep, across teams and machines. It's a lookup only and never assigns work.
rig roster list,showandfindread JSON rosters from<workspace.root>/rosters/and show who to involve for a purpose and why, across rigs and hosts. They never assign work. - Changed
Handing work to another agent returns as soon as the task is saved, so you aren't kept waiting on delivery. When you need to know it was delivered, add --verify.
rig queue create,handoffandhandoff-and-completereturn once the change is saved, and the agent is notified after that. The result no longer reports whether that notification was delivered; use--verifyto wait for delivery. - Fixed
Answering an agent's numbered menu from outside its terminal now sends the digit as a keypress rather than a paste, so the menu gets the choice you meant. It hasn't been tried against a live Claude Code or Codex menu yet.
rig send --dangerously-interactnow types your answer as keystrokes instead of a paste, so a numbered menu gets the digit you sent. This addresses a known issue, #519.It wasn't tried against a live Claude Code or Codex menu. Upgrade the CLI and the daemon together for this.
- Fixed
Marking a task as blocked is easier to get right: the help says you must name what it's waiting on, and naming a task this daemon doesn't have suggests waiting on something outside OpenRig instead.
rig queue blockhelp says--onis always required, and blocking on a task this daemon doesn't have suggests an external gate instead.
Claude 9
- Added
A new Claude Code agent stopped at Claude's bypass-permissions warning no longer loses its startup instructions. Accept the warning in its terminal, and one command, which
rig upprints for you, delivers them into the same conversation without a relaunch.If a fresh Claude Code agent stops at Claude's bypass-permissions warning, it now keeps its startup context and reports attention as
bypass_consent_gate. Accept the warning in that agent's terminal, then runrig seat continue <seat>to deliver the context into the same conversation without relaunching;rig upandrig bundle installprint the command. - Added
You can run Claude Code agents in Claude's own auto permission mode by picking one built-in policy, and see each agent's effective mode and where it came from. The policy is a community contribution.
A new built-in policy,
builtin:auto, launches Claude Code agents with--permission-mode auto, while Codex and Pi agents launch as they normally would.rig seat statusprints the effective permission mode and where it came from, and the built-in policies are described in the RigSpec reference. - Changed
Claude Code agents in your teams can run OpenRig commands, read the project and run its tests without a permission prompt, but still ask before starting, stopping or installing teams. It's an allow list, not a sandbox, and applies only where you haven't set permissions yourself.
Claude Code agents in your teams need fewer permission prompts. OpenRig passes an allow list and an ask list at launch, so
rigcommands, reads inside the project and common test commands such asnpm test,pytest,go testandcargo testrun without a prompt, while lifecycle commands such asrig up,rig down,rig bundle install,rig seat stopandrig daemon stopstill ask.Applies outside the kernel at an agent's next launch, resume, fork or handover, only when no member or rig
permission_policyand no saved permission choice is set;permission_policy: nonekeeps the old behaviour. These are command allowances, not containment: a project's test command runs project code. Your own ask and deny rules still apply, and no settings file is written. Asking before lifecycle commands works in Claude Code team agents only; Codex team agents don't ask yet. In a Claude Code team agent,rig down --helpalso asks;rig help downprints the same help without a prompt.rig setup's permission question still describes the behaviour before these defaults; its text is corrected in the next release. - Changed
New Claude agents finish setting themselves up without anyone typing to them: after their startup text, OpenRig sends one short line asking each to run its startup check.
After delivering a Claude Code agent's startup text, OpenRig sends one short line asking it to run its startup check, so Claude agents finish getting set up on their own.
- Fixed
OpenRig reads more Claude Code screens correctly: an agent with only update or limit warnings under an empty prompt counts as idle and gets its messages, and one that's visibly working isn't mistaken for idle.
A Claude Code pane is read as idle when update, focus-events or weekly-limit warnings sit below an empty input, in every permission mode, and a pane showing live work alongside the mode bar is read as working.
- Fixed
When a Claude Code agent asks a question with a long list of choices, OpenRig now recognises that it's waiting on an answer.
A tall Claude Code question picker is recognised as a waiting question.
- Fixed
Claude agents launched through a shell wrapper named with a version number are now recognised by their executable path, so a restore problem flagged on them can be cleared. A restore can still report a problem with an agent that works.
OpenRig can identify a Claude process running under a shell wrapper with a version number as its name, by its executable path, so restore attention on such agents can be cleared.
On macOS the daemon may run the built-in
/usr/bin/osascriptfor this; whether macOS shows a permission prompt for it on a Mac that has never approved one hasn't been observed. A restore can still report a problem with an agent that works (#273); several fixes target it and it isn't fully resolved. - Fixed
Claude agents brought back with
rig up--existing keep reporting their activity to OpenRig, and a restore that can't set that up again says so.An agent brought back with
rig up --existingkeeps its Claude activity hooks, and a restore that can't reapply them now says so. - Fixed
Forking a Claude agent now quotes the parent conversation's ID in the launch command, so the shell can't misread it.
Forking a Claude agent quotes the parent session ID in the launch command.
Codex 2
- Changed
Codex agents in your teams get the same relief: routine OpenRig, read and test commands ran without prompts in testing, still inside Codex's sandbox. One difference for now: they don't ask before starting or stopping teams, as Claude Code agents do.
Codex agents in your teams need fewer permission prompts too. They keep the
workspace-writesandbox and can also write OpenRig's workspace folder and the state folder of their pod (their group of agents), and ordinaryrig, read and test commands ran without prompts in testing.Codex team agents don't ask before lifecycle commands such as
rig upandrig downyet; Claude Code team agents do. Applies only when no member or rigpermission_policy, saved permission choice or named Codex profile is set;permission_policy: nonekeeps the old behaviour.rig setup's permission question still describes the behaviour before these defaults; its text is corrected in the next release. - Fixed
Codex agents no longer get stuck at launch, resume or fork when Codex 0.160 shows its newer update menu.
Codex agents no longer stall at launch, resume or fork when Codex 0.160 shows its update menu with the new header.
Pi 5
- Changed
Oh My Pi agents using Anthropic, OpenAI or LiteLLM models can send requests to a custom endpoint, such as a gateway, once you allow that provider's base-URL variable. If you already allow one, those agents now use it.
An Oh My Pi agent whose model is written
anthropic/…,openai/…orlitellm/…now also receives that provider's base-URL variable when you allowlist it inrecovery.provider_auth_env_allowlist.If you already allowlist
ANTHROPIC_BASE_URLorOPENAI_BASE_URL, those Oh My Pi agents now send requests there. Oh My Pi agents weren't tested beyond automated tests. - Fixed
A rig with a Pi agent no longer fails its pre-launch check just because the daemon can't see pi on its PATH, since the agent's own shell finds it at launch. Pi flag errors also name your Pi version.
A rig with a Pi agent no longer fails preflight when
piisn't on the daemon's PATH; it warns, and the pane's shell finds Pi at launch. Pi flag errors name the Pi version.Pi agents weren't tested beyond automated tests.
- Fixed
Pi agents keep talking to the right daemon as the right agent, even when your shell startup files set conflicting values.
Pi agents keep their daemon routing and identity when shell startup files set conflicting values.
Pi agents weren't tested beyond automated tests.
- Fixed
When a Pi agent can't find an API key, the error now tells you what to set.
A Pi agent failing with "No API key found" now says what to set.
Pi agents weren't tested beyond automated tests.
- Fixed
When Oh My Pi quits during startup, you see how it exited and its last error output, so you can tell why.
When Oh My Pi exits during startup, the error says how it exited and shows its last stderr lines.
Oh My Pi agents weren't tested beyond automated tests.
Slack 2
- Added
If the daemon loses its Slack connection for a while, top-level channel messages posted during the gap still reach your agents, late and marked as recovered, instead of being missed.
rig slack statusshows the connection and whether it's catching up.Top-level Slack messages posted while the daemon was disconnected now arrive late, as tasks marked "Recovered after a gap".
rig slack statusshows the live connection and recovery state.Needs Slack inbound configured. Each channel gets a recovery checkpoint on the first daemon start, and history before that checkpoint stays unknown. Live Slack recovery wasn't tested.
- Fixed
OpenRig's saved Slack connection state stays intact if the daemon crashes while writing it.
Slack gateway state survives a crash in the middle of a write.
TUI 7
- Added
One command opens the kernel's TUI, advisor and operator side by side on any kernel, Claude-only, Codex-only or mixed, with nothing to set up first. A kernel view you saved yourself still takes priority.
rig terminal open saved:kernelworks without any saved-view file: it opens the TUI, the advisor and the operator side by side, for Claude-only, Codex-only and mixed kernels. A view you saved yourself under the namekernelstill wins. - Added
Without herdr or cmux, you still get the exact tmux or ssh command to reach each agent, and the shared TUI is labelled as the dashboard, not the place to talk to agents.
Without herdr or cmux, setup, the TUI preview and a failed
rig terminal opengive an exact tmux orssh -tattach command for each agent, andrig tui --sharedis named as the dashboard, not the conversation. - Added
Open a team's spec in the TUI to see how its agents fit together as a graph, then launch it from there: it asks for a working folder and runs the real
rig up.A rig spec opened in the TUI starts on a graph of its topology, with Launch: it asks for a working folder and hands the terminal to the real
rig up. - Changed
When a team starts, you know where to go: watch it from the dashboard, and talk about the work in the lead's pane.
Team views say the dashboard is the overview and the lead's pane is where you talk about the work.
Shaped by an earlier first-user run on macOS, which wasn't rerun on the final package.
- Changed
Open the TUI and you're at your work right away, even before any team is running, rather than on a start page. The Start page is one key away, on S.
The TUI goes straight to the work views once it has read the daemon, even when no rig is running. The Start page is still there on S.
- Fixed
The TUI's recent task activity takes less work to load when there's a long history behind it.
The query behind the TUI's recent queue activity does less sorting on large histories.
- Fixed
rig terminal opennow uses the daemon's own tmux, and with herdr it reports a pane that closes at once as degraded instead of treating it as working.rig terminal openstarts tiles with the daemon's own tmux, and with herdr reports a pane that exits at once as degraded.
CLI & hosts 14
- Added
Tools that collect OpenRig's history can read it a page at a time through the CLI, with any gaps marked, instead of reading OpenRig's database directly.
rig telemetry events,transitionsandtenuresread one bounded page of retained history at a time, with a cursor and explicit gaps, so collectors no longer read OpenRig's database. - Added
Inventory timeouts are easier to diagnose: requests marked with a diagnostic header are traced in the daemon's slow-operation log.
Requests that carry an
X-OpenRig-Diagnostic-Attemptheader are traced in the daemon's slow-operation log, to help diagnose inventory timeouts. - Added
The project commands shadow-drain and shadow-stop now work from an ordinary shell, not only from inside an agent.
rig project shadow-drainandshadow-stoptake--actor, so they run from a plain shell. - Changed
Before you stop or restart a running team, the help tells you what that does to the work in progress.
Lifecycle help says what stopping or restarting a live team does to its work.
A text change, packaged without a new journey run.
- Fixed
Stopping services through the daemon's API removes their data volumes only when the request explicitly asks for it. The rig env down --volumes command works as before.
Tearing down services through the daemon's API deletes volumes only when the request says
volumes: trueas a JSON boolean.rig env down --volumesis unchanged. - Fixed
rig host pair always gives up eventually, even when given an infinite or oversized timeout.
rig host pair --timeoutcaps an infinite or overflowing value at about 25 days instead of waiting forever. - Fixed
When
rig whoamican't find the agent, the error names the daemon it reached, so you can tell if it's talking to the wrong install.When
rig whoamiorrig health --selfcan't find the agent, the error names the daemon it reached. - Fixed
Pointing rig project experimental at a named pipe now gets a clear refusal instead of a hang.
rig project experimentalrefuses a FIFO instead of hanging. - Fixed
rig capturenow shows an empty agent screen as empty.rig captureshows an empty pane as empty. - Fixed
OpenRig's MCP server exits when its input closes, and keeps using the daemon address it found, including IPv6 ones.
rig mcp serveshuts down when its input ends, and keeps the daemon address it found, including IPv6. - Fixed
Mission titles with colons, hash signs or quotes no longer break the mission's file.
A mission title with
:,#or quotes writes valid frontmatter. - Fixed
rig env logs --tail 0now prints no earlier lines, as you asked.rig env logs --tail 0prints no past lines. - Fixed
rig env statuskeeps working when a cached service record is damaged.rig env statussurvives a corrupt cached service record. - Fixed
Agent transcripts now read correctly where text was erased with several backspaces in a row.
Transcript cleanup applies runs of backspaces correctly.
Specs & bundles 25
- Added
A team can be shared as a link to a folder on GitHub and installed straight from it, pinned to one commit and with a package digest you can check. You need git and a running local daemon.
rig up, andrig bundle create,inspectandinstall, accept a public GitHub folder link (https://github.com/<owner>/<repo>/tree/<ref>/<folder>). The ref resolves to one commit, and the result reports the source, configuration ID and package digest.Link import needs
giton your PATH and a running local daemon. It runs yourgitwith credential helpers, hooks and global config disabled. - Added
A team can come in several ready-made configurations, such as which runtime each agent uses, and you choose one when you install it.
A bundle can declare presets in
configurations.yaml.rig bundle configurations <spec>lists them, and--preset <name>or--seat pod.member=runtimepicks one. - Added
Before you install a team, you can see what it will do on your machine: its models, whether permission prompts are off, the files and startup actions it brings, what it writes and which outside domains it uses. The author's setup steps are shown, never run.
See a team before you install it.
rig bundle inspect, and the view printed beforerig bundle installandrig up <bundle>, show the team and models, its permission settings including whether prompts are off for every agent, files the agents receive, startup actions, writes, outside domains, the author's setup preconditions and what stays unknown until launch. Facts about one agent are labelled with that agent.The author's setup preconditions are shown, never run, and some facts stay unknown until launch.
- Added
Install a team and point all its agents at your project folder in one step, separately from where the team itself is installed.
rig bundle install --cwd <dir>sets every agent's working folder, and--targetsets the install folder. - Added
Team authors can check a bundle against the authoring rules on their own machine before sharing it. The check is advisory.
rig bundle check <folder>checks a bundle against the authoring rules, locally.It's advisory.
- Added
When you package a team, it can carry a context pack kept outside the rig folder and the project the team works in, so whoever installs it gets both.
rig bundle create --context-pack <dir>carries a context pack from outside the rig folder, and--project-dir <dir>carries the project the rig works in. - Added
Installing a team you already have now asks what to do: use it, stop and replace it, or cancel. A running team is left alone, and conflicting files are backed up before a stopped one is replaced.
Installing a team that already exists shows what's installed and offers to use it, stop and replace it, or cancel. A running team is refused before anything is written; a stopped one is replaced in the folder holding its installed manifest, with conflicting files backed up first.
Reinstalling into another folder that holds a copy of the team's installed manifest treats that folder as the team's install folder, so its conflicting files are replaced. They're backed up first and the backup is named.
- Added
If you build tools around team bundles, the v1 formats are now documented, with JSON Schemas to validate against.
The v1 bundle formats are documented in
docs/reference/bundle-formats.md, with JSON Schemas. - Added
Install the workshop from openrig.dev/rigs for a four-agent team that builds in any repository: its lead plans from your goal and routes work to a builder, a reviewer and QA, and nothing is published until you say so. Its agents run without permission prompts, and the view before install says so.
The workshop, OpenRig's team for building software in any repository, OpenRig's own included, installs from openrig.dev/rigs, which shows its install command. It has a lead, a builder, a code reviewer and a QA agent; the lead starts from your goal, plans the work and routes it to the team, and nothing is published until you say so.
It ships separately, in the openrig-world repository, needs OpenRig 0.6.6 and isn't built in, so
rig up workshopdoesn't resolve. Its agents run with permission prompts off and install non-interruptively by the team's own declaration; the view before install says so. The current workshop was checked separately with a startup check, not a full journey, and not in other configurations or with Pi. The first-user journey used an earlier workshop revision. - Added
A team's author can declare in its spec that it launches without first-launch warnings, and a flag you pass on the command line still overrides it.
A rig spec can declare
non_interruptive: trueitself. An explicit flag still wins, and the declaration wins over the machine default. - Changed
If you start any of these three teams by name, in scripts or by habit, switch to the new name. The old ones have no alias.
Three specialist teams were renamed:
adversarial-reviewis nowcode-review,research-teamis nowresearchandpm-teamis nowpm.There's no alias for the old names.
- Changed
Instructions that say
rig upfirst-projectkeep working and now start the starter team, which pairs a Claude Code builder with a Codex reviewer. On a Codex-only machine, ask the kernel's operator to adapt it, and use a Codex newer than 0.145.rig up first-projectstill works and startsstarter, with a note that the team's providers changed.first-projectused two Codex agents;starterhas a Claude Code builder and a Codex reviewer.On a Codex-only machine, ask the kernel's operator to adapt it. The starter's Codex reviewer needs a Codex newer than 0.145, which refuses its model with "requires a newer version of Codex"; Codex 0.160.1 works.
- Changed
Seven older built-in teams were retired. Any rig you already created from one of them keeps restoring as before.
conveyor,demo,implementation-pair,product-team,first-project-claude,first-project-mixedandfactory-rsiare no longer built in. Rigs you already created from them keep restoring. - Changed
Two rigs with near-identical names no longer end up sharing Docker containers by accident, because each new rig with services gets its own Compose project. Existing rigs keep theirs, and a brand-new rig won't reuse old containers unless you name the project.
A new rig with services gets a Docker Compose project named from its rig ID instead of its name, so two rigs whose names sanitize to the same string no longer share containers. Existing rigs keep their project.
A rig created fresh, not as a same-name replacement, won't attach to containers or volumes under the old name-based project unless you set
services.project_name. - Changed
If a new rig's services fail to boot or none of its agents launch, OpenRig takes down the containers it just created and never deletes their volumes. When rigs being replaced would clash over containers,
rig uprefuses before starting anything.If service boot or every agent launch fails, a rig's new Compose project is brought down, never with its volumes. When the earlier rigs being replaced use different projects and no
project_nameis set,rig uprefuses withcompose_project_conflictand starts no services, andrig downexits 2 when it keeps a project that a live rig of the same name still uses. - Changed
Previewing the starter or factory team ends with the same three-team choice, so you can compare before you pick.
rig specs preview starterandrig specs preview factoryend with the three-team choice. - Changed
Everything a bundled team brings, from skills and plugins to context packs, is put in place before its agents start, and anything that can't be routed is reported instead of silently dropped.
Skills, plugins, workflow specs, context packs and agent images in a bundle are put in place before any agent launches, and routing failures are printed instead of dropped.
- Changed
Installing a team never changes a context pack you already have under the same name. OpenRig tells you it kept yours.
Installing a bundle never overwrites or merges into an installed context pack with the same name; it reports
already_installedorkept_existing. - Changed
Bootstrapping from a .rigbundle file now uses the same install path as
rig bundle install, so both ways of installing a team behave alike.rig bootstrap <file>.rigbundlenow goes through the normal bundle install. - Redesigned
The built-in teams are now a shorter list with plainer names: starter (a builder and a reviewer) for a first team, factory (a lead and six other agents) for bigger work, and specialist teams such as code-review and research.
The built-in teams have new names. The shelf is now
starter(a Claude Code builder and a Codex reviewer),factory(a lead, an advisor, a builder, QA, design and two reviewers), the specialist teamscode-review,researchandpm, plussecrets-managerand the kernel. Shipped help, skills and onboarding use the new names. - Fixed
Every bundle now records which configuration it was built from and the OpenRig version that built it, so you can tell later where it came from.
Every
rig bundle createrecords the configuration ID and the assembling OpenRig version inbundle.yaml, and bundles built by an installed OpenRig record its real version. - Fixed
Inspecting a bundle before you install it now applies the same archive safety checks install does, so an unsafe archive is caught at the first look.
rig bundle inspectrefuses the same unsafe archive entries that install refuses. - Fixed
An older-format bundle whose project settings point outside its own folder is now refused.
A legacy bundle whose
projectblock escapes its root is refused. - Fixed
A package can no longer use a skill or agent name to write files outside its install folder. It's refused before anything is written.
Installing a package whose manifest gives a skill or agent a name that would write outside the install target is refused before anything is written.
Context & skills 16
- Added
A project can name the world packs its agents should install, alongside the rest of its context.
A project can list world packs under
install.worlds. - Added
Any Claude Code or Codex session, even outside an OpenRig team, gets a way into OpenRig by adding one skill with a single npx command.
The
rigsskill gives an ordinary Claude Code or Codex session a route into OpenRig. It lives in the GitHub repository rather than the package; add it withnpx skills add mvschwarz/openrig --skill rigs. - Changed
Implementer and QA agents now start without the test-driven-development skill loaded. If your team works that way, the skill is still available.
The implementer and QA agents no longer load the test-driven-development skill by default. The skill is still available.
- Changed
OpenRig no longer hides the guidance files it adds to your repository: a new
CLAUDE.mdorAGENTS.mdshows in git status, and OpenRig prints the exact ignore line if you want it hidden. Only its Codex plugin files are ignored automatically, in a marked block you can edit.Files a launch creates now show in
git status. When a launch creates a new guidance file such asAGENTS.mdorCLAUDE.mdin a Git repository, OpenRig leaves it visible to Git and prints the exact line you can add to.git/info/exclude. New files under.codex/plugins/openrig-core/are excluded automatically, in a marked OpenRig block ininfo/excludewhere deleting a line makes that path visible again.At launch, OpenRig runs your
gitto check generated files and may append its marked block toinfo/exclude. - Changed
With several projects in one workspace, an agent loading its project context gets one picked by clear rules and is told how it was chosen. Only a real tie stops it, with a ready-to-run command for each candidate.
With several projects declared and no
--project,rig context work-installpicks the project whoserigs:list names the agent's rig, then the deepest project root containing the working folder, then the only unclaimed project, and reports how it chose. It stops withproject_requiredonly when more than one still matches, printing a ready-to-run command for each candidate. - Changed
The getting-started and agent help guides now cover what to do when an agent needs attention at startup, including Claude's bypass warning, slow-starting agents and the auto permission policy.
The getting-started guide and the agent help guide explain
rig seat continue, startup attention, readiness timeouts, Claude's bypass warning andbuiltin:auto. - Changed
Adding context works even when the daemon is stopped, because the command starts it for you.
rig context addstarts a stopped local daemon. - Changed
Agents working on OpenRig's own code are pointed to the skill that explains how OpenRig is built.
The bundled skills index sends agents that are changing OpenRig itself to the
developing-openrigskill. - Changed
If you read or contribute to OpenRig's code, its developer docs were refreshed throughout, with each claim checked against the code at the time.
The developer documentation was refreshed, with each claim checked against the code at the time: the README, CONTRIBUTING, SUPPORT and SECURITY; the reference pages for specs, projects, bundles, operations and process; the architecture pages and CLI reference; and ARCHITECTURE, DESIGN and the TUI README.
A final pass against the release commit is a separate change.
- Changed
OpenRig's contributor guidance now asks whether an agent with instructions could do a job before anyone writes code for it.
The contributor skill asks whether an agent with instructions could do a behaviour before adding code for it, and points to the capability map first.
- Fixed
Skills that come in a plugin, including OpenRig's own, are now copied to the folders Claude Code and Codex actually load skills from, which never happened before. Checked with stand-in harnesses, and existing agents get them when next created, not on restore.
When an agent's profile selects a plugin, such as
openrig-core, its skills are now copied into the agent's.claude/skills/or.agents/skills/folder, where Claude Code and Codex actually load them. Before, neither runtime saw them.Checked with stand-in harnesses; whether a real Claude Code or Codex agent lists and loads each skill is checked separately. Existing agents get the skills when they're next instantiated, not on restore. An existing folder with the same name that OpenRig doesn't own is kept, with a
plugin_skill_keptwarning. - Fixed
The attention view, the health readout and
rig mode effectivenow use the projects you configured and pick a task's project the same way project context does, so they agree on which project a task belongs to.rig mode effective, the attention view and the health readout now read the project catalog you configured, and when a task names only its mission they pick its project the same wayrig context work-installdoes. - Fixed
An agent can carry its own version of a skill: the launch uses it and warns that it differs from OpenRig's catalog, instead of failing.
When a profile selects a skill from its own agent folder that differs from the managed catalog, the launch uses the selected skill with a
skill_bundle_precedencewarning instead of failing. - Fixed
A context-pack folder created in the workspace after the daemon started is now found by sync, without restarting the daemon.
rig context syncfinds a workspace context-pack folder created after the daemon started. - Fixed
Context packs that include JavaScript or Python helper files now install from the command line.
Context packs with
.mjsor.pyhelper files install from the CLI. - Fixed
Skills and commands no longer point you to skills OpenRig doesn't ship, and
rig compact-plannames the compaction restore skill that does.rig compact-planpoints to the shippedclaude-compaction-restoreskill, and shipped skills no longer point to skills that don't ship.
Setup & platform 19
- Added
After install, the first agent you meet is the kernel's operator: it asks what you want to build and recommends one of three teams. It's guidance the agent follows, not a scripted flow, and in the first-user test the person still needed help attaching terminals.
After you install OpenRig, the kernel's operator agent greets you first and asks, once, what you want to build or change. It offers three teams,
starter,workshopandfactory, with one recommendation and a drawing of each.This is guidance the agents follow, not a scripted wizard; how closely an agent follows it is what OpenRig's first-user runs check. In the first-user test on a Linux VPS the person reached the operator and the goal reached the team's lead, but they were guided to attach a terminal five times, which counts as help. The final package wasn't put through another journey.
- Added
You don't need every provider a team was designed for: the operator adapts the team to the accounts you have, asks before launching, and passes your goal to the team's lead so you only explain it once. It's guidance the agents follow, checked by first-user runs.
The operator fits the team you pick to the providers you have by writing an adapted copy, shows you the plan and launches only on your yes. It then shows you the team and hands your goal to the team's lead as a task, so the lead starts from that goal instead of asking again.
Guidance for the agents, checked by first-user runs. In the first-user test the person was guided to attach a terminal five times, which counts as help.
- Added
When you want ongoing work, the operator keeps track of it in OpenRig's workspace, not in your repository. A one-off question is simply answered.
For continuing work, the operator records one mission, and one piece of work under it, in OpenRig's workspace rather than in your repository. A question just gets an answer.
Guidance for the agents, checked by first-user runs.
- Added
Whether setup finishes ready, incomplete or as a dry run, it ends by telling you how to reach the operator.
rig setupprints how to reach the operator after ready, incomplete and dry-run results. - Added
After install, the agent that installed OpenRig opens the kernel's dashboard, advisor and operator in a new terminal space, so you can see them without disturbing its own session. It's guidance that agent follows, and in the first-user test the person still needed help attaching terminals.
After installing, the agent opens a new terminal space with the kernel's TUI, advisor and operator, using herdr, then cmux, then a plain terminal window, without taking over its own terminal.
This is guidance for the installing agent. In the first-user test the person was still guided to attach a terminal five times, which counts as help.
- Added
If you work from the repository, an optional script checks for Node and npm, installs OpenRig and runs setup, stopping at the first failure. It isn't in the npm package and isn't documented yet.
The repository has an optional
scripts/install.shthat checks for Node and npm, runsnpm install -g @openrig/cli, runs the installed Node.js and SQLite check, thenrig setup --dry-runandrig setup, and stops at the first failed step.It isn't part of the npm package and isn't documented yet.
- Changed
After upgrading the CLI, restart the daemon so it actually runs the new version. On that first start it also installs the updated openrig-core plugin, which your agents pick up the next time they launch.
Restart the daemon after upgrading the CLI: run
rig daemon stop, thenrig daemon start. The running daemon keeps its old build until it restarts, and on its first start it installs the updated bundled openrig-core plugin, which running agents pick up when they next launch. - Changed
The kernel's operator is the agent that installs and runs teams for you, so kernel agents now launch with the broad permissions that job needs, and Codex runs there without a sandbox. If you'd rather keep the old behaviour, set an explicit permission choice.
Agents in the built-in
kernelrig launch with wider permissions by default, so its operator can install and run teams for you. Claude Code runs inacceptEditswith an allow list for file tools, reads under your home folder and operational commands such asrig,tmux,npm,git,sshandcurl; Codex runs unsandboxed with approvals off.rig seat statusreports the source as the kernel operational default.Applies only when no explicit permission choice, member or rig policy, or (for Codex) named profile is set; set one to keep the previous behaviour. Your ask and deny rules still apply to Claude Code.
- Changed
Ask your coding agent to install OpenRig and it now hands your goal and project folder to the operator, and leaves the kernel running, instead of building the project itself. Part of that guidance lives on openrig.dev's install page.
An agent that installs OpenRig for you now keeps the kernel running and passes your goal and project folder to the operator, instead of building the project itself.
Part of the guidance for an agent finishing an install is on openrig.dev's install page, not in the package.
- Changed
When the operator suggests the workshop, it checks the latest pinned version instead of trusting a cached copy that may be older. This is a text change, and a fresh first-user run hasn't yet confirmed it finds the current workshop.
When the operator offers the workshop, it reads the workshop's current pinned version from the registry's raw file, because a cached copy can be older.
A text change, packaged without a new journey run. That a fresh first-user run then finds the current workshop hasn't been reproduced.
- Changed
rig doctorno longer gives a blanket all-clear, so a clean run isn't mistaken for a working setup: it points you to its warnings and says it doesn't check provider logins or agent readiness.rig doctorno longer ends with "System checks look good." It says there were no failures, to review WARN and SKIP results, and that provider logins and agent readiness aren't checked. - Changed
Setup shows you what to do next before it asks about permissions, and scripts reading its JSON output get the next steps too.
In
rig setup, the guided next steps now come before the permission-policy menu, and--jsonoutput gainsnextSteps. - Changed
When setup runs into problems, you get a list of what failed and how to fix each one.
When
rig setupfinishes with problems, it lists each failed step with its fix. - Changed
Starting without the kernel now tells you the operator won't be running either, and how to start it later.
rig daemon start --no-kernelandrig startsay the operator is skipped too, and how to start it later. - Changed
Setup offers to show you the kernel before you pick a team, and treats saying no, working over SSH or running headless as fine.
Setup's next steps offer the kernel view before you pick a team, and treat declining, SSH and headless use as valid.
- Changed
Common install snags on Linux are now in the README and getting-started guide: a system Node.js that's too old, npm 11 skipping the install check, and cmux being optional and macOS-only.
The README and getting-started say a Linux distribution's own Node.js can be too old and how to install 22 or 24, that npm 11 may skip the postinstall check, and that cmux is optional and macOS-only.
- Changed
Contributors install exactly the dependency versions in the lockfile, so everyone builds against the same set.
Contributor setup uses
npm ci. - Fixed
If you run OpenRig on Linux, the kernel's advisor no longer talks to you as if you're on a Mac. A community contribution.
The kernel's advisor agent no longer assumes you're on macOS.
- Fixed
A setup dry run on Linux now reports the Homebrew and cmux steps as skipped, so the preview matches your system. A community contribution.
On Linux,
rig setup --dry-runreports the Homebrew and cmux steps as skipped.
OpenRig 0.6.5
11 added13 changed1 redesigned23 fixed
Seats & restore 8
- Changed
With dozens of agents running, the daemon checks on all of them in a few batched tmux calls instead of one or more per agent, so it stays responsive as teams grow.
Activity, identity and structural sweeps read tmux in a few batched calls instead of one or more per seat, so large fleets stay responsive.
- Changed
Before a reboot or upgrade,
rig restore-checktells you whether a rig would really come back, because it runs the same checks a restore runs, against the snapshot a restore would use.rig restore-checknow checks the real queue store and each seat's selected Claude hooks, and runs the same pre-checks a restore would run against the snapshot it would use. A rig spec it can't locate reads as yellow, not checked, instead of red. - Changed
If tmux can't be reached,
rig downno longer forgets a rig whose agents might still be running. It says what it couldn't confirm and keeps the record.rig downkeeps a rig it can't confirm is gone. If tmux can't be reached, it says so, keeps the rig record and blocks--delete. - Changed
If you're watching an agent in tmux when its session ends, you're detached instead of being switched into another agent's session.
Ending a seat's session detaches any terminal viewing it, instead of switching that terminal to another session.
- Redesigned
Before a long-running Claude agent's context is compacted, OpenRig asks it to write a map of what matters and waits for it, and afterwards the agent reads its own map back. It's how an agent picks its work back up after losing most of its working memory.
Managed Claude compaction now asks the seat to write a restore map first, and waits for it before sending
/compact, up to 25 minutes for automatic compaction. If no map arrives, that attempt stops instead of compacting an unprepared seat.Not tested against a real Claude compaction. When no map arrives, automatic compaction stays off for that seat until you run
rig compactagain. - Fixed
A damaged snapshot no longer stops a restore; OpenRig skips it.
Restore skips damaged snapshots, and picks the newest of snapshots or checkpoints saved in the same second.
- Fixed
Seats with similar names, such as
devanddev-2, can't be mixed up when one of them stops, because OpenRig addresses tmux sessions by exact name.OpenRig addresses tmux sessions by exact name, so a seat whose session ended can't be confused with another whose name starts the same way.
- Fixed
Agents that take around 20 seconds to start are given the time, instead of being marked as failed.
A seat that becomes ready after about 20 seconds now starts within the 30-second readiness allowance.
Queue & messaging 6
- Added
Work handed between agents goes through a durable queue, and a write that times out can now be checked and retried by its ID without creating the work twice.
rig queue createpicks the item's ID before sending and prints it, so after a timeout you can check that exact item and retry with the same ID instead of creating a duplicate. A same-ID retry with a different body warns that the new body wasn't saved. - Added
Send work to a seat name with a typo and you get a warning naming the seat you probably meant, instead of a row nobody picks up.
A queue write to a seat that doesn't exist in a known local rig still goes through, with a warning that names the likely typo.
You can hand an agent work from your own terminal, without being an agent in a seat.
rig queue create --sourceworks from a plain shell outside a seat, recorded as a self-declared source.- Fixed
OpenRig delivers messages by typing them into each agent's terminal and pressing Enter. It now uses tmux's named Enter key, so messages no longer sit typed but unsent when
extended-keysis on.Typed and pasted text is submitted with tmux's named Enter key, so it no longer sits unsubmitted when
extended-keysis on. - Fixed
When an agent is stuck at a permission prompt, OpenRig doesn't type over it. It raises one alert to the orchestrator or to you, and the agent's work resumes once the prompt clears.
Work blocked behind a prompt is escalated as one alert to the orchestrator or operator, without typing into the blocked seat, and its wake retries resume once the prompt clears.
- Fixed
Agents can't wake themselves, so OpenRig keeps timers that wake parked work later. Those timers now hold even when the work around them is claimed, finished or re-parked.
A watchdog attached to a parked queue row survives the other row's claim, completion or re-park.
Claude 7
- Changed
Before typing into a Claude agent's terminal, OpenRig confirms the native Claude process and the exact conversation it expects. When it can't confirm a resumed conversation, it reports it as unverified instead of claiming it came back.
OpenRig confirms a managed Claude seat behind a shell wrapper or a native install from the native Claude process and its exact saved conversation ID, in restore, readiness and identity checks and in
rig seat clear-attention. Acknowledging a seat's attention no longer reports its conversation as resumed without strict proof. - Changed
If you've customised Claude's status line, OpenRig leaves it alone.
OpenRig keeps your own Claude status line instead of replacing a custom command in
.claude/settings.local.json, and no longer wipes that file when it doesn't parse.A seat that keeps its own status line doesn't run OpenRig's collector, so its context usage reads as unknown and resume-token capture is skipped.
- Fixed
OpenRig follows the conversation each Claude agent is actually in, even after
/clear. Shut the team down at night, bring it back in the morning, and each agent returns to the conversation it was really in.After
/clear,rig downandrig upnow bring a Claude seat back to its current conversation, not the one from before the clear. At shutdown OpenRig reads the live Claude process's session and saves its current ID.Shutdown can take slightly longer. A conversation change in the moment between that read and shutdown hasn't been verified.
- Fixed
If you start Claude through a launcher shim, OpenRig now finds the real Claude behind it, so messages and queue wakes get through.
rig sendand queue wakes reach a Claude seat whose launcher shim starts the real Claude binary. - Fixed
If a Claude agent's startup message is left typed but unsent, OpenRig presses Enter once more and carries on with a warning instead of failing the launch.
OpenRig presses Enter once more when a Claude startup prompt is still visibly staged, and starts the seat with a warning instead of failing the launch.
- Fixed
When a Claude agent has used up both of its usage limits, OpenRig shows when it can actually work again.
When both Claude usage limits are used up, provider usage reports the later reset time.
Codex 3
- Added
Two OpenRig installs can live side by side on one machine, each with its own Codex home, so a test install's Codex conversations stay apart from your main one.
Each OpenRig install can have its own Codex home. Set an absolute
CODEX_HOMEwhen you start its daemon, and managed resume uses that home; with it unset, installs still share~/.codex.Before upgrading, align a
CODEX_HOMEset in your shell rc with the daemon's, or a Codex seat may not find an earlier conversation. - Changed
Codex agents running in their default sandbox can now reach OpenRig's daemon on your machine, so they pick up and hand off queue work like any other agent. OpenRig only adds the network setting when your own Codex config hasn't made a choice.
Codex seats can now reach the local daemon under OpenRig's default
workspace-writesandbox, so they can do their queue work. OpenRig turns on network inside the sandbox only when you haven't made your own choice and no managed requirement restricts it.Not checked with real logins, managed policy bundles or on Linux. To keep it off, set
network_access = falseunder[sandbox_workspace_write]in your Codex config. - Fixed
OpenRig tells whether an agent is idle by reading its screen, and now reads recent Codex versions correctly, so idle Codex agents get their work.
Codex 0.157 and 0.158 seats showing the empty-composer placeholder are recognized as idle, and a busy seat whose status row sits far above the composer isn't misread as idle.
Pi 2
- Added
Oh My Pi joins Claude, Codex and Pi as a runtime a team can use. Each Oh My Pi agent gets its own home, config, skills and sessions.
A rig spec can declare
runtime: ompto run Oh My Pi seats, each with its own home, config, skills and sessions.No live authenticated session against a real provider was run.
rig seat clear-attentioncan't yet recover an OMP seat after a full restore; userig up --existing <rig> --fresh <seat>instead. - Fixed
Pi agents with long launch commands start correctly, instead of having the command cut off by the terminal.
Long Pi launch, fork and resume commands run from a temporary script instead of being cut off by the terminal's line limit.
Slack 4
- Added
Agents can ask you for a decision in Slack with buttons, up to four questions at once, and the work waits for your tap. A typed reply still works.
A decision sent to a person in Slack can carry one to four questions, each shown as a row of buttons. A typed reply in the thread still works.
A Slack app created from an older manifest must turn on Interactivity by hand, or the buttons do nothing. Tested against a simulated Slack, not a live workspace.
- Added
Agents keep follow-ups about one piece of work in the same Slack thread, and attach their evidence there, including screen recordings and PDFs.
A follow-up can go into an earlier Slack thread, and video and PDF evidence files up to 50 MiB are attached.
Tested against a simulated Slack, not a live workspace.
- Changed
On a busy queue with Slack connected, each sweep skips work for items with nothing to post, and usage lookups use an index. Both are based on work by a user running their own large setup.
Slack sweeps skip building expensive queue views for items with nothing to post, and each seat's latest usage sample is found through an index instead of by sorting its history. Both are based on korallis and Lee's work in korallis/agent-stack.
On a synthetic 200-row queue the Slack sweep was much faster when few items needed a post, and about 11% slower when none had been posted.
- Fixed
Two Slack messages sent at the same moment in different channels both reach their agents.
Slack messages in different channels with the same timestamp are both delivered, and retries search up to 10 pages of history for an earlier post with an unknown outcome.
TUI 2
- Changed
You can open a second TUI on the same install without it taking control away from the first.
A second TUI on the same OpenRig home binds its own control socket and shows its path, instead of taking over the first one's.
- Fixed
The TUI copes with a flaky connection to the daemon, and arrow keys work in more terminals.
The TUI's live activity updates back off when the stream keeps dropping and retry when it's slow to open, and arrow keys work in application-cursor mode.
CLI & hosts 10
- Added
OpenRig works by watching every agent's terminal.
rig ps --resourcesnow shows what that watching costs your machine, and idle agents are watched less often.rig ps --resourcesshows load per CPU, running seats and what transcript capture costs your host. Idle panes are captured less often, and changes totranscripts.linesandtranscripts.poll_interval_secondsreach running seats without a daemon restart.An idle seat's transcript can trail its pane by about 6 seconds. Load average isn't CPU use.
- Changed
When the daemon refuses a request, these commands now fail instead of printing an empty success, so the scripts and agents built on them see the problem.
Commands that used to print an empty or successful result when the daemon refused the request now exit 1 or 2, including
rig bootstrap,rig env status,rig plugin list,rig context list,rig specs lsandrig start --all. - Changed
On very large installs,
rig healthgives a partial answer for the busiest families instead of failing, and names any source it couldn't read.rig healthabove 200 families evaluates the 200 busiest and marks the result PARTIAL instead of failing, and a failing health source is named as unavailable while the others still report. - Fixed
Opening a project's execution view no longer makes the daemon wait on Git, and transcripts no longer grow by repeating the same line.
Execution views no longer freeze the daemon while their Git checks run, and a repeated session-boundary line no longer grows a transcript on every capture.
- Fixed
The daemon can run on an IPv6 address, and the CLI and host list work with it.
CLI commands, the daemon's own endpoints and
rig host listwork with an IPv6 daemon host. - Fixed
When the daemon is slow to answer,
rig statusand similar commands say it didn't respond, instead of telling you it's stopped.rig status,rig startand four other commands say when the daemon didn't respond, instead of calling it stopped. - Fixed
rig pscounts agents stuck at a permission prompt in each rig's attention total, so you can see who's waiting for someone.rig pscounts a seat stuck at a pane-only permission prompt in the rig's attention total. - Fixed
rig usage topshows missing usage data as unknown, so it isn't mistaken for an agent that used nothing.rig usage toplists seats with missing counters as unknown instead of zero. - Fixed
Two agents editing the same mission no longer silently overwrite each other's changes.
rig scoperefuses a stale mission edit instead of silently dropping another edit, and refuses a slice that depends on itself. - Fixed
rig daemon stopfinishes promptly even while something is still listening to its live events.rig daemon stopends open event streams after a short grace period instead of timing out on them.
Specs & bundles 4
- Added
Each agent in a team can think as hard as its job needs: a planner at high reasoning effort and builders at low, Claude and Codex alike, declared once in the rig spec.
Each seat can have its own reasoning effort. Put
efforton a pod member, in a profile's preferences or in an agent's defaults, and OpenRig passes it to Claude as--effortand to Codex asmodel_reasoning_efforton fresh launch, resume and fork.OpenRig doesn't check the value, and Pi seats ignore it.
- Added
You can check a rig spec anywhere, on a laptop or in CI, without a daemon running, using the same validators the daemon uses.
rig spec validateruns locally, with the same validators the daemon uses, so you can check a spec without a running daemon.rig spec preflightstill needs the daemon. An agent spec can use a plugin from your OpenRig home, wherever that home is.
Agent specs can point at a plugin with
openrig-home:plugins/<name>, and built-in agents loadopenrig-corefrom a customOPENRIG_HOME.- Fixed
A rig can start services such as a database alongside its agents, and OpenRig waits until every replica is healthy before treating them as ready.
Service readiness accepts bracketed IPv6 targets and requires every Docker Compose replica to be healthy.
Context & skills 3
- Added
An agent joining a project can find the project's intent, context files and skills itself with one command, instead of waiting to be told.
Agents learn the route to your project's context. The onboarding text and bundled skills teach
rig context work-install, which lists what the current project declares: its intent, context files and skills. - Added
If you want to contribute, your own agents can load a skill that explains how OpenRig is built.
Contributors get architecture maps, a
developing-openrigskill and a roadmap.
Setup & platform 1
- Changed
Agents keep talking to the daemon that launched them, even if your shell startup files point
OPENRIG_URLorPATHsomewhere else. One less way for a seat to end up on the wrong install without anyone noticing.Your shell startup files no longer change a seat's OpenRig settings. Each launch re-applies the daemon's
OPENRIG_URL,OPENRIG_HOMEand related settings, and puts therigthat matches the running daemon first onPATH.For classic Claude launches, a claude alias or function defined only in a nushell rc doesn't resolve, and neither do some older fish setups.
OpenRig 0.6.4
5 changed19 fixed
Seats & restore 4
- Changed
When OpenRig can't verify which runtime an agent is using, it says so instead of reporting the agent as stopped.
An agent runtime OpenRig can't verify is reported separately from a stopped agent.
- Fixed
A rig with a single agent can be relaunched fresh, even when stopping that agent shut down its tmux server.
A rig's only seat can be relaunched fresh with
rig seat launch --fresh --stop, even after stopping it ended the tmux server. - Fixed
When OpenRig restores an older Claude agent and can't tell whether its conversation came back, it keeps the new session and asks for your attention instead of closing it.
If the resume check can't tell whether an older Claude seat's conversation came back, the restore keeps the new session and asks for attention instead of closing it.
- Fixed
A launch that times out is reported as an unknown outcome, because the agent may still be starting.
A seat launch that times out reports an unknown outcome instead of a failure.
Queue & messaging 1
- Fixed
Parked work keeps its wake-up timer when its seat is handed over to a new occupant.
A blocked queue row keeps its park timer through a seat handover, and a rerouted row's periodic timer is retired.
Claude 3
- Fixed
Starting several Claude agents at once no longer trips a one-second check: OpenRig now gives Claude five seconds to answer before a managed launch.
Claude's capability check, run before a managed launch with an explicit permission mode, gets five seconds instead of one, which helps when several seats start at once.
A timeout can still refuse the launch.
- Fixed
Shut a team down completely and bring it back, and Claude agents running in auto mode take messages again once OpenRig confirms the same Claude process is in each pane. If it can't confirm the conversation came back, it asks you instead of starting a new one.
After a full down and up, a managed Claude seat resumed in auto mode takes ordinary messages again once OpenRig confirms the same Claude process is running in its pane. A resume it can't confirm asks for your attention instead of starting a fresh conversation.
A restore can still report a problem with a seat that works.
- Fixed
OpenRig finds a natively installed Claude behind its shell wrapper, including versioned install paths. When it can't see the runtime, messages still go through with a warning.
OpenRig recognizes a native Claude install behind its managed shell wrapper, including versioned install paths. When it can't observe the runtime, ordinary delivery goes ahead with a warning.
Codex 2
- Fixed
Codex agents in an OpenRig team can use providers other than OpenAI.
Codex readiness works with providers other than OpenAI.
- Fixed
Removing OpenRig's Codex activity hooks leaves the rest of your Codex configuration as it was.
Removing Codex activity hooks leaves the rest of your Codex config untouched.
Slack 1
- Fixed
Long messages you send to agents from Slack now arrive whole; before, anything past 1,800 characters was lost.
Slack keeps a long message from a registered person whole, where anything past 1,800 characters used to be lost, and a storage error during retries is logged instead of escaping.
Checked with synthetic connections on Linux, not a live Slack test.
CLI & hosts 6
- Fixed
If you start the daemon on a different port, your other commands now talk to that daemon instead of looking for the default one.
A daemon started with
rig daemon start --portis now the one your other local commands talk to. - Fixed
Replacing a proof file swaps in a new file, so a linked artifact somewhere else is no longer overwritten along with it.
rig proof add --replaceswaps in a new file, so a symlinked or hard-linked artifact no longer overwrites the other path's contents. - Fixed
A CLI command's deadline now covers the whole response, and a reply cut off partway is reported as an unknown outcome instead of a success.
CLI request deadlines cover the whole response, and a body that fails after its headers is reported as an unknown outcome.
- Fixed
Output passed between machines over SSH and rsync, and through Herdr, keeps multi-byte characters such as accents and non-Latin scripts intact.
SSH, rsync and Herdr output keeps UTF-8 intact across chunks.
- Fixed
Files OpenRig edits keep their executable bit, so scripts stay runnable.
Atomic file edits keep the executable bit.
- Fixed
rig env statustells you when a service's last receipt is stale, so an old result isn't taken as current.rig env statussays when a service receipt is stale.
Specs & bundles 2
- Changed
Importing a rig over a stopped one with the same name archives the old rig and tells you how to bring it back.
Importing YAML over a stopped rig with the same name archives the old one and shows its ID and the command to unarchive it.
- Fixed
A bundle of agents keeps binary files exactly as they were, so packaged images and other assets arrive intact.
rig bundle createkeeps binary files in agent packages intact instead of re-encoding them.
Context & skills 1
- Changed
Agents joining a team read onboarding text that covers how builds go wrong, and learn that a project, rig or machine can add its own skills.
The onboarding text new seats read now covers both ways a build goes wrong, and the skills router says a project, rig or machine may add its own skills.
Setup & platform 4
- Changed
OpenRig's web UI is now off by default. The terminal UI and the CLI are how you use OpenRig, and both are built so agents can drive them as well as people.
The web UI is off by default. The CLI and the TUI are the supported ways to use OpenRig; the web UI is in maintenance mode.
To turn it back on, run
rig config set ui.enabled true, then stop and start the daemon. - Changed
The daemon now checks which address and which web page a request comes from. Your CLI, TUI, agents, Slack and other OpenRig hosts are unaffected; a custom hostname or a local web app needs one setting.
The daemon checks which address and which web page a request comes from. Nothing changes for the CLI, the TUI, agents, the queue, Slack or other OpenRig hosts; a custom DNS name or proxy domain goes in
OPENRIG_ALLOWED_HOSTS, and a local app on another port inOPENRIG_ALLOWED_ORIGINS.It isn't complete browser isolation, so keep the daemon on loopback or your tailnet. Both settings need a daemon restart.
- Fixed
After an upgrade removes the old version, agents still launch, because they use the running version's built-in startup files.
Seats launch after an upgrade removes the old version, using the running version's built-in startup files.
- Fixed
Agent process checks give the same answer whatever language your system is set to.
Native process checks no longer depend on your locale.
OpenRig 0.6.3
1 changed3 fixed
Seats & restore 2
- Fixed
Repeated snapshot attempts no longer leave unusable helper sessions behind.
A newly created snapshot helper is cleaned up when its input target can't be established and its ownership can still be proven, so unusable helpers stop piling up.
- Fixed
Archived rigs no longer get in the way of a live rig with the same seat names, and removing a stale duplicate keeps the live agent's session and queue work.
Archived rigs no longer interfere with seat references, and removing a stale duplicate node keeps another live seat's session and queue work.
Claude 1
- Fixed
Messages reach a running Claude agent even when OpenRig's managed launch puts a shell wrapper in front of it. A pane that's only a shell is still refused.
rig sendreaches a running Claude Code seat launched with an explicit permission mode, even when OpenRig's managed launch leaves a shell wrapper in front of it. A bare shell alone is still refused.The process checks used synthetic process metadata; an installed Claude send on every platform wasn't demonstrated.
CLI & hosts 1
- Changed
Agents can attach screenshots and other binary evidence to their proof with
rig proof add --media, and existing proof isn't overwritten without--replace.rig proof addrefuses binary files given as artifact text and asks for--replacebefore overwriting. Attach screenshots and other binary evidence with--media.
OpenRig 0.6.2
2 added1 changed10 fixed
Seats & restore 4
Herdr gets hints about which agents are Claude and which are Codex, and a seat missing its startup context is flagged for attention.
Known Claude and Codex runtime hints are passed to Herdr, and a missing fresh startup context or adapter is reported as needing attention.
- Fixed
After a tmux or host restart, launches find the right terminal by name instead of an old pane.
Managed launches after a tmux or host restart keep the named launch target instead of confusing it with an old pane binding.
Actual reboot and power-loss recovery were outside this fix's verification.
- Fixed
When a sweep runs slowly, the daemon no longer piles up overlapping polling work on every tick.
Identity and transcript polling no longer start overlapping work on every tick when a sweep runs slowly.
This prevents piled-up overlap; it isn't a measured overall CPU reduction.
Queue & messaging 2
- Fixed
OpenRig delivers messages by typing them into a terminal, so it now refuses to type into a pane it can see is a bare shell where an agent should be running. The message isn't run as shell commands.
Message delivery won't type a message into a bare shell when an agent runtime should be running there, so it isn't run as shell commands.
- Fixed
Messages from this machine's own agents are recognised as local even when the sender names this host.
A sender qualified with this daemon's own host ID is recognized as a local seat, avoiding false ownership refusals.
Claude 2
Claude agents can be pointed at an Anthropic-compatible gateway through OpenRig's provider settings.
ANTHROPIC_BASE_URLcan be forwarded through configured provider-auth environment forwarding, so Claude seats can use an Anthropic gateway.- Fixed
Claude usage-limit reset times are read correctly when Claude reports them as numbers.
Numeric Claude rate-limit reset timestamps are accepted.
Codex 1
- Fixed
Codex agents launched through a managed shell wrapper receive messages and queue nudges.
Messages and queue nudges reach a ready Codex seat launched through a managed shell wrapper instead of being refused as a bare shell.
Pi 1
- Fixed
Pi agents keep line editing in terminals that report themselves as
TERM=dumb.Pi seats keep line editing with
TERM=dumb.
CLI & hosts 1
- Fixed
OpenRig reads tmux window details reliably, and tells health it didn't ask for apart from a health check that failed.
tmux window fields with printable separators parse correctly, and health that wasn't requested is no longer reported as a failed read.
Specs & bundles 1
- Changed
A bundled team installs into the project folder you choose and runs from there, so its working directories and files keep working after setup.
Version-2 bundles copy their verified contents into
--targetand launch from there, so relative working directories and agent references survive after extraction. Without--target,rig up <file>.rigbundleinstalls into your current directory.
Context & skills 1
Setup & platform 2
- Added
Start with a small team that does one useful thing in your repository: one agent makes a change and a second checks it. Choose two Codex agents, two Claude agents, or a Claude owner with a Codex checker, using accounts you already have.
Three
first-projectrecipes give you a small owner and checker team: two Codex agents (first-project), two Claude Code agents (first-project-claude), or a Claude owner with a Codex checker (first-project-mixed). Use the accounts you already have. - Added
The agent setting up OpenRig asks you once whether OpenRig's own commands can run without repeated permission prompts, and changes nothing if you say no.
Agent-guided setup asks once whether to allow OpenRig commands without repeated permission prompts. Yes adds native
rigcommand rules at project scope, or user-wide if you choose, without granting general shell access.The scope, loading and revocation of these rules weren't yet verified in this release.
OpenRig 0.6.1
2 added5 fixed
Seats & restore 1
- Fixed
On machines not set to UTC, OpenRig compares an agent's activity against the real start of its session.
On hosts not set to UTC, identity and context-usage readers compare observations with the real start of a seat's generation.
Codex 3
- Fixed
OpenRig recognises when a Codex agent is at its conversation prompt and ready for input, including just after a dismissed hook-review panel.
Startup and resume checks recognize Codex's
»conversation prompt, including a fresh prompt after a dismissed hook-review panel. - Fixed
Codex agents with a custom status line are still recognised once their header has scrolled away.
A Codex conversation is recognized when its header has scrolled away and a custom status line puts the model name after other fields.
Recognition only; the separate stale restore warning in #116 isn't repaired here.
- Fixed
Codex agents can be launched from linked Git worktrees.
Codex fresh launches work from linked Git worktrees, resolving the worktree's Git directory instead of treating its
.gitfile as a directory.
CLI & hosts 1
You can open the execution view for any catalogued project by naming it, not only for the default workspace.
rig view show executionreads a catalogued project's execution view when you name its--projectand--mission.It doesn't infer the project from your current directory.
Context & skills 1
- Fixed
The bundled Vault skill loads cleanly, and shipped skills are checked for valid headers.
The bundled Vault skill has valid frontmatter, with a check for shipped skill headers.
Setup & platform 2
- Added
The help guide is written for your agent: ask it to run
rig context get helpand it works through environment checks, setup problems and permissions itself.One help path: ask your agent to read
rig context get helpfor environment checks, setup and restart symptoms, permissions, instance layout and escalation. Ifrigcan't run, the same guide is online at openrig.dev/help/agents. - Added
Every pull request now runs eight test jobs, including a scenario with a deliberately planted lost-work failure that the checker has to catch.
Pull requests now run eight test jobs, including an installed queue-durability scenario with a deliberately planted lost-baton failure that a checker must catch.
It doesn't certify every platform, provider or authenticated agent workflow.
OpenRig 0.6.0
5 added3 changed2 fixed
Seats & restore 1
- Added
Each agent in a team can run under its own audited permission level, such as a locked-down reviewer beside a builder with full bypass, set for its future launches.
Choose permissions per seat:
rig seat set-permissionsrecords an audited choice for that seat's future launches,floor,full_bypassorinherit. Claude modes such asautoare accepted only when the seat's Claude advertises them.Native enforcement across fresh launch, resume and fork wasn't verified. Status output doesn't prove a mode's effective permissions; check the running session.
Queue & messaging 2
- Added
You can work in an agent's terminal yourself while OpenRig holds that agent's automatic messages in an outbox, so nothing types over you.
A typing guard for seats where you type by hand. It pauses all automatic input to that seat and keeps messages and wakes in an outbox, which you read with
rig seat held-messages.It covers OpenRig's own input paths, not other tools writing directly to the terminal.
- Added
An optional, experimental classifier can label your agents' stream of observations, using Jev through OpenRouter. It's off unless you turn it on.
An optional classifier seat can have Jev, through OpenRouter, label Rig Stream observations. It's off by default and runs only when the classifier seat runs one foreground command.
Experimental. The labels are advisory, with no demonstrated accuracy, and nothing routes on them.
Codex 1
- Changed
Each Codex agent's tools run in its own app-server instead of one shared between agents.
Codex seats launch with
--no-daemonwhen the installed Codex supports it, so each seat's tools run in its own app-server instead of a shared one.
Pi 1
- Fixed
A seat outlives the agent sitting in it: OpenRig tracks which occupant holds a Pi seat and ignores activity reports from an earlier one.
Pi seat activity reports carry the seat's occupant generation, and reports from an earlier or foreign generation are refused instead of being attributed to the seat.
Activity reporting from an installed Pi seat wasn't verified end to end.
Slack 1
- Added
You can create OpenRig's Slack app in your own workspace from a manifest OpenRig prints offline, before any daemon or token exists.
rig slack manifestprints the Slack app manifest for the app you create in your own workspace, offline, before any daemon or token exists.--urlgives Slack's create-app link with the manifest filled in.Experimental. The setup steps haven't been confirmed against a real app creation.
TUI 1
- Added
One action in the TUI opens every running agent in a rig as tabs in Herdr.
Open a whole rig in Herdr from the TUI. Every running seat opens in a workspace named after the rig, up to 16 seats per tab.
Check that the rig opened as expected in your Herdr version.
CLI & hosts 1
- Fixed
Missions and slices created with
rig scopeno longer trip the readiness check when they have nometadatablock.Missions and slices created with
rig scopeno longer fail the readiness reader when their manifest has nometadatablock.
Setup & platform 2
- Changed
OpenRig moves to Node.js 22 or 24. If you're on Node 20, switch Node and reinstall; your data stays put and is upgraded in place.
OpenRig now requires Node.js 22 or 24 and uses better-sqlite3 13. Node 20 is refused with an explanation, and your data stays where it is: the daemon reopens the same database and applies pending migrations in place.
Node 26 and odd-numbered Node versions aren't supported or tested. On Apple silicon, use Node.js 22.
- Changed
The kernel starter tells you when it's showing a preview, that the runtime is picked for you, and which agents are actually running.
The kernel starter's summary says when it's showing the library preview, explains that the runtime is chosen automatically, and points to the seats actually running.