Orchestrate AI coding agents from idea to shipped code — in a single pipeline.
<a href="https://github.com/compozy/compozy/actions/workflows/ci.yml">
<img src="https://github.com/compozy/compozy/actions/workflows/ci.yml/badge.svg" alt="CI">
</a>
<a href="https://pkg.go.dev/github.com/compozy/compozy">
<img src="https://pkg.go.dev/badge/github.com/compozy/compozy.svg" alt="Go Reference">
</a>
<a href="https://goreportcard.com/report/github.com/compozy/compozy">
<img src="https://goreportcard.com/badge/github.com/compozy/compozy" alt="Go Report Card">
</a>
<a href="https://github.com/compozy/compozy/raw/v0.2.11/LICENSE">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT">
</a>
<a href="https://github.com/compozy/compozy/releases">
<img src="https://img.shields.io/github/v/release/compozy/compozy?include_prereleases" alt="Release">
</a>
One CLI to replace scattered prompts, manual task tracking, and copy-paste review cycles. Compozy drives the full lifecycle of AI-assisted development: product ideation, technical specification, task breakdown with codebase-informed enrichment, concurrent execution across agents, and automated PR review remediation.

compozy setup, plus any setup assets shipped by enabled extensions.--ide. Concurrent batch processing with configurable timeouts, retries, and exponential backoff, all with a live terminal UI..compozy/agents/<name>/, then run it from compozy exec --agent <name> or through nested run_agent calls.brew install compozy/compozy/compozy
npm install -g @compozy/cli
go install github.com/compozy/compozy/cmd/compozy@latest
git clone git@github.com:compozy/compozy.git
cd compozy && make verify && go build ./cmd/compozy
Then install core skills into your AI agents:
compozy setup # interactive — pick agents and skills
compozy setup --all # install everything to every detected agent
compozy setup installs Compozy's core workflow skills plus any setup assets shipped by enabled extensions.
If you want the optional ideation workflow and council roster, install the first-party cy-idea-factory extension first:
compozy ext install --yes compozy/compozy --remote github --ref <tag> --subdir extensions/cy-idea-factory
compozy ext enable cy-idea-factory
compozy setup
Execution runtimes are separate from skill installation. To run compozy exec, compozy tasks run, or compozy reviews fix, install an ACP-capable runtime or adapter on PATH for the --ide you choose:
| Runtime | --ide flag |
Expected ACP command |
|---|---|---|
| Claude Agent | claude |
claude-agent-acp |
| Codex CLI | codex |
codex-acp |
| GitHub Copilot CLI | copilot |
copilot --acp |
| Devin CLI | devin |
devin acp |
| Cursor | cursor-agent |
cursor-agent acp |
| Droid | droid |
droid exec --output-format acp |
| OpenCode | opencode |
opencode acp |
| pi ACP | pi |
pi-acp |
| Gemini CLI | gemini |
gemini --acp |
| Kiro CLI | kiro |
kiro-cli acp |
When the direct ACP command is not installed, Compozy can also fall back to supported launchers such as npx @zed-industries/codex-acp when the launcher is available locally. Codex defaults to gpt-5.5; using that model with a local codex-acp binary requires @zed-industries/codex-acp >= 0.12.0. Update with npm install -g @zed-industries/codex-acp@latest, or explicitly choose a model supported by your installed adapter.

