@compozy/cli 0.2.15 → 0.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +141 -840
  2. package/package.json +17 -29
package/README.md CHANGED
@@ -1,959 +1,250 @@
1
1
  <div align="center">
2
- <h1>Compozy</h1>
3
- <p><strong>Orchestrate AI coding agents from idea to shipped code — in a single pipeline.</strong></p>
2
+ <img src="packages/site/public/icon-512.png" alt="Compozy" width="96" height="96">
3
+ <h1>CompozyOS</h1>
4
+ <p><strong>A local-first operating system for agent work.</strong></p>
4
5
  <p>
5
6
  <a href="https://github.com/compozy/compozy/actions/workflows/ci.yml">
6
7
  <img src="https://github.com/compozy/compozy/actions/workflows/ci.yml/badge.svg" alt="CI">
7
8
  </a>
8
- <a href="https://pkg.go.dev/github.com/compozy/compozy">
9
- <img src="https://pkg.go.dev/badge/github.com/compozy/compozy.svg" alt="Go Reference">
9
+ <a href="https://github.com/compozy/compozy/releases">
10
+ <img src="https://img.shields.io/github/v/release/compozy/compozy?include_prereleases" alt="Release">
10
11
  </a>
11
12
  <a href="https://goreportcard.com/report/github.com/compozy/compozy">
12
13
  <img src="https://goreportcard.com/badge/github.com/compozy/compozy" alt="Go Report Card">
13
14
  </a>
15
+ <a href="https://pkg.go.dev/github.com/compozy/compozy">
16
+ <img src="https://pkg.go.dev/badge/github.com/compozy/compozy.svg" alt="Go Reference">
17
+ </a>
14
18
  <a href="LICENSE">
15
19
  <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT">
16
20
  </a>
17
- <a href="https://github.com/compozy/compozy/releases">
18
- <img src="https://img.shields.io/github/v/release/compozy/compozy?include_prereleases" alt="Release">
19
- </a>
20
21
  </p>
21
22
  </div>
22
23
 
