Brennan BensonandClaude Opus 5.5 dc7cd7bebb Hold queued follow-ups after an agent turn fails (#37181)
* Hold queued follow-ups after an accepted turn fails

* Hold queued follow-ups until a Resume follows the failure

A Resume written while a turn was still running (for example after a Stop
that could not end it) waived that turn's later failure, so one queued card
was sent into the failure. The newest-turn projection now remembers the
journal position where the newest turn first settled as failed, and only a
Resume written after that position releases the hold. After restore or
removal the position is the rebuild point, so an earlier Resume is not
credited. Nothing new is saved.

Publication now checks running work once and reads pending sends from the
input order's index instead of every saved submission, and the scaling test
counts every walk of the item map, including the ones drafts make.

* Give the forked-rewind test's replacement item its owner fence

The replacement item now carries ownerFence 0, the fence the failed turn was written under, so the test type-checks against the required field.

* Check only pending sends when deciding whether a held queue's pause shows

Sends recovered as unknown after a restart stay in the unsettled set forever, so every queue update while a failure or Stop pause showed walked all of them. The input order now also keeps the pending sends on their own, and the pause check reads that list. Both lists share one small cached index. A scaling test seeds recovered sends and confirms repeated publication reads none of them.

* Give the failed-queue scaling test's send rows the journal's own handle form

* Let a /compact that fails on its own terms leave the queue hold as it was

A queued /compact that Orca or the agent refuses, or that ends with its own
"compaction failed" verdict, no longer pauses the cards behind it, and no
longer lifts a pause an earlier failure set. A compaction that hits a usage
limit or the agent's own error still holds them, even when that row arrives
after the compaction ended. Continue after a usage limit now runs ahead of
the held cards; its test says so.

* Hold the queue on the failure beneath refused commands, whenever its evidence lands

The queue's failure hold now follows the newest turn that can decide it,
re-derived from the saved turns and failure rows instead of a number
remembered when a command arrived. A /compact that fails on its own terms
(Orca's refusal, Claude's or Codex's verdict, or an ACP agent's own
"compaction failed" row such as Grok's refusal) neither holds nor releases
the cards waiting behind it. A usage limit, sign-in or provider error on a
command still holds them, even when that row lands after a newer refused
command or before the command's own turn row. Fixing the failure beneath a
refused command now releases the hold, and ordinary failed turns without a
failure row (an ACP agent stopping at its token limit) still hold as before.

* Keep the failure hold's turns in creation order so each row updates only what it touches

The queue's failure hold used to walk every command since the last ordinary turn on each command or evidence row, and rebuilt from the whole history whenever one of those commands was removed. A long run of refused /compact commands, or rewinding them, made that work grow with the conversation.

Turns and context clears now sit in a balanced tree ordered by creation, with each subtree caching its newest turn, newest ordinary turn or clear, and newest turn that can decide the hold. Adding, revising or removing one costs a single root-to-leaf path, reads stay constant, and removals keep the same conservative boundary a rebuild gave, without rescanning. The cost contracts drive real isolated transactions at 100 and 1,000 commands and allow no history or projection walks.

* Count map walks in the failure-hold cost test with plain spies instead of Reflect

* Build the failure-hold tests' status rows with real failure words so they typecheck

The scaling test now words its usage-limit and refusal rows through the same failure-words helper the host uses, and the queued /compact test reads the command turn's item key from the identity it was handed instead of a field the run type does not declare.

* Re-flag only the waiting cards a queue pause can hold when the pause changes

A change in the queue's pause (a new or cleared failure, Resume, Stop, a
context clear or a reopen) used to rebuild the card index from every saved
card, withdrawn and sent history included. The index now keeps the set of
waiting cards with no per-card hold and, on a pause change, updates only those
whose flag actually changed; the other cards' summaries, the legacy domain
index and an unchanged clear list are kept. Held and actionable results are
unchanged.

* Keep an older direct send ahead of newer cards after a sent card settles

After a queued card was sent and accepted, its history was released, but
the card kept its old place in the index a direct send was ordered
against. A later Stop and chat close then recovered a newer queued card
ahead of the older direct send. A pause change now gives those cards the
same place a full rebuild did, visiting only cards changed since the last
pause change; cards placed by an earlier rebuild share one value that
moves with each pause change.

* Hold the queue on a failure at read time instead of rebuilding the card index

A failed turn holds every waiting card alike, so the card index no longer
rebuilds when a failure starts or ends. It keeps main's ordering, rebuilds only
on Stop, clear and reopen as main does, and hides the waiting card and command
from reads while a failure holds the queue. This removes the incremental
re-stamping layer, which reordered tied cards restored from an older build and
kept growing work and memory across pauses.

* Check that a held queue walks no card history during the fold, not only after it

The failed-queue card contract now warms the legacy domain, watches every Map the card index owns, and checks each ensure keeps its indexes and walks nothing. Across fold, adopt and read the canonical cards are walked exactly once per item row, the existing command-refusal scan, and never for a Resume.

* Read the card index fields in the failure-hold cost test directly instead of through Reflect

* Drop the two type casts from the queue failure cost test

* Hold orchestration messages that arrive while a failed turn holds the queue

A message from another agent arriving while the chat sat idle after a failed turn went straight to the agent, and if that turn succeeded it also released the person's held cards. Such a message now waits as a held card with the rest; the person's own send still recovers, and Resume or the card's Send delivers it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Update usage-limit continue tests for failure-held cards

The edited-card test now presses Resume after the limit failure, so its
card is resumed but edit-held and the continuation is still superseded.
A new test covers the continuation running ahead of a failure-held card,
which stays held during that turn and drains after it succeeds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Combine compact test imports after main merge

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-03 00:20:27 -08:00
2026-03-16 22:27:51 -07:00
2026-03-28 10:19:14 -07:00

Orca Orca

GitHub stars Total downloads across all releases License: MIT Join the Orca Discord Follow Orca on X Supported platforms: macOS, Windows, and Linux

中文 · 日本語 · 한국어 · Español · Français · Português · Türkçe · Русский

The AI Orchestrator for 100x builders.
Run Codex, ClaudeCode, OpenCode or Pi side-by-side — each in its own worktree, tracked in one place.

Download Orca

Orca desktop app running agents in parallel worktrees, with the Orca mobile companion app in the corner

Features

Mobile Companion

Monitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.

iOS App Store · Android APK · Docs →

Orca desktop with the mobile companion app

Parallel Worktrees

Fan one prompt across five agents, each in its own isolated git worktree — compare the results and merge the winner.

Docs →

Parallel worktree orchestration

Terminal Splits

Ghostty-class terminals with WebGL rendering, infinite splits, and scrollback that survives restarts.

Docs →

Terminal splits

Design Mode

Click any UI element in a real Chromium window to send its HTML, CSS, and a cropped screenshot straight into your agent's prompt.

Docs →

Embedded browser and Design Mode

GitHub & Linear, Native

Browse PRs, issues, and project boards in-app — open a worktree from any task and review without a context switch.

Docs →

GitHub and Linear task workflows in Orca

SSH Worktrees

Run agents on a beefy remote box with full file editing, git, and terminals — auto-reconnect and port forwarding included.

Docs →

Remote worktrees over SSH

Annotate AI Diffs

Drop comments on any diff line and ship them back to the agent — review, edit, and commit without leaving Orca.

Docs →

Annotate AI-generated diffs

Drag Files to Agents

VS Code's editor with autosave everywhere — drag files or images straight into an agent prompt.

Docs →

Drag files and images into an agent prompt

Orca CLI

Agents drive Orca too — script every workflow with orca worktree create, snapshot, click, and fill.

Docs →

Script Orca from the CLI

Also in the box:

  • Quick open — Search across worktrees, files, agents, commands, and repo context without leaving your flow.
  • Account switcher & usage tracking — See Claude and Codex usage and rate-limit resets, and hot-swap accounts without re-logging in.
  • Rich repo previews — Preview Markdown, images, PDFs, and repo docs in the workspace.
  • Computer Use — Let agents operate desktop apps and visible UI when a workflow needs real interaction.
  • Notifications and unread state — Know when an agent finishes or needs attention, then mark threads unread to come back later.
  • And many, many more — we ship daily, so this list is perpetually behind. The changelog is the real feature list.

Supported Agents

Works with any CLI agent — if it runs in a terminal, it runs in Orca.

Claude Code logo Claude Code   Codex logo Codex   Grok logo Grok   Cursor logo Cursor   GitHub Copilot logo GitHub Copilot   Muse logo Muse   DeepSeek Harness logo DeepSeek Harness   ZCode logo ZCode   OpenCode logo OpenCode   MiMo Code logo MiMo Code   Amp logo Amp   OpenClaude logo OpenClaude   Antigravity logo Antigravity   Pi logo Pi   oh-my-pi logo oh-my-pi   Hermes Agent logo Hermes Agent   Devin logo Devin   Goose logo Goose   Auggie logo Auggie   Autohand Code logo Autohand Code   Charm logo Charm   Cline logo Cline   CodeBuddy logo CodeBuddy   Codebuff logo Codebuff   Freebuff logo Freebuff   Command Code logo Command Code   Continue logo Continue   Droid logo Droid   Kilocode logo Kilocode   Kimi logo Kimi   Kiro logo Kiro   Mistral Vibe logo Mistral Vibe   Qwen Code logo Qwen Code   Rovo Dev logo Rovo Dev   + any CLI agent


Install

Desktop — macOS, Windows, Linux

Or via a package manager:

# macOS (Homebrew)
# Always use the full name; bare `orca` is an unrelated Plotly cask.
brew install --cask stablyai/orca/orca
# Upgrade an existing install
brew upgrade --cask stablyai/orca/orca

# Arch Linux (AUR) — or stably-orca-git to build from source
yay -S stably-orca-bin

Mobile Companion — iOS, Android

Pair with your desktop app to monitor and steer your agents from your phone.


Community & Support

  • Discord: Join the community on Discord.

  • Twitter / X: Follow @orca_build for updates and announcements.

  • WeChat: Scan to join the Orca community WeChat group.

    WeChat QR code for the Orca community
  • Feedback & Ideas: We ship fast. Missing something? Request a new feature.

  • Privacy: See the privacy & telemetry docs for what anonymous usage data Orca collects and how to opt out.

  • Show Support: Star this repo to follow along with our daily ships.


Developing

Want to contribute or run locally? See our CONTRIBUTING.md guide.

The relay that pairs the mobile app with a desktop host is also in this repository under cloud/, with a separate pnpm workspace and setup guide.

Orca contributors

GitHub star history chart for stablyai/orca

Signed Builds

Windows code signing sponsored/provided by SignPath.io, certificate by SignPath Foundation.

License

Orca is free and open source under the MIT License.

S
Description
Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.
Readme MIT
2.9 GiB
Languages
TypeScript 95.5%
JavaScript 3.4%
Swift 0.3%
Python 0.2%
CSS 0.2%
Other 0.1%