* Fix new workspace composer focus restore * Unify new workspace source selection * WIP: selected source pill in smart workspace name field Co-authored-by: Orca <help@stably.ai> * fix(new-workspace): truncate source pill so it doesn't expand the dialog Co-authored-by: Orca <help@stably.ai> * feat(new-workspace): add open-in-browser button to source pill, fix vertical alignment Co-authored-by: Orca <help@stably.ai> * refactor(new-workspace): drop redundant kind suffix, distinct PR/issue icons, tooltips on pill actions Co-authored-by: Orca <help@stably.ai> * fix(new-workspace): type linked URL into agent input without auto-submit Co-authored-by: Orca <help@stably.ai> * fix(new-workspace): use bracketed-paste for draft URL injection so it actually appears in the agent input Co-authored-by: Orca <help@stably.ai> * feat(agents): per-agent draft injection strategy (codex slow paste, pi/opencode type-chars) Co-authored-by: Orca <help@stably.ai> * fix(agents): smarter TUI-ready heuristic + bracketed paste for codex/pi/opencode Replaces per-agent strategy guesswork with a measured readiness check: title-idle / non-shell-foreground stable for 1.5s / 2.5s minimum floor. Verified against codex, pi, opencode, claude in a node-pty + xterm-headless test rig — bracketed paste lands in the input buffer for all four. Co-authored-by: Orca <help@stably.ai> * refactor(agents): drop unused per-agent draft strategy abstraction The TUI-ready heuristic in agent-paste-draft.ts works for every tested agent (claude/codex/pi/opencode), so the AgentDraftInjectionStrategy field, type-chars + bracketed-paste-slow code paths, and per-agent overrides are dead. Keep the `agent` arg on pasteDraftWhenAgentReady for future per-agent escape hatches without touching every call site. Co-authored-by: Orca <help@stably.ai> * feat(agents): skip draft URL injection for copilot + cursor-agent Both TUIs open with a 'Do you trust this folder?' menu on first launch that consumes keystrokes as menu input — pasting a URL there either selects an arbitrary option or quits the session. Mark them with skipDraftUrlInjection so the workspace still opens cleanly; the user types/pastes the URL themselves once past the trust menu. Co-authored-by: Orca <help@stably.ai> * feat(agents): native --prefill for claude, trust pre-write for cursor/copilot Replaces the empirical TUI-ready waits with two deterministic mechanisms: 1) `claude --prefill <text>` flag — Claude launches with the URL already in its input box, no submit. Eliminates the readiness/paste race entirely for the most common agent. 2) DECSET 2004 (`\x1b[?2004h`) detection on the PTY data stream for every other agent. That escape is the protocol-level "input layer ready, accepting bracketed paste" handshake — emitted by claude/codex/pi/ opencode/gemini/cursor-agent/copilot the moment the input box mounts. We tap it via a sidecar subscription on pty-dispatcher (no interference with the primary xterm handler) and paste as soon as it lands. The 8s budget is now an upper bound, not a target. Cursor-agent and Copilot's "Do you trust this folder?" menus are bypassed by writing the same trust artifacts the CLIs themselves write after the user accepts: - Cursor: `~/.cursor/projects/<slug>/.workspace-trusted` (slug = abs path with leading `/` stripped, remaining `/` → `-`). - Copilot: append cwd to `trustedFolders` in `~/.copilot/config.json` (the same array the bundled `addTrustedFolder` writes). Verified against the cursor-agent CLI bundle (versions/2026.04.17-787b533/ index.js: `_=".workspace-trusted"`) and the @github/copilot 1.0.32 bundle (`isFolderTrusted` / `addTrustedFolder` both read/write `trustedFolders`). Both check via realpath() before string-comparing, so the trust preset canonicalizes too. skipDraftUrlInjection is dropped — both agents now get the draft URL paste once the trust menu is pre-resolved. Tests: 24 passing across tui-agent-startup, agent-trust-presets, pty-dispatcher routing. Co-authored-by: Orca <help@stably.ai> * fix(agents): wait for post-?2004h render burst to settle before paste OpenCode emits DECSET 2004 at ~500ms during alt-screen setup, then runs a 1.3s splash render with NO bytes on the PTY, then paints the actual input box at ~1.85s. Pasting on the bare ?2004h signal lands during the silent gap and the bytes are dropped. The fix: take ?2004h as the necessary precondition, then wait for the TUI's render burst to finish — defined as 1500ms of stream silence after the most recent post-?2004h byte. This captures both the fast TUIs (claude/pi/codex emit setup escapes in one burst then go quiet) and the slow ones (opencode emits, sleeps for the splash, emits again, then goes quiet). Verified against opencode/claude/pi in a node-pty rig: paste lands on the first try with the new strategy. The hard 8s timeout still caps the wait when an agent fails to launch. Co-authored-by: Orca <help@stably.ai> * fix(agents): guard agentTrust IPC so stale preload doesn't crash launch If the preload bundle is older than the renderer (a real situation in electron-vite dev because preload changes only apply on full restart, not HMR), `window.api.agentTrust` is undefined and the launch crashes with "Cannot read properties of undefined (reading 'markTrusted')" before the worktree even opens. Guard the call sites in launch-work-item-direct and useComposerState to skip the trust pre-write when the IPC isn't exposed, and wrap the invoke in try/catch so an IPC error never blocks the launch — the user just sees the trust menu and accepts it manually, same as before this feature shipped. Co-authored-by: Orca <help@stably.ai> * feat(tasks): route 'Use' through the New Workspace dialog instead of yolo-create The Use CTA on the Tasks page used to create+activate a worktree synchronously, which surprised users — the worktree appeared in the sidebar before they had a chance to confirm name / agent / setup. The unified New Workspace dialog landed in this branch already supports opening with a linked work item pre-filled (see openComposerForItem / openComposerForLinearItem), so just route Use through it. The launchWorkItemDirect helper stays exported for ProjectViewWrapper, which has its own UX where the immediate-create flow is the right call. Co-authored-by: Orca <help@stably.ai> * test(agents): include `agent` field in autohand startup-plan assertion Merging main brought in the Autohand Code agent test (PR #1382), which predated this branch's addition of `agent` to AgentStartupPlan. Aligning the assertion fixes the lone CI test failure on this PR. Co-authored-by: Orca <help@stably.ai> * refactor(agents): drop unused expectedProcess arg + snapshot sidecar set Two minor follow-ups from self-review: 1. `pasteDraftWhenAgentReady` no longer reads `expectedProcess` — readiness is gated on DECSET 2004 alone now, not on PTY foreground process. Drop it from the signature and from the two callers (launch-work-item-direct, new-workspace). 2. The pty-dispatcher's sidecar fan-out iterates the live Set, which is safe against deleting the current element but not against a watcher that synchronously subscribes a sibling. Snapshot via Array.from before the loop. Cheap (Set is tiny) and removes the latent footgun. No behavior change. Co-authored-by: Orca <help@stably.ai> * test(e2e): match the unified smart-name input's new placeholder The CreateFromTab refactor in this branch replaced the separate "Workspace name" Input with a single SmartWorkspaceNameField whose default-mode placeholder is "Type a name, #1234, branch, GitHub or Linear URL". The worktree-create e2e test was still anchoring on the old "Workspace name" text and could not find the input. Update the placeholder regex to match the new copy. Free-form text typed into smart mode is treated as a workspace name by submitQuick — same contract the test used before. Verified locally: targeted e2e passes in 2.2s. Co-authored-by: Orca <help@stably.ai> --------- Co-authored-by: Orca <help@stably.ai>
Orca
The AI Orchestrator for 100x builders.
Run Claude Code, Codex, or OpenCode side-by-side across repos — each in its own worktree, tracked in one place.
Available for macOS, Windows, and Linux.
Supported Agents
Orca supports any CLI agent (not just this list).
Claude Code
Codex
Gemini
Pi
Hermes Agent
OpenCode
Goose
Amp
Auggie
Autohand Code
Charm
Cline
Codebuff
Continue
Cursor
Droid
GitHub Copilot
Kilocode
Kimi
Kiro
Mistral Vibe
Qwen Code
Rovo Dev
Features
- No login required — Bring your own Claude Code or Codex subscription.
- Worktree-native — Every feature gets its own worktree. No stashing, no branch juggling. Spin up and switch instantly.
- Multi-agent terminals — Run multiple AI agents side-by-side in tabs and panes. See which ones are active at a glance.
- Built-in source control — Review AI-generated diffs, make quick edits, and commit without leaving Orca.
- GitHub integration — PRs, issues, and Actions checks linked to each worktree automatically.
- SSH support — Connect to remote machines and run agents on them directly from Orca.
- Notifications — Know when an agent finishes or needs attention. Mark threads unread to come back later.
Install
Mac, Linux, Windows
Alternatively, install from a package manager:
macOS (Homebrew)
brew install --cask stablyai/orca/orca
Arch Linux (AUR)
# Precompiled binary
yay -S stably-orca-bin
# Build from GitHub source
yay -S stably-orca-git
[New] Annotate AI Diff
Comment directly on AI-generated diffs.
Annotate any line in an AI-generated diff with your feedback, then send it back to the agent to revise. Keep the review loop tight — no copying line numbers, no context switching.
[New] Hot Swap Codex Accounts
Multiple Codex accounts? Switch in one click.
If you run multiple Codex accounts to get the best token deal, Orca lets you hot-swap between them instantly — no re-login, no config files. Just pick an account and keep building.
[New] Per Worktree Browser & Design Mode
See your app. Click any element. Drop it into the chat.
Orca ships with a built-in browser right inside your worktree. Preview your app as you build, then switch to Design Mode — click any UI element and it lands directly in your AI chat as context. No screenshots, no copy-pasting selectors. Just point at what you want to change and tell the agent what to do.
[New] Introducing the Orca CLI
Agent orchestration from your terminal.
Let your AI agent control your IDE. Use AI to add projects to your IDE, spin up worktrees, and update the current worktree's comment with meaningful progress checkpoints directly from the terminal. Ships with the Orca IDE (install under Settings).
npx skills add https://github.com/stablyai/orca --skill orca-cli
Community & Support
- Discord: Join the community on Discord.
- Twitter / X: Follow @orca_build for updates and announcements.
- 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.