Workflow artifacts stay in .compozy/tasks/<name>/. These are the PRDs, TechSpecs, ADRs, tasks, reviews, and memory files that you read and edit between steps.
The daemon owns runtime state under ~/.compozy/. Daemon-managed task runs, review-fix runs, and persisted exec sessions allocate ~/.compozy/runs/<run-id>/, while attach and watch clients reconnect through daemon snapshots and streams instead of reading workspace-local run files directly.
Task and review issue files use YAML frontmatter for parseable metadata such as status, title, type, severity, and provider_ref. compozy sync now reconciles authored workflow artifacts into the daemon global.db catalog and performs one-time cleanup for legacy generated _meta.md / _tasks.md artifacts when they are encountered. compozy archive moves completed workflows only after synced daemon state says they are eligible. If you have an older project with XML-tagged artifacts, run compozy migrate once before using daemon-backed workflow commands.
compozy daemon start|status|stop manages the home-scoped daemon lifecycle. daemon start is idempotent, and task/review/exec commands auto-start the daemon when needed.compozy workspaces list|show|register|unregister|resolve exposes the daemon workspace registry. Workspaces are also lazily registered when you run daemon-backed commands inside them.compozy tasks run <slug> is the canonical single-workflow runner. In interactive terminals it attaches to the TUI by default; in non-interactive environments it falls back to streaming. Use --ui, --stream, --detach, or --attach to override that behavior. Add --parallel-tasks to opt into dependency-aware parallel execution for task files inside one workflow.compozy tasks run --multiple alpha,beta starts one daemon-owned queue for several task workflows. Use tasks run --multiple when the same flags and runtime defaults should apply to an ordered batch; keep using tasks run <slug> for one workflow or scripts that expect one run ID per invocation. Add --parallel to run the batch concurrently — each child runs in its own isolated git worktree, bounded by --parallel-limit (default 2).compozy tasks run invocations from different workspaces run concurrently on the shared home-scoped daemon. When another workspace already has an active run, the CLI prints a warning with the busy workspace and run ID before starting the new run.compozy runs attach <run-id> restores the interactive TUI for an existing daemon-managed run, while compozy runs watch <run-id> streams textual observation from the same snapshot-plus-stream transport.compozy reviews fetch|list|show|fix is the canonical review command family.Task files now use the v2 frontmatter shape: status, title, type, complexity, and dependencies. Legacy v1 task-only keys are no longer part of the schema. type must come from the workspace task type registry: either [tasks].types in .compozy/config.toml or the built-in defaults frontend, backend, docs, test, infra, refactor, chore, bugfix.
---
status: pending
title: Add task validation preflight to tasks run
type: backend
complexity: medium
dependencies:
- task_02
---
Validate task files at any time with compozy tasks validate --name <feature>. compozy tasks run <feature> runs the same preflight automatically; use --skip-validation only when tasks were validated elsewhere, or --force to continue after validation failures in non-interactive runs.
Compozy can load global defaults from ~/.compozy/config.toml and override them per workspace with .compozy/config.toml.
.compozy/ directory by walking upward from the current working directory.~/.compozy/config.toml exists, Compozy loads it once at command startup..compozy/config.toml exists in the resolved workspace, it overrides the global config field by field.Precedence is:
explicit flags > workspace command section > workspace [defaults] > global command section > global [defaults] > built-in defaults
Example:
[defaults]
ide = "codex"
model = "gpt-5.5"
reasoning_effort = "medium"
access_mode = "full"
timeout = "10m"
tail_lines = 0
add_dirs = ["../shared"]
auto_commit = false
max_retries = 2
retry_backoff_multiplier = 1.5
[tasks]
types = ["frontend", "backend", "docs", "test", "infra", "refactor", "chore", "bugfix"]
[tasks.run]
include_completed = false
run_multiple_mode = "enqueued"
run_multiple_parallel_limit = 2
[tasks.run.parallel]
enabled = false
max_concurrency = 4
[tasks.run.parallel.conflict_resolver]
ide = "codex"
model = "gpt-5.5"
reasoning_effort = "medium"
max_attempts = 1
validation_command = []
[exec]
output_format = "text"
[recovery]
enabled = false
ide = "codex"
model = "gpt-5.5"
reasoning_effort = "medium"
max_attempts = 1
[fix_reviews]
concurrent = 2
batch_size = 3
include_resolved = false
[fetch_reviews]
provider = "coderabbit"
nitpicks = false
Supported sections:
[defaults] for shared execution defaults such as ide, model, reasoning_effort, access_mode, timeout, tail_lines, add_dirs, auto_commit, max_retries, and retry_backoff_multiplier[exec] for output_format plus exec-specific runtime overrides such as ide, model, reasoning_effort, access_mode, timeout, tail_lines, add_dirs, max_retries, and retry_backoff_multiplier[tasks] for the allowed task type list used by cy-create-tasks and compozy tasks validate[tasks.run] for workflow-run defaults used by compozy tasks run, such as include_completed, run_multiple_mode, and run_multiple_parallel_limit[tasks.run.parallel] for dependency-aware parallel execution inside one PRD task workflow, including enabled, max_concurrency, and the conflict-resolver agent under [tasks.run.parallel.conflict_resolver][fix_reviews] for concurrent, batch_size, and include_resolved[fetch_reviews] for provider and nitpicks (controls CodeRabbit review-body comments; default is enabled when unset)[recovery] for agentic recovery defaults used by run-producing commands: enabled, ide, model, reasoning_effort, and max_attempts[sound] for optional run-completion audio presets or absolute file pathsNotes:
~/.compozy/config.toml and .compozy/config.toml are optional. If both are absent, Compozy keeps the current built-in defaults..compozy/tasks remains the fixed workflow root in this version; the config file does not change the workflow root path.add_dirs are resolved against the owning config scope: the user home directory for ~/.compozy/config.toml and the workspace root for .compozy/config.toml.[tasks.run] run_multiple_mode controls tasks run --multiple scheduling. Valid values are "enqueued" and "parallel"; when unset, the built-in default is "enqueued".run_multiple_mode = "parallel" runs the batch concurrently, with each child in its own isolated git worktree. The CLI --parallel flag overrides this config value for a single invocation.[tasks.run] run_multiple_parallel_limit caps how many children run at once in parallel mode. It must be a positive integer and defau$ claude mcp add compozy \
-- python -m otcore.mcp_server <graph>