Skip to main content

A standalone multi-agent orchestrator that turns high-level product visions into implementation code

Project description

orc

orc

An AI workflow engine that turns product visions into code.

CI PyPI version Coverage Python 3.13+ License


Write a vision document. Run orc run. Walk away.

orc reads your high-level feature descriptions, breaks them into tasks, spawns AI coder agents, reviews the results, and merges passing work — all on a separate dev branch so you can keep working on main.

How orc works

✨ Highlights

  • Board-driven workflow — a YAML kanban board is the single source of truth; the orchestrator drives a plan → code → review → merge pipeline.
  • Parallel coders — scale from 1 coder to many, each in its own git worktree, with configurable tool permissions.
  • Git-native — every decision is a commit. The full audit trail lives in your repo.
  • Sandboxed by default — agents run in confined mode with explicit tool allow-lists. Opt in to yolo when you trust the environment.
  • Backend-agnostic — uses OpenAI-compatible LLM APIs (Gemini, OpenAI, GitHub Models).
  • Telegram integration — optional real-time notifications and human-in-the-loop unblocking.

📦 Installation

pip install qorc

# or, with uv:
uv add qorc

Requires Python 3.13+.


🚀 Quick start

cd your-project/
orc bootstrap          # scaffold .orc/ config directory
$EDITOR .env           # fill in credentials (see below)
orc run                # let the orchestra play

That's it. orc will plan tasks, write code, review changes, and merge passing work into your dev branch.

Key commands

Command What it does
orc bootstrap Scaffold the .orc/ directory with roles, squads, and vision templates
orc run Run the dispatch loop (plan → code → review → merge)
orc run --maxloops 0 Loop until all visions are implemented
orc run --squad broad Use a custom squad profile
orc status Print current board state
orc merge Rebase dev on main and fast-forward merge

🏗️ How it works

orc is a workflow engine. On every cycle it reads the board (.orc/work/board.yaml) and drives a pipeline:

pending visions          → plan   (single LLM call → creates tasks)
open task, no branch     → coder  (full agentic loop in git worktree)
coder done               → review (run tests + single LLM review)
review approved          → merge  (git merge, LLM for conflicts)
review rejected          → coder  (retry with feedback)

Only the coder is a full agent with creative autonomy. Planning, review, and merge are orchestrator operations — deterministic steps with targeted LLM calls. This eliminates the infinite-loop and instruction-reading failure modes of a multi-agent system.

Board tools are called in-process by the ToolExecutor. Each coder agent works in its own git worktree with role-appropriate tool permissions.

Work happens on a dev branch. You keep working on main. When you're ready, orc merge brings everything together (with automatic conflict resolution by a coder agent if needed).

Tip: configure the integration branch name via orc-dev-branch in .orc/config.yaml. Tip: namespace all orc branches with orc-branch-prefix (e.g. orc.orc/feat/0001-foo).


🗂️ Project layout after bootstrap

your-project/
  .orc/
    agents/                 ← coder instructions (override bundled defaults)
    squads/
      default.yaml          ← squad profile (coder count, model, permissions)
    config.yaml             ← project settings
    justfile                ← convenience recipes
    vision/                 ← your feature descriptions go here
    work/
      board.yaml            ← kanban board (managed by orc)
  .env.example              ← credential template

Existing files are never overwritten unless --force is passed.


⚙️ Configuration

Credentials (.env)

Copy .env.example.env and fill in:

GEMINI_API_TOKEN=...           # Gemini API key (default provider)
# OPENAI_API_KEY=...           # OpenAI API key (optional)
# GH_TOKEN=...                 # GitHub Models token (optional)

Environment variables

Variable Default Description
GEMINI_API_TOKEN Gemini API key. Required when using the default gemini provider.
OPENAI_API_KEY OpenAI API key. Required when using the openai provider.
GH_TOKEN GitHub token. Required when using the github provider.
COLONY_TELEGRAM_TOKEN Telegram bot token for notifications.
COLONY_TELEGRAM_CHAT_ID Telegram chat ID. Required when token is set.
ORC_DIR .orc/ Override config directory path.
ORC_LOG_LEVEL INFO DEBUG · INFO · WARNING · ERROR
ORC_LOG_FORMAT console console or json
ORC_LOG_FILE .orc/logs/orc.log Log file path. Empty string disables file logging.

