Local-first control plane for cross-agent AI software delivery
Project description
Orcho — Multi-Agent Pipeline Engine
Orcho — local-first control plane for agentic software delivery. Use the coding agents you already trust; Orcho supervises the workflow around them: plan → implementation → review → repair → final acceptance.
It is built for work that needs more structure than a single interactive agent session:
- one task or one coordinated change across several repositories;
- explicit phase topology through profiles;
- human/agent review gates with resume and retry;
- durable run state: plans, diffs, findings, metrics, evidence;
- CLI, SDK, and MCP control surfaces.
Which model runs which phase is fully configurable.
Default: Claude (PLAN / BUILD / FIX) + Codex (REVIEW / QA).
Assign Claude, Codex, or Gemini to any phase via env vars, profiles,
or config.local.json.
Zero project-specific code — all project context comes through plugin.py.
Try the golden mock demo
The fastest zero-API proof is the single-project CLI demo. It creates a disposable git-backed fixture, runs the full mock pipeline, reviews the diff, and writes evidence:
examples/scripts/bootstrap_demo_1a.sh
Then paste the printed orcho run ... --mock command and inspect:
orcho evidence --format md --workspace /tmp/orcho_demo_1a/workspace-orchestrator
orcho status --workspace /tmp/orcho_demo_1a/workspace-orchestrator
orcho diff <run-id> --stat --workspace /tmp/orcho_demo_1a/workspace-orchestrator
Full walkthrough: docs/demos/demo-1a-single-project-cli.md.
First time? Start here
→ docs/user/00_getting_started.md
The full path from zero to the first result: prerequisites → install → connect your project → first run.
Install
Recommended once the packages are published:
pipx install orcho
orcho --help
Use python -m pip install orcho if you prefer a project-managed
environment over pipx.
Optional control surfaces are available through extras:
pipx install 'orcho[mcp]'
pipx install 'orcho[all]'
Source checkout for development:
git clone git@github.com:symphos-ai/orcho-core.git ~/.local/share/orcho-core
cd ~/.local/share/orcho-core
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
Add to ~/.zshrc / ~/.bashrc:
export ORCHO_CORE="$HOME/.local/share/orcho-core"
orcho() { (source "$ORCHO_CORE/.venv/bin/activate" && "$ORCHO_CORE/.venv/bin/python" -m cli.orcho "$@"); }
Windows (PowerShell):
git clone git@github.com:symphos-ai/orcho-core.git "$env:LOCALAPPDATA\orcho-core"
cd "$env:LOCALAPPDATA\orcho-core"
python -m venv .venv; .\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Add to $PROFILE:
. "$env:LOCALAPPDATA\orcho-core\shell\orcho-env-base.ps1"
How it works
Task
→ Claude [PLAN] writes the implementation plan
→ Codex [validate_plan] audits the plan
→ Claude [BUILD] implements the code
→ Codex [REVIEW] reviews the diff
→ Claude [FIX] fixes the findings
→ Codex [final_acceptance] final verdict
Core commands
# One project
orcho run --task "Add input validation to /api/login" --project ~/my-project
# Several projects at once
orcho cross --task "Add rate limiting: API + client" \
--projects api:~/api client:~/client
# No API calls (test)
orcho run --mock --task "..." --project ~/my-project
# Plan only (no code)
orcho run --profile planning --task "..." --project ~/my-project
# Resume an interrupted run
orcho run --resume 20260503_104135
# Status, history, metrics
orcho status | orcho history | orcho metrics
Connecting a project
Create your-project/.orcho/multiagent/plugin.py:
from pipeline.plugins import PluginConfig
plugin = PluginConfig(
name="My Project",
tech_stack="FastAPI + PostgreSQL",
architecture="REST API. Routes: app/routes/, Services: app/services/",
file_hints=["app/routes/", "app/services/", "tests/"],
build_prompt_extra="Run: pytest -x after changes.",
review_focus_extra="Check N+1 queries, missing validations.",
)
Without plugin.py, orcho runs in generic mode.
Package layout
orcho-core/
├── cli/ ← CLI facade (orcho run / cross / status…)
├── sdk/ ← typed headless API for tools and embedders
├── pipeline/
│ ├── project_orchestrator.py ← single-project pipeline
│ ├── cross_project/ ← cross-project planning, dispatch, gates
│ ├── runtime/ ← profiles, steps, state, runner
│ ├── prompts/ ← composable prompt parts and contracts
│ ├── control/ ← handoff, resume, operator decisions
│ ├── engine/ ← sessions, logging, worktrees, run diff
│ ├── evidence/ ← evidence bundle and renderers
│ ├── profiles/ ← profile loading and validation
│ ├── sandbox/ ← command isolation backends
│ ├── skills/ ← skill discovery and injection
│ ├── plugins.py ← PluginConfig + load_plugin()
│ └── checkpoint.py ← SQLite store (--resume)
├── core/
│ ├── _prompts/ ← core prompt templates
│ ├── _config/ ← packaged defaults
│ ├── contracts/ ← plan/review/release schemas
│ ├── infra/ ← config, platform, binary discovery
│ ├── observability/ ← logging, metrics, trace
│ ├── io/ ← retry, git helpers, prompt loader
│ └── context/ ← codemap builder (optional)
├── agents/ ← runtimes, registry, stream parsers
└── tests/ ← unit, integration, acceptance, SDK contract tests
Documentation
Ordered from general to specific — start at the top, go deeper as needed.
| Level | For whom | Link |
|---|---|---|
| User | You want to use the system | docs/user/ |
| Expert | You tune prompts, plugins, and models | docs/expert/ |
| Integrator | You author profiles, gates, and adapters | docs/guides/ |
| Reference | Exact schemas and registries | docs/reference/ |
| Creator | You develop the engine itself | docs/creator/ |
Full index: docs/README.md.
Testing
pytest tests/ -q
pytest tests/unit/ -v
pytest tests/integration/ -v
Tests must not call real models. Use MockAgentProvider for
pipeline-flow scenarios.
Key principles
- Zero hardcoding — all project context comes through
plugin.py - DRY engine —
pipeline/engine/is shared by both orchestrators - 3-level prompts — project → workspace → core (always overridable)
- Discoverable extension points —
workspace initcreates safe.orcho/guides and templates without overwriting local edits - Resumable —
--resumecontinues from the last checkpoint - Cross-platform — macOS, Linux, Windows (native + WSL2)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orcho_core-0.1.0.tar.gz.
File metadata
- Download URL: orcho_core-0.1.0.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c23dadadabfbad7bb7d6b997f178c65895ad6a2f573cbd2757bb6594b4131f36
|
|
| MD5 |
9a97d7e26c62054776bed3120ca5465b
|
|
| BLAKE2b-256 |
115eb3d6b5de70a0afa2559210446c80272a0ab9f6d8c0f12b4eb37f7155f4f9
|
Provenance
The following attestation bundles were made for orcho_core-0.1.0.tar.gz:
Publisher:
release.yml on symphos-ai/orcho-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orcho_core-0.1.0.tar.gz -
Subject digest:
c23dadadabfbad7bb7d6b997f178c65895ad6a2f573cbd2757bb6594b4131f36 - Sigstore transparency entry: 2035220492
- Sigstore integration time:
-
Permalink:
symphos-ai/orcho-core@5280af61dbb39a33c64a718916de63ac30ed6644 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/symphos-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5280af61dbb39a33c64a718916de63ac30ed6644 -
Trigger Event:
push
-
Statement type:
File details
Details for the file orcho_core-0.1.0-py3-none-any.whl.
File metadata
- Download URL: orcho_core-0.1.0-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
586c522b121801c9e21aa1cfd3f5ae87ea3697dd3e1f7d3dcf87c8852178661a
|
|
| MD5 |
94e26acf8ba1f531cd07c2a9500acbb0
|
|
| BLAKE2b-256 |
f2e8eb15f48d7d5d10e58a02460bb74893cc41a8914aeaae0d449a25d0f9b95f
|
Provenance
The following attestation bundles were made for orcho_core-0.1.0-py3-none-any.whl:
Publisher:
release.yml on symphos-ai/orcho-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orcho_core-0.1.0-py3-none-any.whl -
Subject digest:
586c522b121801c9e21aa1cfd3f5ae87ea3697dd3e1f7d3dcf87c8852178661a - Sigstore transparency entry: 2035220600
- Sigstore integration time:
-
Permalink:
symphos-ai/orcho-core@5280af61dbb39a33c64a718916de63ac30ed6644 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/symphos-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5280af61dbb39a33c64a718916de63ac30ed6644 -
Trigger Event:
push
-
Statement type: