Skip to content
STACK IT FAST

Orca

Curated OSSHybridAgentic Development Environment for Parallel Coding Agents6-20 people

Audited from github.com/stablyai/orca

Orca is an open-source agentic development environment (ADE) for running Claude Code, Codex, OpenCode or Pi side by side, each in its own git worktree and terminal. It ships as an Electron desktop app with a mobile companion and a cloud relay.

Language
TypeScript
Database
PostgreSQL
Hosting
Google Cloud
License
MIT
Running for
6 months
Team
6-20 people

Why this architecture

Agent CLIs stay the user's own. Orca adds the orchestration layer around them: isolated git worktrees, a PTY daemon that outlives the UI, and a relay for mobile steering. It can support new agents without bundling them.

Tech stack by layer

17 technologies · audited Sep 25, 2026
Frontend & UI
  • ElectronDesktop shell for macOS, Windows and Linux built with electron-vite and electron-builder
  • ReactRenderer UI (src/renderer) for worktrees, terminals and agent panes, audited with react-doctor
  • ZustandRenderer state stores, with a selector fan-out benchmark enforced as a check
  • ViteBundler for the renderer and a browser build of the UI (vite.web.config.ts)
  • ExpoiOS and Android companion app (Expo Router, xterm webview, notifications) released with fastlane
Backend & APIs
  • Node.jsElectron main process, the orca CLI (src/cli) and the orcad runtime daemon that hosts PTYs
  • node-ptyNative pseudo-terminals for each agent session (built during install)
  • HonoHTTP layer of the cloud relay and push services in cloud/apps
Data & Persistence
  • PostgreSQLRelay and push state accessed with pg, with shared schema in cloud/packages/postgres-schema
Infrastructure & Deploy
  • TerraformInfrastructure as code for the relay under cloud/infra, also bundled into the fence-broker image
  • Google CloudRelay deploy target (Cloud SQL, GCE candidates) driven by many cloud-* workflows
  • DockerContainer images for relay, push and fence-broker plus daemon lifecycle test images
  • VitestUnit, contract and performance-contract tests (config/vitest.config.ts)
  • PlaywrightEnd-to-end desktop and packaged-browser tests in tests/e2e
  • GitHub Actions60+ workflows for PR checks, per-OS builds, mobile releases and relay operations
Tooling, Testing & Ops
  • Claude Agent SDKDrives Claude Code sessions using the user's own installed Claude CLI binary
  • Git worktreesEach agent runs in its own isolated git worktree so parallel attempts can be compared and merged

Orca architecture diagram

Open SVG
Orca architecture diagramDesktop app → orcad (terminals); Mobile companion → Cloud relay (sync); Desktop app → Cloud relay (sync); orcad → Agent sessions (PTYs); Agent sessions → Agent CLIs (run); Cloud relay → PostgreSQL (pg)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEEXTERNALDesktop appElectron · ReactMobile companionExpoorcadNode.js · node-ptyCloud relayHonoAgent sessionsone git worktree eachPostgreSQLrelay · push stateAgent CLIsClaude Code · your ownterminalssyncsyncPTYsrunpg
How the main components of Orca connect, drawn from the audited repository.
Diagram as text
  • Desktop app (Electron · React) → orcad (Node.js · node-pty): terminals
  • Mobile companion (Expo) → Cloud relay (Hono): sync
  • Desktop app (Electron · React) → Cloud relay (Hono): sync
  • orcad (Node.js · node-pty) → Agent sessions (one git worktree each): PTYs
  • Agent sessions (one git worktree each) → Agent CLIs (Claude Code · your own): run
  • Cloud relay (Hono) → PostgreSQL (relay · push state): pg

Key architectural decisions