23
- 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.
24
+ CompozyOS gives agent work a durable place to live. One local daemon connects sessions, tasks,
25
+ loops, memory, permissions, automation, and tools. People can see and steer the work through the web
26
+ shell and CLI; agents operate the same state through structured HTTP, UDS, MCP, and native-tool
27
+ surfaces.
28
+
29
+ > [!WARNING]
30
+ > The v0.3 line is in beta. The previous v0.2.15 product is deprecated and maintained only for
31
+ > critical fixes on [`legacy/v0.2`](https://github.com/compozy/compozy/tree/legacy/v0.2). Start with
32
+ > the [migration guide](MIGRATION_GUIDE.md) before replacing an existing v0.2 installation.
24
33
 
25
34
  <div align="center">
26
- <img src="imgs/screenshot.png" alt="Compozy Agent Loop" width="100%">
35
+ <img src="imgs/screenshot.png" alt="CompozyOS workspace with durable agent work" width="100%">
27
36
  </div>
28
37
 
29
38
  ## ✨ Highlights
30
39
 
31
- - **One command, 40+ agents.** Install core workflow skills into Claude Code, Codex, Cursor, Droid, OpenCode, Pi, Gemini, and 40+ other agents and editors with `compozy setup`, plus any setup assets shipped by enabled extensions.
32
- - **Idea to code in a structured pipeline.** Optional Idea → PRD → TechSpec → Tasks → Execution → Review. Each phase produces plain markdown artifacts that feed into the next. Start from an idea for full research and debate, or jump straight to PRD if you already have a clear scope.
33
- - **Codebase-aware enrichment.** Tasks aren't generic prompts. Compozy spawns parallel agents to explore your codebase, discover patterns, and ground every task in real project context.
34
- - **Multi-agent execution.** Run tasks through ACP-capable runtimes like Claude Code, Codex, Cursor, Droid, OpenCode, Pi, or Gemini — just change `--ide`. Concurrent batch processing with configurable timeouts, retries, and exponential backoff, all with a live terminal UI.
35
- - **Reusable agents.** Package a prompt, runtime defaults, and optional agent-local MCP servers under `.compozy/agents/<name>/`, then run it from `compozy exec --agent <name>` or through nested `run_agent` calls.
36
- - **Workflow memory between runs.** Agents inherit context from every previous task — decisions, learnings, errors, and handoffs. Two-tier markdown memory with automatic compaction keeps context fresh without manual bookkeeping.
37
- - **Provider-agnostic reviews.** Fetch review comments from CodeRabbit, GitHub, or run AI-powered reviews internally. All normalize to the same format. Provider threads resolve automatically after fixes.
38
- - **Markdown everywhere.** PRDs, specs, tasks, reviews, and ADRs are human-readable markdown files. Version-controlled, diffable, editable between steps. No vendor lock-in.
39
- - **Frontmatter for machine-readable metadata.** Tasks and review issues keep parseable metadata in standard YAML frontmatter instead of custom XML tags.
40
- - **Executable extensions.** Intercept and modify any pipeline phase with subprocess hooks. Ship custom prompt decorators, lifecycle observers, review providers, and skill packs using the TypeScript or Go SDKs.
41
- - **Single binary, local-first.** Compiles to one Go binary with zero runtime dependencies. Your code and data stay on your machine.
42
- - **Embeddable.** Use as a standalone CLI or import as a Go package into your own tools.
40
+ - **Work survives the terminal.** Sessions and Loop runs belong to the daemon, so closing one client
41
+ does not erase the work.
42
+ - **One state, several control surfaces.** Web, CLI, HTTP/SSE, UDS, MCP, and native tools expose the
43
+ same runtime-owned resources.
44
+ - **People stay in control.** Approvals, permissions, run state, artifacts, and agent activity remain
45
+ inspectable while work continues in the background.
46
+ - **Local-first by default.** One Go binary and SQLite-backed stores keep runtime state on the
47
+ operator's machine unless a configured provider or extension owns an external boundary.
48
+ - **Built to extend.** Agents, skills, capabilities, bundles, hooks, bridges, and extensions plug into
49
+ explicit runtime contracts.
50
+ - **Compozy Network.** Sessions can discover peers, exchange typed messages, delegate work, and close
51
+ it with receipts over `compozy-network/v0`.
43
52
 
44
53
  ## 📦 Installation
45
54
 
46
- #### Homebrew
55
+ The documented beta is `v0.3.0-beta.1`. Homebrew continues to serve the deprecated v0.2 line during
56
+ the beta window and is intentionally omitted here. The `compozy` formula returns with v0.3.0 stable.
47
57
 
48
- ```bash
49
- brew install compozy/compozy/compozy
50
- ```
58
+ #### Verified installer
51
59
 
52
- #### NPM
60
+ The installer targets the documented beta and verifies Sigstore provenance before installing the
61
+ binary on macOS or Linux.
53
62
 
54
63
  ```bash
55
- npm install -g @compozy/cli
64
+ curl -fsSL https://compozy.com/install.sh | sh
56
65
  ```
57
66
 
58
- #### Go
67
+ #### NPM
59
68
 
60
69
  ```bash
61
- go install github.com/compozy/compozy/cmd/compozy@latest
70
+ npm install -g @compozy/cli@beta
62
71
  ```
63
72
 
64
- #### From Source
65
-
66
- ```bash
67
- git clone git@github.com:compozy/compozy.git
68
- cd compozy && make verify && go build ./cmd/compozy
69
- ```
73
+ #### Go
70
74
 
71
- Then install core skills into your AI agents:
75
+ Go's `@latest` still resolves the v0.2 stable line while v0.3 is in beta, so use the explicit version:
72
76
 
73
77
  ```bash
74
- compozy setup # interactive — pick agents and skills
75
- compozy setup --all # install everything to every detected agent
78
+ go install github.com/compozy/compozy@v0.3.0-beta.1
76
79
  ```
77
80
 
78
- `compozy setup` installs Compozy's core workflow skills plus any setup assets shipped by enabled extensions.
79
-
80
- If you want the optional ideation workflow and council roster, install the first-party `cy-idea-factory` extension first:
81
+ #### From Source
81
82
 
82
83
  ```bash
83
- compozy ext install --yes compozy/compozy --remote github --ref <tag> --subdir extensions/cy-idea-factory
84
- compozy ext enable cy-idea-factory
85
- compozy setup
84
+ git clone https://github.com/compozy/compozy.git
85
+ cd compozy
86
+ go build -o ./bin/compozy .
86
87
  ```
87
88
 
88
- 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:
89
-
90
- | Runtime | `--ide` flag | Expected ACP command |
91
- | ------------------ | -------------- | -------------------------------- |
92
- | Claude Agent | `claude` | `claude-agent-acp` |
93
- | Codex CLI | `codex` | `codex-acp` |
94
- | GitHub Copilot CLI | `copilot` | `copilot --acp` |
95
- | Devin CLI | `devin` | `devin acp` |
96
- | Cursor | `cursor-agent` | `cursor-agent acp` |
97
- | Droid | `droid` | `droid exec --output-format acp` |
98
- | OpenCode | `opencode` | `opencode acp` |
99
- | pi ACP | `pi` | `pi-acp` |
100
- | Gemini CLI | `gemini` | `gemini --acp` |
101
- | Kiro CLI | `kiro` | `kiro-cli acp` |
102
-
103
- When the direct ACP command is not installed, Compozy can fall back to supported launchers such as `npx --yes @agentclientprotocol/codex-acp`. Codex and Droid default to `gpt-5.6-sol`; GPT-5.6 models and the `max`/`ultra` reasoning levels require `@agentclientprotocol/codex-acp >= 1.1.2`. Update with `npm install -g @agentclientprotocol/codex-acp@latest`. The legacy `@zed-industries/codex-acp` package remains compatible only with older combinations such as GPT-5.5 with reasoning through `xhigh`.
104
-
105
- Compozy negotiates each runtime from the model, reasoning, and mode options advertised by ACP `session/new` or `session/load`, and applies the resolved configuration before sending the first prompt:
106
-
107
- - Codex supports `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna` when the installed adapter advertises them. The built-in default is `gpt-5.6-sol` with `medium` reasoning.
108
- - Cursor model names resolve against its ACP catalog. For example, `--model grok-4.5` resolves to the advertised `grok-4.5[effort=high,fast=true]`; the exact ID is also accepted when shell-quoted. Cursor does not receive a separate reasoning option when its ACP session does not advertise one.
109
- - Claude Fable 5 accepts `--model fable`, `--model fable-5`, or `--model claude-fable-5`. Compozy always selects Claude's `auto` permission mode for Fable, even when `--access-mode full` was requested, so it never sends `bypassPermissions` for that model.
110
- - Claude's `max` reasoning is an advertised ACP effort value, not a system-prompt instruction. `ultracode` is an interactive Claude Code workflow rather than an ACP reasoning value, so Compozy does not emulate it with a parameter or prompt. If a requested effort such as `ultra` is not advertised by Claude, Compozy stops before the prompt and lists the valid choices.
89
+ The [installation guide](https://compozy.com/runtime/core/getting-started/installation) covers
90
+ installer flags, Linux packages, source builds, verification, and managed updates.
111
91
 
112
92
  ## 🔄 How It Works
113
93
 
114
94
  <div align="center">
115
- <img src="imgs/how-it-works-flow.png" alt="Compozy daemon-first workflow showing workspace artifacts, daemon runtime, and persisted run state" width="100%">
95
+ <img src="imgs/how-it-works-flow.png" alt="CompozyOS control surfaces, daemon, runtime resources, state, and extension boundaries" width="100%">
116
96
  </div>
117
97
 
118
- 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.
119
-
120
- 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.
121
-
122
- 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.
98
+ People and agents send commands through public control surfaces. The home-scoped daemon resolves the
99
+ workspace, applies permissions and runtime policy, coordinates ACP agents, and persists events and
100
+ resource state. Web and streaming clients read that same daemon-owned truth instead of maintaining a
101
+ parallel model.
123
102
 
124
103
  ### Daemon Runtime Model
125
104
 
126
- - `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.
127
- - `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.
128
- - `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 explicitly opt into dependency-aware parallel execution using per-task worktrees and an integration branch.
129
- - `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`).
130
- - Independent `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.
131
- - `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.
132
- - `compozy reviews fetch|list|show|fix` is the canonical review command family.
105
+ `compozy daemon start|status|stop` manages the local daemon. Sessions, tasks, Loop runs, memory,
106
+ automation, tools, and Compozy Network activity keep explicit owners and workspace boundaries. Use
107
+ structured CLI output (`-o json`), HTTP/SSE, UDS, MCP, or native tools when another agent or program
108
+ needs to manage the same resources.
133
109
 
134
110
  ### Task Schema v2
135
111
 
136
- 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`.
137
-
138
- ```md
139
- ---
140
- status: pending
141
- title: Add task validation preflight to tasks run
142
- type: backend
143
- complexity: medium
144
- dependencies:
145
- - task_02
146
- ---
147
- ```
148
-
149
- 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.
112
+ Authored task files remain portable Markdown with typed frontmatter. The v0.3 runtime imports them
113
+ into durable tasks and executes them through Loops; it does not revive the v0.2 `tasks run` pipeline.
114
+ See [Migrate from v0.2.15](MIGRATION_GUIDE.md) for the exact schema and command changes.
150
115
 
151
116
  ## ⚙️ Config Files
152
117
 
153
- Compozy can load global defaults from `~/.compozy/config.toml` and override them per workspace with `.compozy/config.toml`.
154
-
155
- - The CLI discovers the nearest `.compozy/` directory by walking upward from the current working directory.
156
- - If `~/.compozy/config.toml` exists, Compozy loads it once at command startup.
157
- - If `.compozy/config.toml` exists in the resolved workspace, it overrides the global config field by field.
158
- - Explicit CLI flags always win over config values.
159
-
160
- Precedence is:
161
-
162
- ```text
163
- explicit flags > workspace command section > workspace [defaults] > global command section > global [defaults] > built-in defaults
164
- ```
118
+ Global defaults live in `~/.compozy/config.toml`; a workspace can override supported fields through
119
+ `.compozy/config.toml`. Explicit command flags win over workspace configuration, which wins over
120
+ global configuration and built-in defaults.
165
121
 
166
- Example:
167
-
168
- ```toml
169
- [defaults]
170
- ide = "codex"
171
- model = "gpt-5.6-sol"
172
- reasoning_effort = "medium"
173
- access_mode = "full"
174
- timeout = "10m"
175
- tail_lines = 0
176
- add_dirs = ["../shared"]
177
- auto_commit = false
178
- max_retries = 2
179
- retry_backoff_multiplier = 1.5
180
-
181
- [defaults.by_complexity.low]
182
- model = "haiku"
183
- reasoning_effort = "low"
184
-
185
- [defaults.by_complexity.high]
186
- reasoning_effort = "high"
187
-
188
- [tasks]
189
- types = ["frontend", "backend", "docs", "test", "infra", "refactor", "chore", "bugfix"]
190
-
191
- [tasks.run]
192
- include_completed = false
193
- run_multiple_mode = "enqueued"
194
- run_multiple_parallel_limit = 2
195
-
196
- [tasks.run.parallel]
197
- enabled = false # compatibility field; activation still requires a per-run choice
198
- max_concurrency = 4
199
-
200
- [tasks.run.parallel.conflict_resolver]
201
- ide = "codex"
202
- model = "gpt-5.6-sol"
203
- reasoning_effort = "medium"
204
- max_attempts = 1
205
- validation_command = []
206
-
207
- [exec]
208
- output_format = "text"
209
-
210
- [recovery]
211
- enabled = false
212
- ide = "codex"
213
- model = "gpt-5.6-sol"
214
- reasoning_effort = "medium"
215
- max_attempts = 1
216
-
217
- [fix_reviews]
218
- concurrent = 2
219
- batch_size = 3
220
- include_resolved = false
221
-
222
- [fetch_reviews]
223
- provider = "coderabbit"
224
- nitpicks = false
122
+ ```bash
123
+ compozy config path
124
+ compozy config validate
125
+ compozy config show -o json
225
126
  ```
226
127
 
227
- Supported sections:
228
-
229
- - `[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`
230
- - `[defaults.by_complexity.low|medium|high|critical]` for per-task `ide`, `model`, and `reasoning_effort` defaults used by PRD task runs
231
- - `[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`
232
- - `[tasks]` for the allowed task `type` list used by `cy-create-tasks` and `compozy tasks validate`
233
- - `[tasks.run]` for workflow-run defaults used by `compozy tasks run`, such as `include_completed`, `run_multiple_mode`, and `run_multiple_parallel_limit`
234
- - `[tasks.run.parallel]` for options used after dependency-aware parallel execution is explicitly selected for one PRD task workflow, including `max_concurrency` and the conflict-resolver agent under `[tasks.run.parallel.conflict_resolver]`; `enabled` remains parseable for compatibility but is not authorization to create worktrees
235
- - `[fix_reviews]` for `concurrent`, `batch_size`, and `include_resolved`
236
- - `[fetch_reviews]` for `provider` and `nitpicks` (controls CodeRabbit review-body comments; default is enabled when unset)
237
- - `[recovery]` for agentic recovery defaults used by run-producing commands: `enabled`, `ide`, `model`, `reasoning_effort`, and `max_attempts`
238
- - `[sound]` for optional run-completion audio presets or absolute file paths
239
-
240
- Notes:
241
-
242
- - Both `~/.compozy/config.toml` and `.compozy/config.toml` are optional. If both are absent, Compozy keeps the current built-in defaults.
243
- - `.compozy/tasks` remains the fixed workflow root in this version; the config file does not change the workflow root path.
244
- - Unknown keys and invalid value types are rejected during config loading.
245
- - Relative `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`.
246
- - Complexity defaults merge field by field from global to workspace config. A missing field falls back to `[defaults]`; matching task-type and task-id runtime rules remain more specific, and explicit `--ide`, `--model`, or `--reasoning-effort` flags override complexity defaults for that invocation.
247
- - `[tasks.run] run_multiple_mode` controls `tasks run --multiple` scheduling. Valid values are `"enqueued"` and `"parallel"`; when unset, the built-in default is `"enqueued"`.
248
- - `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.
249
- - `[tasks.run] run_multiple_parallel_limit` caps how many children run at once in parallel mode. It must be a positive integer and defaults to `2`. The CLI `--parallel-limit <n>` flag overrides it for a single invocation. The limit has no effect in enqueued mode, which always runs one child at a time.
250
- - `[tasks.run.parallel] enabled` does not activate worktree-backed execution by itself. A single-workflow run uses task worktrees only after a per-run choice through `--parallel-tasks=true`, the wizard, or `runtime_overrides.parallel_tasks.enabled=true`; `--parallel-tasks=false` keeps the standard runner. The remaining TOML values configure an explicitly enabled run.
251
- - `[tasks.run.parallel] max_concurrency` caps concurrent task worktrees within a wave and defaults to `4`. The conflict resolver uses `ide`, `model`, `reasoning_effort`, and `max_attempts` for bounded merge-conflict resolution.
252
- - `[tasks.run.parallel.conflict_resolver] validation_command` is optional and disabled by default. When set, it is an argv-style command such as `["go", "test", "./..."]`, runs without a shell after conflict markers and unmerged entries are gone, and must not modify the integration worktree. Omit it or set `[]` to rely only on universal git validation.
253
- - `max_retries` applies to execution-stage ACP failures and inactivity timeouts for `compozy exec`, `compozy tasks run`, and `compozy reviews fix`.
254
- - Built-in CLI defaults retry timed-out or transient ACP failures twice; set `max_retries = 0` or pass `--max-retries 0` to opt out.
255
- - `retry_backoff_multiplier` only increases the next attempt timeout; retries restart immediately and do not add a sleep delay.
256
- - Recovery is disabled by default. When enabled, `max_attempts` is the number of remediation plus restart cycles and must be between `1` and `3`.
257
- - Recovery config is resolved fresh for each invocation and is not persisted into run or exec metadata. Use `--recovery`, `--no-recovery`, `--recovery-ide`, `--recovery-model`, `--recovery-reasoning`, and `--recovery-max-attempts` to override `[recovery]` for one command.
128
+ Configuration, credentials, and provider-home policies have different owners. Follow the
129
+ [configuration guide](https://compozy.com/runtime/core/configuration/config-toml) instead of copying
130
+ v0.2 state into a v0.3 home.
258
131
 
259
132
  ## Reusable Agents
260
133
 
261
- Reusable agents are flat filesystem bundles discovered from two scopes:
262
-
263
- - workspace: `.compozy/agents/<name>/`
264
- - global: `~/.compozy/agents/<name>/`
265
-
266
- When the same agent name exists in both places, the workspace directory wins as a whole. Compozy does not merge `AGENT.md` from one scope with `mcp.json` from the other.
267
-
268
- Each agent directory contains:
269
-
270
- - required `AGENT.md` with YAML frontmatter plus a markdown body
271
- - optional `mcp.json` using the standard top-level `mcpServers` shape
272
-
273
- Agent directory names are the canonical agent ids. They must match `^[a-z][a-z0-9-]{0,63}$`, and `compozy` is reserved.
274
-
275
- Quick start:
134
+ Agent definitions live under `~/.compozy/agents/<name>/` or `.compozy/agents/<name>/`. Each definition
135
+ has an `AGENT.md` and may include an agent-local `mcp.json`. Workspace definitions override global
136
+ definitions as a whole.
276
137
 
277
138
  ```bash
278
- compozy agents list
279
- compozy agents inspect reviewer
280
- compozy exec --agent reviewer "Review the staged changes"
281
- ```
282
-
283
- Runtime precedence for `compozy exec --agent ...` is:
284
-
285
- ```text
286
- explicit CLI flags > AGENT.md runtime defaults > workspace/global config > built-in defaults
139
+ compozy agent list -o json
140
+ compozy agent inspect general -o json
141
+ compozy session new --workspace current --agent general
287
142
  ```
288
143
 
289
- `mcp.json` is only for agent-local MCP servers. The reserved Compozy MCP server is also named `compozy`, but it is injected by the host and must not appear in `mcp.json`. That reserved server exists only to expose host-owned tools such as `run_agent`. Child agent runs receive the reserved `compozy` server plus the child agent's own `mcp.json`; they do not inherit the parent agent's local MCP servers.
290
-
291
- Use these committed example fixtures as starting points:
292
-
293
- - [`docs/examples/agents/reviewer/AGENT.md`](docs/examples/agents/reviewer/AGENT.md) for a minimal reusable agent
294
- - [`docs/examples/agents/repo-copilot/AGENT.md`](docs/examples/agents/repo-copilot/AGENT.md) and [`docs/examples/agents/repo-copilot/mcp.json`](docs/examples/agents/repo-copilot/mcp.json) for an agent with external MCP dependencies
295
-
296
- The detailed guide lives in [`docs/reusable-agents.md`](docs/reusable-agents.md).
297
-
298
144
  ## 🔌 Extensions
299
145
 
300
- Compozy extensions are executable subprocess plugins that intercept and modify pipeline behavior without rebuilding the binary. Extensions communicate with the host over JSON-RPC 2.0 on stdin/stdout and can observe lifecycle events, mutate prompts, inject plan sources, modify agent sessions, gate retries, ship skill packs, and register review providers.
146
+ Extensions add versioned resources and runtime behavior through declared capabilities. The daemon
147
+ owns discovery, enablement, trust decisions, lifecycle, and hooks; extensions do not bypass public
148
+ runtime contracts.
301
149
 
302
150
  ### SDK support
303
151
 
304
- | Language | Package | Install |
305
- | ---------- | ------------------------------------------------- | ------------------------------------------------- |
306
- | TypeScript | [`@compozy/extension-sdk`](sdk/extension-sdk-ts/) | `npm install @compozy/extension-sdk` |
307
- | Go | [`sdk/extension`](sdk/extension/) | `go get github.com/compozy/compozy/sdk/extension` |
308
-
309
- Scaffold a new extension project with starter templates:
310
-
311
- ```bash
312
- npx @compozy/create-extension my-ext
313
- npx @compozy/create-extension my-ext --template prompt-decorator
314
- npx @compozy/create-extension my-ext --runtime go
315
- ```
316
-
317
- Available templates: `lifecycle-observer`, `prompt-decorator`, `review-provider`, `skill-pack`.
152
+ The current Go and TypeScript SDK workspaces are version-matched repository internals, not v0.2
153
+ compatibility packages. External v0.2 integrations should stay pinned while they are redesigned for
154
+ the v0.3 extension contract.
318
155
 
319
156
  ### Extension CLI
320
157
 
321
158
  ```bash
322
- compozy ext list # discover extensions across all scopes
323
- compozy ext inspect <name> # show manifest, capabilities, enablement status
324
- compozy ext install <source> # install from a local path or GitHub repo archive
325
- compozy ext uninstall <name> # remove a user-scoped extension
326
- compozy ext enable <name> # enable on this machine
327
- compozy ext disable <name> # disable on this machine
328
- compozy ext doctor # validate manifests and report health warnings
159
+ compozy extension list -o json
160
+ compozy extension inspect <name> -o json
161
+ compozy extension provenance <name> -o json
329
162
  ```
330
163
 
331
- Extensions are discovered from three scopes with workspace > user > bundled precedence. User and workspace extensions start disabled and must be explicitly enabled by the local operator.
332
-
333
164
  ### Learn more
334
165
 
335
- - [Extension author guide](.compozy/docs/extensibility/index.md)
336
- - [Architecture overview](.compozy/docs/extensibility/architecture.md)
337
- - [Hook reference](.compozy/docs/extensibility/hook-reference.md) -- 32 hooks across 6 pipeline phases
338
- - [Host API reference](.compozy/docs/extensibility/host-api-reference.md) -- 11 typed host methods
339
- - [Capability reference](.compozy/docs/extensibility/capability-reference.md) -- 19 capability grants
340
- - [Trust and enablement](.compozy/docs/extensibility/trust-and-enablement.md)
341
- - [Testing guide](.compozy/docs/extensibility/testing.md)
342
-
343
- ## ⚡ Ad Hoc Exec
344
-
345
- Use `compozy exec` when you want one prompt through the same ACP-backed execution stack without creating a full workflow first.
346
-
347
- ```bash
348
- compozy exec "Summarize the current repository changes"
349
- compozy exec --prompt-file prompt.md
350
- cat prompt.md | compozy exec --format json
351
- compozy exec --persist "Review the latest changes"
352
- compozy exec --run-id exec-20260405-120000-000000000 "Continue from the previous session"
353
- ```
354
-
355
- Prompt source rules are explicit:
356
-
357
- - pass one positional prompt for short inline runs
358
- - use `--prompt-file` for longer or reusable prompts
359
- - pipe `stdin` only when neither of the above is provided
360
- - ambiguous combinations are rejected instead of guessed
361
-
362
- Output modes:
363
-
364
- - `--format text` is headless by default and writes only the final assistant response to stdout
365
- - `--format json` streams the lean JSONL contract to stdout and filters ACP metadata that is mostly useful for debugging
366
- - `--format raw-json` streams the full raw JSONL event trace to stdout
367
- - when `--persist` is enabled, `~/.compozy/runs/<run-id>/events.jsonl` always stores the full raw event stream regardless of the selected stdout format
368
- - operational ACP/runtime logs stay silent by default; use `--verbose` when you want lifecycle logs on stderr
369
- - `--tui` opts back into the Bubble Tea interface for interactive inspection
370
- - `--persist` stores a resumable conversation under `~/.compozy/runs/<run-id>/`
371
- - `--run-id` loads a previously persisted ACP session and appends a new turn
372
-
373
- Persisted `exec` runs use this layout:
374
-
375
- ```text
376
- ~/.compozy/runs/<run-id>/run.db
377
- ~/.compozy/runs/<run-id>/run.json
378
- ~/.compozy/runs/<run-id>/events.jsonl
379
- ~/.compozy/runs/<run-id>/turns/0001/prompt.md
380
- ~/.compozy/runs/<run-id>/turns/0001/response.txt
381
- ~/.compozy/runs/<run-id>/turns/0001/result.json
382
- ```
383
-
384
- `compozy exec` uses the same config merge rule as the rest of the CLI: `flags > workspace [exec] > workspace [defaults] > global [exec] > global [defaults] > built-in defaults`.
166
+ - [Extensions](https://compozy.com/runtime/core/extensions)
167
+ - [Capabilities and bundles](https://compozy.com/runtime)
168
+ - [Official Compozy skill](skills/compozy/)
169
+ - [Migration guide](MIGRATION_GUIDE.md)
385
170
 
386
171
  ## 🚀 Quick Start
387
172
 
388
- This walkthrough builds a feature called **user-auth** from idea to shipped code.
389
-
390
- ### 1. Install skills
173
+ Bootstrap the home, start the daemon, register the repository you want agents to work in, and create
174
+ one durable session:
391
175
 
392
176
  ```bash
393
- compozy setup
394
- ```
395
-
396
- Auto-detects installed agents, copies (or symlinks) core skills into their configuration directories, and installs setup assets shipped by enabled extensions.
397
- `compozy tasks run` and `compozy reviews fix` now verify that bundled Compozy skills are installed for the selected agent before running. Missing installs block the run, and outdated installs prompt for refresh in interactive terminals.
398
-
399
- ### 2. (Optional) Create an Issue
400
-
401
- Inside your AI agent (Claude Code, Codex, Cursor, OpenCode, Pi, etc.):
402
-
403
- ```bash
404
- compozy ext install --yes compozy/compozy --remote github --ref <tag> --subdir extensions/cy-idea-factory
405
- compozy ext enable cy-idea-factory
406
- compozy setup
407
- ```
408
-
409
- Then:
410
-
411
- ```
412
- /cy-idea-factory user-auth
413
- ```
414
-
415
- Transforms a raw idea into a structured idea spec — asks targeted questions, researches market and codebase in parallel, runs business analysis and council debate, suggests high-leverage alternatives, and produces a research-backed idea. Skip this step if you already have a clear feature scope.
416
-
417
- ### 3. Create a PRD
418
-
419
- ```
420
- /cy-create-prd user-auth
421
- ```
422
-
423
- Interactive brainstorming session — reads the idea if one exists, asks clarifying questions, spawns parallel agents to research your codebase and the web, produces a business-focused PRD with ADRs.
424
-
425
- ### 4. Create a TechSpec
426
-
427
- ```
428
- /cy-create-techspec user-auth
429
- ```
430
-
431
- Reads your PRD, explores the codebase architecture, asks technical clarification questions. Produces architecture specs, API designs, and data models.
432
-
433
- ### 5. Break down into tasks
434
-
435
- ```
436
- /cy-create-tasks user-auth
437
- ```
438
-
439
- Analyzes both documents, explores your codebase for relevant files and patterns, produces individually executable task files with status tracking, context, and acceptance criteria.
440
- Generated task files use task schema v2 (`status`, `title`, `type`, `complexity`, `dependencies`). Validate them any time with `compozy tasks validate --name user-auth`.
441
-
442
- ### 6. Execute tasks
443
-
444
- ```bash
445
- compozy tasks run user-auth --ide claude
446
- compozy tasks run user-auth --parallel-tasks
447
- compozy tasks run --multiple user-auth,cleanup --ide claude
448
- compozy tasks run --multiple user-auth,cleanup --parallel --parallel-limit 2
449
- ```
450
-
451
- Each pending task is processed sequentially through the shared daemon — the agent reads the spec, implements the code, validates it, and updates the task status. Use `--dry-run` to preview prompts without executing.
452
- `compozy tasks run` validates task metadata before execution. Use `--skip-validation` when validation already ran elsewhere, or `--force` to continue after validation failures in non-interactive environments.
453
- Use `compozy tasks run --multiple <slug-a>,<slug-b>` when you want one command to enqueue several workflows with the same runtime flags. The input is one comma-separated slug list; `compozy tasks run <slug>` remains the single-workflow command. Add `--parallel` to run independent workflows concurrently in isolated git worktrees instead of one at a time.
454
-
455
- ### 7. Review
456
-
457
- **Option A** — AI-powered review inside your agent:
458
-
459
- ```
460
- /cy-review-round user-auth
461
- ```
462
-
463
- **Option B** — Fetch from an external provider:
464
-
465
- ```bash
466
- compozy reviews fetch user-auth --provider coderabbit --pr 42
467
- ```
468
-
469
- Both produce the same output: `.compozy/tasks/user-auth/reviews-001/issue_*.md`
470
-
471
- ### 8. Fix review issues
472
-
473
- ```bash
474
- compozy reviews fix user-auth --ide claude --concurrent 2 --batch-size 3
177
+ compozy install
178
+ compozy daemon start
179
+ compozy workspace add "$PWD" --name current
180
+ compozy session new --workspace current --agent general
475
181
  ```
476
182
 
477
- Agents triage each issue as valid or invalid, implement fixes for valid issues, and update statuses. Provider threads are resolved automatically.
478
-
479
- ### 9. Iterate and ship
480
-
481
- Repeat steps 7–8. Each cycle creates a new review round (`reviews-002/`, `reviews-003/`), preserving full history. When clean — merge and ship.
183
+ The [Quick Start](https://compozy.com/runtime/core/getting-started/quick-start) continues through the
184
+ first prompt, inspection, and stop/resume flow.
482
185
 
483
186
  ## 🧩 Skills
484
187
 
485
- Compozy bundles 9 core skills that its workflows depend on. They run inside your AI agent — no context switching to external tools.
486
-
487
- | Skill | Purpose |
488
- | -------------------- | -------------------------------------------------------------------------- |
489
- | `cy-create-prd` | Idea → Product Requirements Document with ADRs |
490
- | `cy-create-techspec` | PRD → Technical Specification with architecture exploration |
491
- | `cy-create-tasks` | PRD + TechSpec → Independently implementable task files |
492
- | `cy-execute-task` | Executes one task end-to-end: implement, validate, track, commit |
493
- | `cy-workflow-memory` | Maintains cross-task context so agents pick up where the last one left off |
494
- | `cy-review-round` | Comprehensive code review → structured issue files |
495
- | `cy-fix-reviews` | Triage, fix, verify, and resolve review issues |
496
- | `cy-final-verify` | Enforces verification evidence before any completion claim |
497
-
498
- Optional first-party extension skills:
499
-
500
- | Skill | Purpose |
501
- | ----------------- | ------------------------------------------------------------------------------------------- |
502
- | `cy-idea-factory` | Raw idea → structured idea spec with market research, business analysis, and council debate |
503
-
504
- Install the optional ideation extension with:
188
+ Skills are daemon-discovered resources with explicit source and scope. Use the structured skill and
189
+ marketplace surfaces to inspect what is active instead of copying v0.2 setup directories forward.
505
190
 
506
191
  ```bash
507
- compozy ext install --yes compozy/compozy --remote github --ref <tag> --subdir extensions/cy-idea-factory
508
- compozy ext enable cy-idea-factory
509
- compozy setup
192
+ compozy skill list -o json
193
+ compozy skill inspect <name> -o json
194
+ compozy marketplace search --kind skill --query <term> -o json
510
195
  ```
511
196
 
512
197
  ### 🧠 Workflow Memory
513
198
 
514
- When agents execute tasks, context gets lost between runs — decisions made, errors hit, patterns discovered. Compozy solves this with a two-tier memory system that gives each agent a running history of the workflow.
515
-
516
- Every task execution automatically bootstraps two markdown files inside `.compozy/tasks/<name>/memory/`:
517
-
518
- | File | Scope | What goes here |
519
- | ------------ | ------------------ | ------------------------------------------------------------------------------- |
520
- | `MEMORY.md` | Cross-task, shared | Architecture decisions, discovered patterns, open risks, handoffs between tasks |
521
- | `task_01.md` | Single task | Objective snapshot, files touched, errors hit, what's ready for the next run |
522
-
523
- **How it works:**
524
-
525
- 1. Before a task runs, Compozy creates the memory directory and scaffolds both files with section templates if they don't exist yet.
526
- 2. The agent reads both memory files before writing any code — treating them as mandatory context, not optional notes.
527
- 3. During execution, the agent keeps task memory current: decisions, learnings, errors, and corrections.
528
- 4. Only durable, cross-task context gets promoted to shared memory. Task-local details stay in the task file.
529
- 5. Before completion, the agent updates memory with anything that helps the next run start faster.
530
-
531
- **Automatic compaction.** Memory files have soft limits (150 lines / 12 KB for shared, 200 lines / 16 KB per task). When a file exceeds its threshold, Compozy flags it for compaction — the agent trims noise and repetition while preserving active risks, decisions, and handoffs.
532
-
533
- **No duplication.** Memory files don't copy what's already in the repo, git history, PRD, or task specs. They capture only what would otherwise be lost between runs: the _why_ behind decisions, surprising findings, and context that makes the next agent immediately productive.
534
-
535
- The `cy-workflow-memory` skill handles all of this automatically when referenced in task prompts. No manual setup required — run `compozy tasks run <workflow>` and agents inherit context from every previous run.
199
+ Durable memory is scoped and daemon-owned. Agents can inspect, propose, and consolidate memory through
200
+ the same public contracts as people. The v0.2 workflow-memory files remain ordinary repository
201
+ artifacts; they are not imported as hidden runtime state.
536
202
 
537
203
  ### 🤖 Supported Agents
538
204
 
539
- **Execution** (`compozy exec`, `compozy tasks run`, `compozy reviews fix`) — ACP-capable runtimes that can run ad hoc prompts and daemon-backed workflow tasks:
540
-
541
- | Agent | `--ide` flag |
542
- | -------------- | -------------- |
543
- | Claude Code | `claude` |
544
- | Codex | `codex` |
545
- | GitHub Copilot | `copilot` |
546
- | Devin CLI | `devin` |
547
- | Cursor | `cursor-agent` |
548
- | Droid | `droid` |
549
- | OpenCode | `opencode` |
550
- | Pi | `pi` |
551
- | Gemini | `gemini` |
552
-
553
- **Skill installation** (`compozy setup`) — 40+ agents and editors, including Claude Code, Codex, Cursor, Devin CLI, Droid, OpenCode, Pi, Gemini CLI, GitHub Copilot, Windsurf, Amp, Continue, Goose, Roo Code, Augment, Kiro CLI, Cline, and many more. `compozy setup` installs core workflow skills plus any setup assets shipped by enabled extensions. Run `compozy setup` to see all detected agents on your system.
554
-
555
- When installing to multiple agents, Compozy offers two modes:
556
-
557
- - **Symlink** _(default)_ — One canonical copy with symlinks from each agent directory. All agents stay in sync.
558
- - **Copy** — Independent copies per agent. Use `--copy` when symlinks are not supported.
205
+ Compozy runs ACP-compatible agent CLIs and adapters. The active provider catalog and each agent's
206
+ runtime settings are runtime truth; inspect them before selecting a model or reasoning mode. See the
207
+ [provider guide](https://compozy.com/runtime/core/agents/providers) for authentication and
208
+ provider-home policies.
559
209
 
560
210
  ## 📖 CLI Reference
561
211
 
562
- <details>
563
- <summary><code>compozy setup</code> — Install core skills and enabled extension assets</summary>
564
-
565
- ```bash
566
- compozy setup [flags]
567
- ```
568
-
569
- | Flag | Default | Description |
570
- | ---------------- | ------- | ---------------------------------------------------------------- |
571
- | `--agent`, `-a` | | Target agent name (repeatable) |
572
- | `--skill`, `-s` | | Skill name to install (repeatable) |
573
- | `--global`, `-g` | `false` | Install to user directory instead of project |
574
- | `--copy` | `false` | Copy files instead of symlinking |
575
- | `--list`, `-l` | `false` | List core skills and enabled extension assets without installing |
576
- | `--yes`, `-y` | `false` | Skip confirmation prompts |
577
- | `--all` | `false` | Install all skills to all agents |
578
-
579
- </details>
580
-
581
- <details>
582
- <summary><code>compozy migrate</code> — Convert legacy XML-tagged artifacts to frontmatter</summary>
583
-
584
- ```bash
585
- compozy migrate [flags]
586
- ```
587
-
588
- | Flag | Default | Description |
589
- | --------------- | ---------------- | ------------------------------------------------- |
590
- | `--root-dir` | `.compozy/tasks` | Workflow root to scan recursively |
591
- | `--name` | | Restrict migration to one workflow name |
592
- | `--tasks-dir` | | Restrict migration to one task workflow directory |
593
- | `--reviews-dir` | | Restrict migration to one review round directory |
594
- | `--dry-run` | `false` | Preview migrations without writing files |
595
-
596
- </details>
597
-
598
- <details>
599
- <summary><code>compozy sync</code> — Reconcile workflow artifacts into daemon state</summary>
600
-
601
- ```bash
602
- compozy sync [flags]
603
- ```
604
-
605
- | Flag | Default | Description |
606
- | ------------- | ---------------- | -------------------------------------------- |
607
- | `--root-dir` | `.compozy/tasks` | Workflow root to scan |
608
- | `--name` | | Restrict sync to one workflow name |
609
- | `--tasks-dir` | | Restrict sync to one task workflow directory |
610
-
611
- </details>
612
-
613
- <details>
614
- <summary><code>compozy daemon</code> — Manage the shared home-scoped daemon</summary>
615
-
616
- ```bash
617
- compozy daemon start
618
- compozy daemon status
619
- compozy daemon stop [--force]
620
- ```
621
-
622
- Use `daemon start` for an explicit bootstrap, `daemon status` for health and transport info, and `daemon stop` for graceful shutdown. Most workflow commands auto-start the daemon for you.
623
-
624
- </details>
625
-
626
- <details>
627
- <summary><code>compozy workspaces</code> — Manage daemon workspace registrations</summary>
628
-
629
- ```bash
630
- compozy workspaces list [--format text|json]
631
- compozy workspaces show <id-or-path> [--format text|json]
632
- compozy workspaces register <path> [--name display-name] [--format text|json]
633
- compozy workspaces unregister <id-or-path> [--format text|json]
634
- compozy workspaces resolve <path> [--format text|json]
635
- ```
636
-
637
- The daemon lazily registers workspaces on first use, but the `workspaces` family gives operators explicit control over the registry.
638
-
639
- </details>
640
-
641
- <details>
642
- <summary><code>compozy tasks validate</code> — Validate task metadata before execution</summary>
643
-
644
- ```bash
645
- compozy tasks validate [--name my-feature | --tasks-dir .compozy/tasks/my-feature] [--format text|json]
646
- ```
647
-
648
- Use `tasks validate` to check every `task_*.md` file in a workflow directory against the v2 task metadata schema before you run `tasks run`.
649
-
650
- </details>
651
-
652
- <details>
653
- <summary><code>compozy tasks run</code> — Start one daemon-backed workflow run</summary>
654
-
655
- ```bash
656
- compozy tasks run <slug> [flags]
657
- ```
658
-
659
- The CLI resolves workspace defaults locally, validates the task metadata, auto-starts the daemon when needed, and then starts the workflow through the daemon transport.
660
-
661
- | Flag | Default | Description |
662
- | ------------------------- | ------------- | ------------------------------------------------------------------------------------------------ |
663
- | `--name` | | Workflow slug (defaults to the positional slug) |
664
- | `--multiple` | | Comma-separated workflow slugs to run through one daemon-owned parent queue |
665
- | `--parallel` | `false` | Run `--multiple` workflows concurrently in isolated git worktrees (valid only with `--multiple`) |
666
- | `--parallel-limit` | `2` | Max children started at once in `--parallel` mode; must be `> 0` (valid only with `--multiple`) |
667
- | `--parallel-tasks` | `false` | Use per-task worktrees plus an integration branch for dependency-aware waves |
668
- | `--include-completed` | `false` | Re-run completed tasks |
669
- | `--recursive`, `-r` | `false` | Discover `task_NNN.md` files in nested subdirectories of the workflow root |
670
- | `--skip-validation` | `false` | Skip task metadata preflight; use only when validation already ran elsewhere |
671
- | `--force` | `false` | Continue after task metadata validation fails in non-interactive mode |
672
- | `--attach` | `auto` | Attach mode: `auto`, `ui`, `stream`, or `detach` |
673
- | `--ui` | `false` | Force interactive TUI attach mode |
674
- | `--stream` | `false` | Force textual stream attach mode |
675
- | `--detach` | `false` | Start the run without attaching a client |
676
- | `--task-runtime` | | Per-task runtime override rule (`type=...`, `id=...`, `ide=...`, `model=...`, etc.) |
677
- | `--recovery` | `false` | Enable agentic recovery for failed runs |
678
- | `--no-recovery` | `false` | Disable agentic recovery for this invocation |
679
- | `--recovery-ide` | `codex` | Runtime used by the recovery agent |
680
- | `--recovery-model` | `gpt-5.6-sol` | Model used by the recovery agent |
681
- | `--recovery-reasoning` | `medium` | Recovery agent reasoning effort: `low`, `medium`, `high`, `xhigh`, `max`, or `ultra` |
682
- | `--recovery-max-attempts` | `1` | Recovery remediation plus restart cycles; must be between `1` and `3` |
683
-
684
- When `--recursive` is set, tasks are grouped by directory (root tasks first, then each subdirectory in alphabetical order, numerically within), and `_`/`.`-prefixed directories, `reviews-*` rounds, `adrs/`, and `memory/` are skipped. The same setting can be persisted as `[tasks.run] recursive = true` in workspace TOML or chosen from the interactive task-runtime form.
685
-
686
- Use `tasks run --multiple` when you want to start several task workflows from one invocation with the same runtime flags. Use `tasks run <slug>` when you only need one workflow run, when a script expects a single workflow slug, or when you want the existing single-run command path.
687
-
688
- For one workflow, `--parallel-tasks` is the explicit per-run choice to execute pending task files in dependency waves using isolated task worktrees and a dedicated integration branch, bounded by `[tasks.run.parallel] max_concurrency`:
689
-
690
- ```bash
691
- compozy tasks run my-feature --parallel-tasks
692
- ```
693
-
694
- The `--multiple` flag takes one comma-separated slug list:
695
-
696
- ```bash
697
- compozy tasks run --multiple alpha,beta --ide codex --model gpt-5.6-sol
698
- compozy tasks run --multiple alpha,beta --stream
699
- compozy tasks run --multiple alpha,beta --detach
700
- ```
701
-
702
- Scheduling is controlled by the `--parallel`/`--parallel-limit` flags or by `.compozy/config.toml` / `~/.compozy/config.toml`:
703
-
704
- ```toml
705
- [tasks.run]
706
- run_multiple_mode = "enqueued" # "enqueued" (default) or "parallel"
707
- run_multiple_parallel_limit = 2 # max concurrent children in parallel mode
708
- ```
709
-
710
- `"enqueued"` (the default) runs one child workflow at a time in the requested order. `"parallel"` runs independent children concurrently, each in its own isolated git worktree, bounded by the parallel limit:
711
-
712
- ```bash
713
- compozy tasks run --multiple alpha,beta --parallel
714
- compozy tasks run --multiple alpha,beta --parallel --parallel-limit 3
715
- ```
716
-
717
- Resolution precedence:
718
-
719
- - Mode: `--parallel` flag > `run_multiple_mode` config > `enqueued` default.
720
- - Limit: `--parallel-limit <n>` flag > `run_multiple_parallel_limit` config > `2` default.
721
-
722
- Before starting, the CLI prints the resolved execution kind, whether it uses
723
- worktrees, and the source of the choice (explicit flag, workspace config, or
724
- built-in default). The interactive wizard always presents an exclusive choice
725
- between **Serial queue (no worktrees)** and **Parallel workflows (git
726
- worktrees)** when multiple workflows are selected, and repeats it on the review
727
- screen.
728
-
729
- `--parallel` and `--parallel-limit` are valid only with `--multiple`, and the limit must be a positive integer; invalid combinations are rejected before the daemon is contacted.
730
-
731
- **Worktree isolation.** In parallel mode the parent workspace must be on a named git branch. Compozy resolves the current branch and `HEAD` once, then creates one named-result git worktree per child under `~/.compozy/state/worktrees/`. Each child runs with its workspace root and task directory remapped into that worktree, so concurrent agents get isolated working trees, indexes, and `HEAD`s while sharing the repository object store. Worktrees do **not** isolate shared runtime resources such as ports, credentials, provider rate limits, caches, or external services — treat parallel batches as genuinely independent tasks.
732
-
733
- **Safe cleanup and result branches.** Multi-spec output is never merged automatically into the user's branch. Each child receives a deterministic `compozy/multi-*` result branch. After settlement, a clean worktree can be removed while its committed output remains on that branch; an empty result branch is deleted when it still points at the base. Dirty trees or output without a proven retention point remain `preserved` with an explicit reason. `compozy runs purge` applies the same ownership, dirty-tree, and commit-retention checks before deleting old run metadata.
734
-
735
- Within one workflow, successful dependency-wave output is squash-merged into a temporary integration branch and fast-forwarded only if every required task succeeds. Task worktrees are removed after that output is retained. On failure, the user's branch is unchanged; partial output and unsafe trees are preserved with reasons for inspection.
736
-
737
- **Fail-late aggregation.** A child failure does not cancel its siblings. The parent reaches a terminal status only after every started child settles: `completed` when all children complete, or `failed` when any child fails, crashes, or cannot start (the parent error names the failed slugs). Canceling the parent cancels running children and marks not-started children canceled. In non-TUI runs the parent command exits non-zero when the aggregate status is failed, canceled, or crashed.
738
-
739
- **Handoff output.** After the queue settles, `--stream` runs (and the UI-settled fallback) print a final handoff that lists each child in requested order, including the retained result branch and any worktree preserved for inspection:
740
-
741
- ```text
742
- task multi-run handoff:
743
- alpha completed | run=child-alpha | worktree=~/.compozy/state/worktrees/<ws>/<parent>/01-alpha | result_branch=compozy/multi-...-01-alpha | worktree_status=removed
744
- beta failed | run=child-beta | worktree=~/.compozy/state/worktrees/<ws>/<parent>/02-beta | worktree_status=preserved | worktree_reason=uncommitted changes | boom
745
- ```
746
-
747
- Missing run ids or worktree metadata render as `-`. Streamed child events carry the path, lifecycle status, reason, and result branch when known; the TUI shows the same handoff metadata for the selected child.
748
-
749
- Cross-workspace runs are different from `--multiple` scheduling: the home-scoped daemon accepts separate `compozy tasks run` invocations from different workspaces concurrently and does not queue or reject the second run. Before starting a non-dry-run task workflow, the CLI checks daemon status; if active runs belong to another registered workspace, it warns with the busy workspace name/path and run ID, then proceeds. The warning is skipped when the daemon is idle, when the active run belongs to the same workspace, or when `--dry-run` is set.
750
-
751
- In the TUI, every requested slug has a tab. Queued tabs appear before their child run exists, the running tab shows the familiar task-run surface, and completed, failed, or canceled tabs remain available for inspection. The quit dialog applies to the parent queue: `Close TUI` detaches and leaves the queue running in the daemon, `Stop Run` cancels the parent queue, cancels the active child, and marks queued workflows canceled, and `Cancel` returns to the TUI without changing execution.
752
-
753
- The multi-run path uses the same attach and runtime flags as single-run `tasks run`, except `--multiple` cannot be combined with a positional slug, `--name`, or `--parallel-tasks`.
754
-
755
- </details>
756
-
757
- <details>
758
- <summary><code>compozy reviews</code> — Inspect and remediate review workflows</summary>
212
+ The generated [CLI reference](https://compozy.com/runtime/cli-reference) is authoritative for verbs,
213
+ flags, structured output, and exit behavior. Start with:
759
214
 
760
215
  ```bash
761
- compozy reviews fetch <slug> [--provider coderabbit --pr 42 --round N]
762
- compozy reviews list <slug>
763
- compozy reviews show <slug> [round]
764
- compozy reviews fix <slug> [flags]
216
+ compozy --help
217
+ compozy version
218
+ compozy doctor -o json
765
219
  ```
766
220
 
767
- `reviews fetch` imports provider feedback into `.compozy/tasks/<slug>/reviews-NNN/`. `reviews fix` uses the same daemon-backed runtime model as `tasks run`, including `--attach`, `--ui`, `--stream`, and `--detach`.
221
+ ## Documentation
768
222
 
769
- </details>
223
+ - [Runtime overview](https://compozy.com/runtime)
224
+ - [Installation](https://compozy.com/runtime/core/getting-started/installation)
225
+ - [Quick Start](https://compozy.com/runtime/core/getting-started/quick-start)
226
+ - [Migrate from v0.2.15](MIGRATION_GUIDE.md)
227
+ - [CLI reference](https://compozy.com/runtime/cli-reference)
228
+ - [Compozy Network protocol](https://compozy.com/protocol)
229
+ - [GitHub releases](https://github.com/compozy/compozy/releases)
770
230
 
771
- <details>
772
- <summary><code>compozy runs</code> — Reattach, observe, and clean daemon-managed runs</summary>
773
-
774
- ```bash
775
- compozy runs attach <run-id>
776
- compozy runs watch <run-id>
777
- compozy runs purge
778
- ```
779
-
780
- Use `runs attach` to restore the interactive TUI for an existing run, `runs watch` for textual streaming observation, and `runs purge` to delete terminal run artifacts according to the configured retention policy. Purge also removes clean Compozy-owned preserved worktrees recorded by terminal run events under `~/.compozy/state/worktrees/`; it ignores paths outside that root and stops before deleting run metadata if a task worktree is dirty.
781
-
782
- </details>
783
-
784
- <details>
785
- <summary><code>compozy archive</code> — Move fully completed workflows into the archive root</summary>
786
-
787
- ```bash
788
- compozy archive [flags]
789
- ```
790
-
791
- | Flag | Default | Description |
792
- | ------------- | ---------------- | ------------------------------------------------- |
793
- | `--root-dir` | `.compozy/tasks` | Workflow root to scan |
794
- | `--name` | | Restrict archiving to one workflow name |
795
- | `--tasks-dir` | | Restrict archiving to one task workflow directory |
796
-
797
- </details>
798
-
799
- <details>
800
- <summary><code>compozy exec</code> — Execute one ad hoc prompt</summary>
801
-
802
- ```bash
803
- compozy exec [prompt] [flags]
804
- ```
805
-
806
- Provide exactly one prompt source: a positional prompt, `--prompt-file`, or `stdin`. When present, `~/.compozy/config.toml` and `.compozy/config.toml` can provide exec defaults through `[exec]` and shared runtime defaults through `[defaults]`.
807
-
808
- `compozy exec` is headless and ephemeral by default. Use `--agent <name>` to execute a reusable agent from `.compozy/agents/` or `~/.compozy/agents/`, `--persist` to create `~/.compozy/runs/<run-id>/` for resumable sessions, `--run-id` to continue a persisted session, `--format json` for lean JSONL, `--format raw-json` for the full raw event stream, and `--tui` to opt back into the interactive UI.
809
-
810
- | Flag | Default | Description |
811
- | ---------------------------- | ------------- | ------------------------------------------------------------------------------------------ |
812
- | `--ide` | `codex` | Runtime: `claude`, `codex`, `copilot`, `cursor-agent`, `droid`, `gemini`, `opencode`, `pi` |
813
- | `--model` | _(per IDE)_ | Model override |
814
- | `--agent` | | Reusable agent to execute from `.compozy/agents/` or `~/.compozy/agents/` |
815
- | `--prompt-file` | | Read prompt text from a file |
816
- | `--format` | `text` | Output contract: `text`, `json`, or `raw-json` |
817
- | `--reasoning-effort` | `medium` | `low`, `medium`, `high`, `xhigh`, `max`, `ultra` |
818
- | `--access-mode` | `full` | `default` or `full` runtime access policy |
819
- | `--timeout` | `10m` | Activity timeout per job |
820
- | `--recovery` | `false` | Enable agentic recovery for failed exec runs |
821
- | `--no-recovery` | `false` | Disable agentic recovery for this invocation |
822
- | `--recovery-ide` | `codex` | Runtime used by the recovery agent |
823
- | `--recovery-model` | `gpt-5.6-sol` | Model used by the recovery agent |
824
- | `--recovery-reasoning` | `medium` | Recovery agent reasoning effort: `low`, `medium`, `high`, `xhigh`, `max`, or `ultra` |
825
- | `--recovery-max-attempts` | `1` | Recovery remediation plus restart cycles; must be between `1` and `3` |
826
- | `--max-retries` | `2` | Retry execution-stage ACP failures or timeouts N times |
827
- | `--retry-backoff-multiplier` | `1.5` | Multiplier applied to the next timeout after each retry |
828
- | `--tail-lines` | `0` | Maximum log lines retained per job in UI (`0` = full history) |
829
- | `--add-dir` | | Additional directories to allow (repeatable; currently `claude` and `codex` only) |
830
- | `--auto-commit` | `false` | Include automatic commit instructions when the prompt asks for code changes |
831
- | `--verbose` | `false` | Emit operational runtime logs to stderr during exec |
832
- | `--tui` | `false` | Open the interactive TUI instead of headless stdout output |
833
- | `--persist` | `false` | Persist exec artifacts under `~/.compozy/runs/<run-id>/` |
834
- | `--run-id` | | Resume a previously persisted exec session by run id |
835
- | `--dry-run` | `false` | Preview prompts without executing |
836
-
837
- </details>
838
-
839
- <details>
840
- <summary><code>compozy agents</code> — Discover and inspect reusable agents</summary>
841
-
842
- ```bash
843
- compozy agents list
844
- compozy agents inspect <name>
845
- ```
846
-
847
- `compozy agents list` prints resolved agents from workspace and global scope, then reports any invalid definitions without hiding the valid ones. `compozy agents inspect <name>` prints the resolved source, runtime defaults, MCP summary, and validation status for one agent. Invalid inspections print the validation report first and then exit non-zero.
231
+ ## 🛠️ Development
848
232
 
849
- Examples:
233
+ CompozyOS is a Go and Bun monorepo. Start the daemon with automatic Go rebuilds and the web UI with
234
+ Vite HMR:
850
235
 
851
236
  ```bash
852
- compozy agents list
853
- compozy agents inspect reviewer
854
- compozy agents inspect repo-copilot
237
+ make dev
855
238
  ```
856
239
 
857
- </details>
858
-
859
- <details>
860
- <summary><code>compozy ext</code> — Manage executable extensions</summary>
240
+ Run the full repository gate once the change is ready:
861
241
 
862
242
  ```bash
863
- compozy ext <subcommand> [flags]
864
- ```
865
-
866
- | Subcommand | Description |
867
- | ---------------------- | -------------------------------------------------- |
868
- | `ext list` | List discovered extensions across all scopes |
869
- | `ext inspect <name>` | Show manifest, capabilities, and enablement status |
870
- | `ext install <path>` | Install an extension into the user scope |
871
- | `ext uninstall <name>` | Remove a user-scoped extension |
872
- | `ext enable <name>` | Enable an extension on this machine |
873
- | `ext disable <name>` | Disable an extension on this machine |
874
- | `ext doctor` | Validate manifests and report health warnings |
875
-
876
- </details>
877
-
878
- <details>
879
- <summary><strong>Go Package Usage</strong> — Use Compozy as a library in your own tools</summary>
880
-
881
- ```go
882
- // Prepare work without executing
883
- prep, err := compozy.Prepare(context.Background(), compozy.Config{
884
- Name: "multi-repo",
885
- TasksDir: ".compozy/tasks/multi-repo",
886
- Mode: compozy.ModePRDTasks,
887
- DryRun: true,
888
- })
889
-
890
- // Fetch reviews and run remediation
891
- _, _ = compozy.FetchReviews(context.Background(), compozy.Config{
892
- Name: "my-feature",
893
- Provider: "coderabbit",
894
- PR: "259",
895
- })
896
-
897
- // Preview a legacy artifact migration
898
- _, _ = compozy.Migrate(context.Background(), compozy.MigrationConfig{
899
- DryRun: true,
900
- })
901
-
902
- _ = compozy.Run(context.Background(), compozy.Config{
903
- Name: "my-feature",
904
- Mode: compozy.ModePRReview,
905
- IDE: compozy.IDECodex,
906
- ReasoningEffort: "medium",
907
- })
908
-
909
- // Embed the Cobra command in another CLI
910
- root := compozy.NewCommand()
911
- _ = root.Execute()
243
+ make verify
912
244
  ```
913
245
 
914
- </details>
915
-
916
- <details>
917
- <summary><strong>Project Layout</strong></summary>
918
-
919
- ```
920
- cmd/compozy/ CLI entry point
921
- compozy.go Public Go API + reusable Cobra command helpers
922
- internal/cli/ Cobra flags, interactive form, CLI glue
923
- internal/core/ Internal facade for preparation and execution
924
- agent/ IDE command validation and process construction
925
- agents/ Reusable agent discovery, validation, MCP merge, nested execution
926
- extension/ Extension manifest, discovery, hooks, Host API, lifecycle
927
- memory/ Workflow memory bootstrapping, inspection, and compaction detection
928
- model/ Shared runtime data structures
929
- plan/ Input discovery, filtering, grouping, batch prep
930
- prompt/ Prompt builders emitting runtime context + skill names
931
- run/ Execution pipeline, logging, shutdown, Bubble Tea UI
932
- internal/setup/ Bundled skill and council-agent installer (agent detection, symlink/copy)
933
- internal/version/ Build metadata
934
- sdk/extension/ Public Go SDK for extension authors
935
- sdk/extension-sdk-ts/ Public TypeScript SDK for extension authors
936
- sdk/create-extension/ CLI scaffolder for new extension projects
937
- skills/ Bundled installable skills
938
- .compozy/config.toml Optional workspace defaults for CLI execution
939
- .compozy/agents/ Optional reusable agents (`AGENT.md` + optional `mcp.json`)
940
- .compozy/extensions/ Workspace-scoped extensions (starts disabled)
941
- ~/.compozy/runs/ Home-scoped runtime artifacts for daemon-managed and persisted exec runs
942
- .compozy/tasks/ Default workflow artifact root (PRDs, TechSpecs, tasks, ADRs, reviews)
943
- ```
944
-
945
- </details>
946
-
947
- ## 🛠️ Development
948
-
949
- ```bash
950
- make verify # Full pipeline: fmt → lint → test → build
951
- make fmt # Format code
952
- make lint # Lint (zero tolerance)
953
- make test # Tests with race detector
954
- make build # Compile binary
955
- make deps # Tidy and verify modules
956
- ```
246
+ Read [AGENTS.md](AGENTS.md), the surface-specific instructions, and the
247
+ [contribution guide](skills/compozy/references/contributing-to-compozy.md) before editing.
957
248
 
958
249
  ## Star History
959
250
 
@@ -967,8 +258,18 @@ make deps # Tidy and verify modules
967
258
 
968
259
  ## 🤝 Contributing
969
260
 
970
- Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
261
+ Contributions are welcome. Open an issue or pull request, keep public behavior agent-manageable, and
262
+ run `make verify` before sending changes. [Security reports](SECURITY.md) belong in the repository's
263
+ private security channel, not a public issue.
264
+
265
+ ## Contributors
266
+
267
+ Thanks to everyone who has contributed to Compozy.
268
+
269
+ <a href="https://github.com/compozy/compozy/graphs/contributors">
270
+ <img src="https://contrib.rocks/image?repo=compozy/compozy" alt="Contributors" />
271
+ </a>
971
272
 
972
273
  ## 📄 License
973
274
 
974
- [MIT](LICENSE)
275
+ Compozy is distributed under the [MIT License](LICENSE).
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@compozy/cli",
3
3
  "type": "module",
4
- "version": "0.2.15",
5
- "description": "Compozy CLI",
4
+ "version": "0.3.0-beta.1",
5
+ "description": "A local-first operating system for agent work.",
6
6
  "scripts": {
7
7
  "postinstall": "node install.js",
8
8
  "run": "node run-compozy.js"
@@ -11,8 +11,8 @@
11
11
  "type": "git",
12
12
  "url": "git+https://github.com/compozy/compozy.git"
13
13
  },
14
- "author": "Compozy Team \u003csupport@compozy.com\u003e",
15
- "license": "BSL-1.1",
14
+ "author": "Compozy Team",
15
+ "license": "MIT",
16
16
  "bugs": {
17
17
  "url": "https://github.com/compozy/compozy/issues"
18
18
  },
@@ -23,67 +23,55 @@
23
23
  "dependencies": {
24
24
  "jszip": "3.10.1",
25
25
  "proxy-agent": "8.0.2",
26
- "tar": "7.5.19"
26
+ "tar": "7.5.22"
27
27
  },
28
28
  "archives": {
29
29
  "darwin-arm64": {
30
- "name": "compozy_0.2.15_darwin_arm64.tar.gz",
31
- "url": "https://github.com/compozy/compozy/releases/download/v0.2.15/compozy_0.2.15_darwin_arm64.tar.gz",
30
+ "name": "compozy_darwin_arm64.tar.gz",
31
+ "url": "https://github.com/compozy/compozy/releases/download/v0.3.0-beta.1/compozy_darwin_arm64.tar.gz",
32
32
  "bins": [
33
33
  "compozy"
34
34
  ],
35
35
  "format": "tar.gz",
36
36
  "checksum": {
37
37
  "algorithm": "sha256",
38
- "digest": "cf7d2d70c4bc75695230569d10b64770d1a77eb0ed39359867614aa2fbf6842f"
38
+ "digest": "3fe23e670c60525b6595b1070daa12f196ac74625c8311aeda1ace81b94b6816"
39
39
  }
40
40
  },
41
41
  "darwin-x64": {
42
- "name": "compozy_0.2.15_darwin_x86_64.tar.gz",
43
- "url": "https://github.com/compozy/compozy/releases/download/v0.2.15/compozy_0.2.15_darwin_x86_64.tar.gz",
42
+ "name": "compozy_darwin_x86_64.tar.gz",
43
+ "url": "https://github.com/compozy/compozy/releases/download/v0.3.0-beta.1/compozy_darwin_x86_64.tar.gz",
44
44
  "bins": [
45
45
  "compozy"
46
46
  ],
47
47
  "format": "tar.gz",
48
48
  "checksum": {
49
49
  "algorithm": "sha256",
50
- "digest": "fe00d83ba785c5236cb17908a6ecfdf98037c2a83076561807a8791e5a7280df"
50
+ "digest": "531c1c73316244fb57c9bf5686c4a20d9b17f32433f87c80d404824fc9413205"
51
51
  }
52
52
  },
53
53
  "linux-arm64": {
54
- "name": "compozy_0.2.15_linux_arm64.tar.gz",
55
- "url": "https://github.com/compozy/compozy/releases/download/v0.2.15/compozy_0.2.15_linux_arm64.tar.gz",
54
+ "name": "compozy_linux_arm64.tar.gz",
55
+ "url": "https://github.com/compozy/compozy/releases/download/v0.3.0-beta.1/compozy_linux_arm64.tar.gz",
56
56
  "bins": [
57
57
  "compozy"
58
58
  ],
59
59
  "format": "tar.gz",
60
60
  "checksum": {
61
61
  "algorithm": "sha256",
62
- "digest": "d863182b2d6c311335139c881646203281ca2f7235668a2cba15d519e18d4ac3"
62
+ "digest": "c839996517833cc61dc5d9b08985ca7000c2ff726f3fc850f81d49116bbdac91"
63
63
  }
64
64
  },
65
65
  "linux-x64": {
66
- "name": "compozy_0.2.15_linux_x86_64.tar.gz",
67
- "url": "https://github.com/compozy/compozy/releases/download/v0.2.15/compozy_0.2.15_linux_x86_64.tar.gz",
66
+ "name": "compozy_linux_x86_64.tar.gz",
67
+ "url": "https://github.com/compozy/compozy/releases/download/v0.3.0-beta.1/compozy_linux_x86_64.tar.gz",
68
68
  "bins": [
69
69
  "compozy"
70
70
  ],
71
71
  "format": "tar.gz",
72
72
  "checksum": {
73
73
  "algorithm": "sha256",
74
- "digest": "339f5552c7dd19c737b26eedc2b288e94fb1159480f02bff1ecca2e709c9ec13"
75
- }
76
- },
77
- "win32-x64": {
78
- "name": "compozy_0.2.15_windows_x86_64.zip",
79
- "url": "https://github.com/compozy/compozy/releases/download/v0.2.15/compozy_0.2.15_windows_x86_64.zip",
80
- "bins": [
81
- "compozy.exe"
82
- ],
83
- "format": "zip",
84
- "checksum": {
85
- "algorithm": "sha256",
86
- "digest": "d6eb08272c00116f575a58a03fad6c972e3e331713af7bd48043f2e0e88edf48"
74
+ "digest": "15297180cb48130a55ac4e8142bd35d59516a4a9f1e3f5e2899e9f9fdfced4b6"
87
75
  }
88
76
  }
89
77
  }