Config file (.orc/config.yaml)

Key Default Description
orc-dev-branch dev Integration branch name.
orc-branch-prefix (empty) Optional prefix for orc-owned branches.
orc-worktree-base .orc/worktrees Base directory for git worktrees.

🎻 Squad profiles

Squads define the composition and permissions of your agent team. They live in .orc/squads/{name}.yaml.

name: broad
description: High-throughput squad for large projects.

permissions:
  mode: confined             # "confined" (default) or "yolo"
  allow_tools:
    - "shell(just:*)"
  deny_tools:
    - "shell(git push:*)"

composition:
  - role: planner
    count: 1
    model: claude-sonnet-4.6
  - role: coder
    count: 4
    model: claude-sonnet-4.6
    permissions:
      allow_tools:
        - "shell(npm:*)"
        - "shell(cargo:*)"
  - role: qa
    count: 2
    model: claude-sonnet-4.6
    review-threshold: HIGH

timeout_minutes: 180

Permission modes

Mode Behaviour
confined Agents may only use board tools, read, write, shell(git:*), plus explicit allow_tools. Default.
yolo Unrestricted tool access. Use for trusted environments or debugging.

QA review threshold

Controls which severity of issues causes QA to reject work back to coders:

Threshold Rejects on
CRITICAL Critical failures only (most lenient)
HIGH High-severity and above
MID Medium-severity and above
LOW Any issue (strictest, default)

The planner count must always be 1. Scale throughput by adding coders and QA reviewers.


📱 Telegram notifications

Optionally monitor your agents in real time via Telegram. Set up a bot through @BotFather, add it to a group, and configure COLONY_TELEGRAM_TOKEN + COLONY_TELEGRAM_CHAT_ID.

Agents post structured status updates:

[coder-1](done) 2026-03-01T12:45:00Z: Implemented task 0002.
[qa-1](passed) 2026-03-01T13:00:00Z: No issues found.
[coder-2](blocked) 2026-03-01T14:00:00Z: Need clarification on auth flow…

🤝 Contributing

See CONTRIBUTING.md for the development workflow, commit conventions, and test-first policy.

git clone https://github.com/PietroPasotti/orc.git && cd orc
just install   # deps + git hooks
just test      # run the suite

📜 License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qorc-0.2.11.tar.gz (4.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qorc-0.2.11-py3-none-any.whl (143.1 kB view details)

Uploaded Python 3

File details

Details for the file qorc-0.2.11.tar.gz.

File metadata

  • Download URL: qorc-0.2.11.tar.gz
  • Upload date:
  • Size: 4.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qorc-0.2.11.tar.gz
Algorithm Hash digest
SHA256 97eb682329707a94d78a19a79434de545ad689ed06afdb790535377678e161e0
MD5 98d883128080e89c2513cc2091691868
BLAKE2b-256 b4973855ef039fb46f7aacb1b072d2890d0d7b8c4429bf4751537089a60e614b

See more details on using hashes here.

Provenance

The following attestation bundles were made for qorc-0.2.11.tar.gz:

Publisher: ci.yml on PietroPasotti/orc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qorc-0.2.11-py3-none-any.whl.

File metadata

  • Download URL: qorc-0.2.11-py3-none-any.whl
  • Upload date:
  • Size: 143.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qorc-0.2.11-py3-none-any.whl
Algorithm Hash digest
SHA256 b7e116e749e7f1a94dc5f75f8f12c3754a5f4523050da616d0269ae3333a3580
MD5 b56d06f67d29ae74ff3baa16d0083717
BLAKE2b-256 ebd990999708fef84edbb3e806e8f2bafacdf1b2e8486bb7d7088b0f61235311

See more details on using hashes here.

Provenance

The following attestation bundles were made for qorc-0.2.11-py3-none-any.whl:

Publisher: ci.yml on PietroPasotti/orc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page