* docs(spec): auto-update with stable + nightly channels Design spec for channel-aware auto-update via electron-updater: stable (manual semver releases) and nightly (daily CI cron, version X.Y.(Z+1)-nightly.<UTC-ts>+<sha>). Covers runtime wiring, the feed, the version scheme and its ordering/channel rationale, the nightly pipeline, in-app UX (opt-in + channel + nightly disclaimer), error handling, testing, and the deferred/prereq items (CI signing for macOS updates, stable version stamping, polished UI in #2207). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(plan): auto-update channels implementation plan Bite-sized TDD plan for the in-app channel-aware updater + nightly pipeline: nightly version compute module, daily cron workflow, macOS feed metadata, ~/.ao update-settings module, electron-updater shell + main.ts wiring, and the first-run opt-in/channel/nightly-disclaimer prompt. Deferred items and Track-B prereqs (CI signing, stable stamping) are called out. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(release): nightly version compute module computeNightlyVersion -> X.Y.(Z+1)-nightly.<UTC-ts>+<sha>: next-patch base, fixed-width UTC timestamp for monotonic prerelease ordering, sha as build metadata. Pure ESM so CI runs it and vitest tests it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(release): daily nightly build + publish workflow Cron computes the nightly version from the latest stable tag, stamps it, builds all platforms, and publishes a prerelease (nightly channel). Skips when HEAD is already covered by the latest nightly. forge publisher prerelease flag is now env-driven (AO_RELEASE_PRERELEASE) so stable stays non-prerelease. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(release): pass nightly version via env, not inline interpolation Avoids interpolating ${{ }} into the run script (GitHub Actions injection hardening); the version now arrives via the NIGHTLY_VERSION env var. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): persist auto-update settings under ~/.ao readUpdateSettings/writeUpdateSettings store {enabled, channel, nightlyAck} with safe defaults and channel coercion, atomic temp+rename like app-state.ts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): channel-aware electron-updater wiring Replace update-electron-app (stable-only, no channels) with electron-updater driven by the user's ~/.ao settings: channel from settings, allowDowngrade for channel switches, auto-download gated on opt-in, errors swallowed. Feed configured via setFeedURL since forge does not emit app-update.yml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * style(update): tabs in auto-updater.ts to match repo prettier config Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): first-run opt-in + channel + nightly disclaimer prompt Minimal main-process dialog flow: opt into auto-updates, pick stable/nightly, and acknowledge a nightly instability/data-loss disclaimer. Persists the choice to ~/.ao. Polished Settings-page selector is tracked in #2207. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(spec): correct feed-yml premise (no platform emits it as built) Final review verified that publish:null in both custom makers makes electron-builder skip update-info yml generation on Windows and Linux too (app-builder-lib PublishManager returns early before createUpdateInfoTasks), not just signing-blocked macOS. The runtime updater is therefore inert on all platforms until a separate feed-publishing workstream (yml gen+upload across all 3 platforms, coupled to Track-B signing) lands. Recorded in the Feed section and the prerequisites table. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(release): nightly skip-guard must match the v<version> tag namespace The forge publisher tags nightly releases v<version> (e.g. v0.10.4-nightly.<ts>), not desktop-v..., so the no-new-commits guard queried a namespace that never exists and never fired. Query v*-nightly.* instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore: format with prettier [skip ci] * chore(release): run nightly at 19:00 IST (13:30 UTC) Was 03:00 UTC (08:30 AM IST); move to 13:30 UTC = 7:00 PM IST. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|---|---|---|
| .github/workflows | ||
| backend | ||
| docs | ||
| frontend | ||
| packages | ||
| screenshots | ||
| scripts | ||
| skills/bug-triage | ||
| test/cli | ||
| .envrc | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| DESIGN.md | ||
| README.md | ||
| ao-dashboard-preview.png | ||
| ao-logo.svg | ||
| flake.lock | ||
| flake.nix | ||
| package-lock.json | ||
| package.json | ||
README.md
Agent Orchestrator
The orchestration layer for parallel AI coding agents
An Agentic IDE that supervises parallel AI coding agents in isolated workspaces, with complete control and automatic feedback loops from CI failures, review comments, and merge conflicts.
See AO in Action (before the re-write)
![]() Visit |
![]() Visit |
![]() Visit |
![]() Visit |
Features • Quick Start • Architecture • Documentation • Contributing
Features
| Feature | Description |
|---|---|
| Agent-Agnostic Platform | 23+ agent adapters including Claude Code, OpenAI Codex, Cursor, OpenCode, Aider, Amp, Goose, GitHub Copilot, Grok, Qwen Code, Kimi Code, Cline, Continue, Kiro, and more |
| Isolated Workspaces | Each session spawns into its own git worktree with dedicated runtime |
| Platform-Native Runtimes | tmux on Darwin/Linux, conpty on Windows for optimal performance |
| Live PR Observation | Provider-neutral SCM observer with automatic feedback routing |
| Automatic Feedback Routing | CI failures, review comments, and merge conflicts routed to the owning agent |
| Durable Facts Storage | SQLite persists immutable facts with display status derived at read time |
| CDC Broadcasting | DB triggers append changes to change_log, broadcasted via SSE |
| Desktop Experience | Native Electron app with React UI and live terminal streaming |
| Loopback-Only Daemon | HTTP control over 127.0.0.1 with no auth, CORS, or TLS by design |
Supported Agents
Works with 23+ CLI-based coding agents including Claude Code, OpenAI Codex, Cursor, OpenCode, Aider, Amp, Goose, GitHub Copilot, Grok, Qwen Code, Kimi Code, Crush, Cline, Droid, Devin, Auggie, Continue, Kiro, and Kilo Code.
If it runs in a terminal, it runs on Agent Orchestrator.
Quick Start
Prerequisites
| Requirement | Minimum | Recommended |
|---|---|---|
| Go | 1.25+ | Latest |
| Node.js | 20+ | Latest LTS |
| Git | Any | Latest |
| pnpm | Any | Latest |
Optional:
tmux(Darwin/Linux) - For Unix runtimegh(GitHub CLI) - For authenticated GitHub API calls
Installation
Download the latest release for your platform:
| Platform | Download |
|---|---|
| Windows | Setup.exe |
| macOS | Agent Orchestrator.dmg |
| Linux | Agent Orchestrator.AppImage |
Direct Download: Latest Release
Telemetry
Agent Orchestrator collects minimal telemetry for reliability and product understanding. Data is stored locally by default; remote transmission is opt-in via environment variables. Read the full telemetry policy.
Architecture
Agent Orchestrator is a long-running Go daemon built around inbound/outbound port contracts with swappable adapters.
Core mental model: OBSERVE external facts → UPDATE durable facts → DERIVE display status / ACT
Key components:
- Frontend - Electron + React UI with TanStack Router/Query and shadcn/ui
- Backend Daemon - Go-based HTTP server with controllers, services, and adapters
- Runtime - Platform-specific:
tmuxon Darwin/Linux,conptyon Windows - Storage - SQLite with change-data-capture (CDC) for real-time updates
- Adapters - 23+ agent adapters, git worktree workspace, GitHub SCM integration
For detailed architecture diagrams, data flows, and load-bearing rules, see architecture.md.
Documentation
| Document | Description |
|---|---|
| Architecture | System architecture, data flows, and load-bearing rules |
| Backend Code Structure | Package-by-package ownership and dependency rules |
| AGENTS.md | Contributor and worker-agent contract |
| Agent Adapter Contract | Agent adapter interface and hook behavior |
Testing
# Backend tests
cd backend
go test -race ./...
# Frontend tests
cd frontend
pnpm test
# Full CI validation locally
npx @redwoodjs/agent-ci run --all
Configuration
All configuration is environment-driven. The daemon takes no config file.
| Variable | Default | Purpose |
|---|---|---|
AO_PORT |
3001 |
HTTP bind port |
AO_REQUEST_TIMEOUT |
60s |
Per-request timeout |
AO_SHUTDOWN_TIMEOUT |
10s |
Graceful shutdown cap |
AO_RUN_FILE |
~/.ao/running.json |
PID/port handshake |
AO_DATA_DIR |
~/.ao/data |
SQLite data directory |
AO_AGENT |
claude-code |
Compatibility agent adapter |
GITHUB_TOKEN |
- | GitHub auth token |
Health Checks
curl localhost:3001/healthz # Liveness probe
curl localhost:3001/readyz # Readiness probe
Contributing
We love contributions! Join our community on Discord to get started.
Join us on Discord
Daily contributor sync: Every day at 10:00 PM IST
Get your issues verified by core contributors, ask questions, share progress, and learn from the community. New contributors are always welcome!
Why join Discord?
- Get your issues and PRs verified by core contributors before investing time
- Learn from experienced contributors in daily sync calls
- Share your progress and get feedback
- Get help troubleshooting in real-time
- Stay updated on the latest developments and roadmap
Quick Start
- Join the Discord - Connect with the community and get guidance
- Read the contributor contract - See AGENTS.md for repo layout, daemon/API boundaries, and coding conventions
- Pick a focused problem - Browse open issues and choose one small enough for a focused PR
- Open a clear PR - Keep changes narrow, explain user-visible impact, link issues, include tests
- Iterate with contributors - Use review feedback to tighten the PR until verified
License
Apache License 2.0 - see LICENSE for details.
Star us on GitHub • Report Issues • Discussions
Made with love by the Agent Orchestrator community