5 decisions
  1. 01

    One git worktree per agent, orchestrated from one desktop app

    The README and skill-guides/orchestration.md describe fanning one prompt across several agents (Claude Code, Codex, OpenCode, Pi), each in its own isolated git worktree, then comparing results and merging the winner.

  2. 02

    Bring-your-own agent CLIs instead of bundling them

    pnpm-workspace.yaml lists every @anthropic-ai/claude-agent-sdk platform binary under ignoredOptionalDependencies, so Orca always launches the user's own resolved Claude CLI instead of shipping about 95 MB per platform.

  3. 03

    A separate runtime daemon hosts terminals

    build:orcad and the smoke:orcad-terminal script build a daemon (orcad) that owns the node-pty sessions, and config/docker has test images for daemon scope, lifetime and shutdown of descendant processes, so terminals survive UI restarts and updates.

  4. 04

    Cloud relay for the mobile companion, on its own pnpm workspace

    cloud/ is a separate pnpm workspace with relay, push, relay-ops and relay-fence-broker apps (Hono, pg, ws, tweetnacl, jose), deployed to Google Cloud with Terraform through dozens of cloud-deploy/monitor/operate workflows.

  5. 05

    Lint ratchets and reliability gates as policy

    package.json lint chains oxlint configs (anti-slop, type-aware, design-system, dead classes) with ratchet checks on max lines, ts-nocheck and runtime-electron baselines stored in config/*-baseline.txt, plus config/reliability-gates.jsonc.

How Orca is built

How Orca is structured

Orca's repository holds three separately installed projects:

  • Desktop app (root): src/main (Electron main process), src/preload, src/renderer (React UI), src/cli (the orca binary, bin.orca in package.json), src/relay and src/shared. The build is configured in electron.vite.config.ts, vite.web.config.ts and config/electron-builder.config.cjs. The root pnpm-workspace.yaml only links native/windows-registry.
  • mobile/: an Expo app with its own pnpm-workspace.yaml, lockfile and fastlane setup.
  • cloud/: a pnpm workspace with apps/relay, apps/push, apps/relay-ops, apps/relay-fence-broker, shared contract packages and infra/.

native/ contains platform code for computer use (macOS, Linux, Windows), macOS keyboard layout and notification status, a Windows CLI launcher and a registry reader. This is why the language stats include Swift, C++, C# and PowerShell. skills/, skill-guides/ and skill-stubs/ hold agent skills bundled with the app, and Casks/ holds the Homebrew casks.

Frontend

The renderer is React with Zustand state, bundled by Vite through electron-vite. shadcn is configured in components.json. React quality is enforced with react-doctor and a dedicated oxlint config, and design-system rules have their own lint config (config/oxlint-design-system.json). The same UI can be served in a browser with dev:web for development. Localization has its own verification scripts and a coverage allowlist in config/.

Backend & APIs

Inside the desktop app, the Electron main process and the orcad daemon own the heavy work:

  • PTYs through node-pty, compiled natively at install time (allowBuilds in pnpm-workspace.yaml),
  • git worktree management per agent,
  • an RPC layer whose parameter catalog is generated and verified (generate:rpc-params-catalog),
  • skill installation and sharing (src/main/skills).

The cloud services are small Hono apps on Node 24. relay uses ws for live connections, jose for tokens and tweetnacl for encryption. push sends mobile notifications with google-auth-library. relay-fence-broker wraps Terraform and the gcloud CLI for controlled infrastructure changes.

Data & persistence

Desktop state is stored locally. No embedded database appears in the audited manifests. Cloud state lives in PostgreSQL, accessed with pg, and the schema is shared through cloud/packages/postgres-schema. Workflow names such as production-cloud-sql-rollout-lock and the Cloud SQL connection-budget scripts in cloud/package.json point to Google Cloud SQL.

Build, test & deploy

  • Tests: Vitest (config/vitest.config.ts, plus config/vitest.performance.config.ts for performance contracts) and Playwright (tests/playwright.config.ts).
  • Lint: oxlint with several configs, oxfmt for formatting, and husky pre-commit hooks.
  • GitHub Actions: 60+ workflows. They cover PR checks, hourly, daily and release macOS builds, Windows update and crash-survival end-to-end tests, Linux Wayland GPU sandbox tests, iOS and Android releases, Homebrew bumps, and many cloud-* workflows that deploy, monitor and operate the relay across regions.
  • Docker images are built for the cloud apps and for daemon lifecycle tests under config/docker/.

Self-hosting notes

The desktop app is downloaded per OS or installed with Homebrew (Casks/orca.rb). Contributors need pnpm and a native toolchain for node-pty and the platform modules (build:native). Self-hosting the relay is possible with the cloud/ workspace, Terraform and Google Cloud. cloud/README.md documents that setup.

What to copy (and what not to)

What to copy

  • Leaving agent binaries out and running whatever the user has installed. It keeps the app small and agent-agnostic.
  • Running terminals in a daemon separate from the UI process, with Docker-based tests for process lifetime.
  • Ratchet files (max-lines-baseline.txt, ts-nocheck-baseline.txt) that stop code quality from regressing without forcing a big-bang cleanup.

What not to copy

  • With 60+ workflows, many of them for relay operations, CI becomes an operations console. A small team should keep deployment runbooks outside the product repository's CI.
  • Three separately locked pnpm projects in one repository avoid dependency conflicts but triple the dependency upkeep.

Sources & repo audit

Audited
Sep 25, 2026
Commit
646e9a5
License
MIT

Independent analysis of repository at github.com/stablyai/orca. Spotted an inaccuracy? Use the claim form to request a correction.

Maintainer? Add the architecture badge to your README
architecture: stackitfast
[![Architecture on STACK IT FAST](https://stackitfast.com/badge/orca.svg)](https://stackitfast.com/project/orca)
Use this stack

Scaffold it with your agent

Paste this prompt into Claude Code, Cursor, Windsurf or AGY to start a project with Orca's architecture.

  1. 1Copy the promptThe full markdown spec, with every layer and decision.
  2. 2Open your AI toolClaude Code, Cursor, Windsurf or Copilot, in a new repo.
  3. 3Paste and scaffoldUse it as the first instruction; review before you ship.
use-this-stack.md · 60 lines · 7.4 KB
# MISSION: Scaffold "Orca" Production Architecture
You are an expert Senior Staff Software Architect and Full-Stack Engineer. Your mission is to scaffold and implement a production-grade, highly reliable, and modular codebase following the proven architecture of **Orca**.
---
## 1. PROJECT SPECIFICATIONS & BENCHMARK
- **Reference Architecture**: Orca
- **What It Does**: Orca is an open-source agentic development environment (ADE) for running Claude Code, Codex, OpenCode or Pi side by side, each in its own git worktree and terminal. It ships as an Electron desktop app with a mobile companion and a cloud relay.
- **Domain & Category**: Agentic Development Environment for Parallel Coding Agents
- **Production Scale**: 6-20 people
- **Development Mode**: HYBRID
- **Architectural Rationale**: Agent CLIs stay the user's own. Orca adds the orchestration layer around them: isolated git worktrees, a PTY daemon that outlives the UI, and a relay for mobile steering. It can support new agents without bundling them.
- **Live Website Reference**: https://onOrca.dev
- **Source Repository**: https://github.com/stablyai/orca
---
## 2. PRODUCTION TECH STACK
- **Full Stack Array**: TypeScript, Electron, React, Zustand, Vite, Node.js, Expo, React Native, Hono, PostgreSQL, Terraform, Google Cloud, Docker, Vitest, Playwright, pnpm, GitHub Actions
- **Primary Language(s)**: TypeScript, JavaScript, Swift, CSS, HCL, Kotlin
- **License of the reference repo**: MIT
- **Frontend**: Electron — Desktop shell for macOS, Windows and Linux built with electron-vite and electron-builder; React — Renderer UI (src/renderer) for worktrees, terminals and agent panes, audited with react-doctor; Zustand — Renderer state stores, with a selector fan-out benchmark enforced as a check; Vite — Bundler for the renderer and a browser build of the UI (vite.web.config.ts); Expo — iOS and Android companion app (Expo Router, xterm webview, notifications) released with fastlane
- **Backend & APIs**: Node.js — Electron main process, the orca CLI (src/cli) and the orcad runtime daemon that hosts PTYs; node-pty — Native pseudo-terminals for each agent session (built during install); Hono — HTTP layer of the cloud relay and push services in cloud/apps
- **Data & persistence**: PostgreSQL — Relay and push state accessed with pg, with shared schema in cloud/packages/postgres-schema
- **Infrastructure & deploy**: Terraform — Infrastructure as code for the relay under cloud/infra, also bundled into the fence-broker image; Google Cloud — Relay deploy target (Cloud SQL, GCE candidates) driven by many cloud-* workflows; Docker — Container images for relay, push and fence-broker plus daemon lifecycle test images; Vitest — Unit, contract and performance-contract tests (config/vitest.config.ts); Playwright — End-to-end desktop and packaged-browser tests in tests/e2e; GitHub Actions — 60+ workflows for PR checks, per-OS builds, mobile releases and relay operations
- **Tooling, testing & ops**: Claude Agent SDK — Drives Claude Code sessions using the user's own installed Claude CLI binary; Git worktrees — Each agent runs in its own isolated git worktree so parallel attempts can be compared and merged
---
## 3. KEY ARCHITECTURAL DECISIONS (audited from https://github.com/stablyai/orca @ 646e9a5)
1. **One git worktree per agent, orchestrated from one desktop app**: The README and skill-guides/orchestration.md describe fanning one prompt across several agents (Claude Code, Codex, OpenCode, Pi), each in its own isolated git worktree, then comparing results and merging the winner.
2. **Bring-your-own agent CLIs instead of bundling them**: pnpm-workspace.yaml lists every @anthropic-ai/claude-agent-sdk platform binary under ignoredOptionalDependencies, so Orca always launches the user's own resolved Claude CLI instead of shipping about 95 MB per platform.
3. **A separate runtime daemon hosts terminals**: build:orcad and the smoke:orcad-terminal script build a daemon (orcad) that owns the node-pty sessions, and config/docker has test images for daemon scope, lifetime and shutdown of descendant processes, so terminals survive UI restarts and updates.
4. **Cloud relay for the mobile companion, on its own pnpm workspace**: cloud/ is a separate pnpm workspace with relay, push, relay-ops and relay-fence-broker apps (Hono, pg, ws, tweetnacl, jose), deployed to Google Cloud with Terraform through dozens of cloud-deploy/monitor/operate workflows.
5. **Lint ratchets and reliability gates as policy**: package.json lint chains oxlint configs (anti-slop, type-aware, design-system, dead classes) with ratchet checks on max lines, ts-nocheck and runtime-electron baselines stored in config/*-baseline.txt, plus config/reliability-gates.jsonc.
---
## 4. NON-NEGOTIABLE ARCHITECTURAL GUARDRAILS
1. **Monorepo & Modular Separation**:
   - Structure as a Turborepo monorepo with strict package boundaries:
     - `apps/web`: Application UI, routing, layouts, and server endpoints.
     - `packages/ui`: Shared design tokens, CSS variables, and Radix UI primitive components.
     - `packages/db`: Database schemas, client singleton, declarative migrations, and seed scripts.
     - `packages/config`: Shared TypeScript, ESLint, and build configurations.
2. **Strict Type Safety & Zero `any` Policy**:
   - Enable `strict: true`, `noImplicitAny: true`, and `strictNullChecks: true`.
   - Validate ALL external inputs, API request bodies, and query parameters with **Zod** schemas before execution.
3. **Frontend & Rendering Guidelines**:
   - Utilize Vite 6 with TanStack Router for fully type-safe routing. Manage server state and caching via TanStack Query v5 with optimistic UI updates.
4. **Design System & Aesthetics**:
   - Keep every color, radius, shadow and font in a single token file (CSS variables) and consume tokens everywhere; never hardcode hex values in components.
   - Prefer crisp 1px borders and one subtle shadow scale over blurry default shadows. Pair one sans-serif for body/headings with one monospace for tags, badges, metrics, and code.
5. **Data Layer & Reliability**:
   - Write declarative schema definitions with foreign keys, composite indexes on queried filters, and automated timestamp triggers.
   - Use connection pooling and prepared statements for serverless database execution.
---
## 5. STEP-BY-STEP SCAFFOLDING ROADMAP
- **Phase 1: Workspace & Root Config**: Initialize package manager, monorepo configuration (`turbo.json`, `tsconfig.base.json`, `package.json`).
- **Phase 2: Database Schema & Client**: Set up the data layer (PostgreSQL): client, connection pool, models, and migration scripts.
- **Phase 3: Design Tokens & UI Primitives**: Build accessible `Button`, `Input`, `Card`, `Badge`, and layout wrappers inside `packages/ui`.
- **Phase 4: Core Application Routes & Handlers**: Implement primary authentication, user session handling, and application routes.
- **Phase 5: Quality Assurance & Build Verification**: Run `tsc --noEmit`, ESLint, Prettier, and smoke test suites to ensure zero compilation or runtime errors.
---
## 6. EXECUTION INSTRUCTIONS
1. Review all specifications, architectural guardrails, and stack choices above.
2. Present the full monorepo directory tree structure.
3. Systematically generate the complete, production-ready codebase according to the 5-phase roadmap above — starting with the root workspace setup, followed by the database schema, UI design system package, and full-stack application routes until the repository is fully scaffolded and ready to run.
Scaffolded something with this prompt?
Would you pick this stack for a agentic development environment for parallel coding agents project?

Copied 1 time · 1 of 1 reported launches succeeded (100%)

Frequently asked about Orca

What is Orca built with?

Orca is a TypeScript Electron desktop app with a React renderer using Zustand and Vite. Terminals run on node-pty inside a separate orcad daemon. A companion mobile app is built with Expo, and a cloud relay runs on Hono and PostgreSQL on Google Cloud, provisioned with Terraform.

How does Orca run several coding agents in parallel?

Each agent (for example Claude Code, Codex, OpenCode or Pi) runs in its own git worktree with its own terminal, so several attempts at the same task proceed in isolation and the best result can be merged.

Does Orca include its own AI models?

No. Orca orchestrates agent CLIs the user already has installed, and it deliberately excludes the Claude Agent SDK's bundled CLI binaries so it always runs the user's own Claude installation.

Is there a mobile app for Orca?

Yes. The mobile/ workspace contains an Expo app for iOS and Android that monitors agents, sends notifications when they finish and accepts follow-up prompts, connected through Orca's cloud relay.

One email a month: new deep dives and stack trends

New source-audited architectures, head-to-head comparisons and the monthly stack report. No spam, unsubscribe anytime.

use-this-stack.md