agent-control-plane 0.1.14 → 0.2.0
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.
- package/README.md +323 -349
- package/bin/pr-risk.sh +28 -6
- package/hooks/heartbeat-hooks.sh +62 -22
- package/npm/bin/agent-control-plane.js +434 -12
- package/package.json +1 -1
- package/references/architecture.md +8 -0
- package/references/control-plane-map.md +6 -2
- package/references/release-checklist.md +0 -2
- package/tools/bin/agent-github-update-labels +6 -1
- package/tools/bin/agent-project-catch-up-issue-pr-links +118 -0
- package/tools/bin/agent-project-catch-up-merged-prs +77 -21
- package/tools/bin/agent-project-catch-up-scheduled-issue-retries +123 -0
- package/tools/bin/agent-project-cleanup-session +84 -0
- package/tools/bin/agent-project-heartbeat-loop +10 -3
- package/tools/bin/agent-project-reconcile-issue-session +45 -12
- package/tools/bin/agent-project-reconcile-pr-session +25 -0
- package/tools/bin/agent-project-run-claude-session +2 -2
- package/tools/bin/agent-project-run-codex-resilient +57 -2
- package/tools/bin/agent-project-run-kilo-session +346 -14
- package/tools/bin/agent-project-run-ollama-session +658 -0
- package/tools/bin/agent-project-run-openclaw-session +73 -25
- package/tools/bin/agent-project-run-opencode-session +354 -14
- package/tools/bin/agent-project-run-pi-session +479 -0
- package/tools/bin/agent-project-worker-status +38 -1
- package/tools/bin/flow-config-lib.sh +123 -3
- package/tools/bin/flow-resident-worker-lib.sh +1 -1
- package/tools/bin/flow-shell-lib.sh +7 -2
- package/tools/bin/heartbeat-recovery-preflight.sh +1 -0
- package/tools/bin/heartbeat-safe-auto.sh +105 -17
- package/tools/bin/install-project-launchd.sh +19 -2
- package/tools/bin/prepare-worktree.sh +4 -4
- package/tools/bin/profile-activate.sh +2 -2
- package/tools/bin/profile-adopt.sh +2 -2
- package/tools/bin/project-init.sh +1 -1
- package/tools/bin/project-runtimectl.sh +90 -7
- package/tools/bin/provider-cooldown-state.sh +14 -14
- package/tools/bin/render-flow-config.sh +30 -33
- package/tools/bin/run-codex-task.sh +53 -4
- package/tools/bin/scaffold-profile.sh +18 -3
- package/tools/bin/start-issue-worker.sh +4 -1
- package/tools/bin/start-pr-fix-worker.sh +33 -0
- package/tools/bin/start-pr-review-worker.sh +34 -0
- package/tools/bin/start-resident-issue-loop.sh +5 -4
- package/tools/bin/sync-agent-repo.sh +2 -2
- package/tools/bin/sync-dependency-baseline.sh +3 -3
- package/tools/bin/sync-shared-agent-home.sh +4 -1
- package/tools/dashboard/app.js +62 -0
- package/tools/dashboard/dashboard_snapshot.py +53 -4
- package/tools/dashboard/index.html +5 -1
- package/tools/dashboard/styles.css +97 -20
- package/tools/templates/pr-fix-template.md +4 -8
- package/tools/templates/pr-merge-repair-template.md +4 -8
- package/tools/templates/pr-review-template.md +2 -1
package/README.md
CHANGED
|
@@ -8,139 +8,196 @@
|
|
|
8
8
|
<a href="https://github.com/sponsors/ducminhnguyen0319"><img alt="GitHub Sponsors" src="https://img.shields.io/badge/sponsor-GitHub%20Sponsors-ea4aaa?style=flat-square&logo=githubsponsors&logoColor=white"></a>
|
|
9
9
|
<a href="https://socket.dev/npm/package/agent-control-plane"><img alt="Socket" src="https://img.shields.io/badge/Socket-79-f5a623?style=flat-square"></a>
|
|
10
10
|
</p>
|
|
11
|
-
`agent-control-plane` helps a repo keep coding agents running reliably without
|
|
12
|
-
constant human babysitting.
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
License: `MIT`
|
|
18
|
-
|
|
19
|
-
Changelog: [CHANGELOG.md](./CHANGELOG.md)
|
|
20
|
-
|
|
21
|
-
Roadmap: [ROADMAP.md](./ROADMAP.md)
|
|
22
|
-
|
|
23
|
-
Architecture: [references/architecture.md](./references/architecture.md)
|
|
24
|
-
|
|
25
|
-
Commands: [references/commands.md](./references/commands.md)
|
|
26
|
-
|
|
27
|
-
It turns a GitHub repo into a managed runtime with a repeatable setup, a stable
|
|
28
|
-
place for state, a real status command, and a dashboard you can glance at
|
|
29
|
-
without spelunking through temp folders, worktrees, or half-remembered `tmux`
|
|
30
|
-
sessions.
|
|
12
|
+
`agent-control-plane` (ACP) keeps your coding agents running reliably without
|
|
13
|
+
you having to stare at them all day.
|
|
31
14
|
|
|
32
|
-
|
|
33
|
-
|
|
15
|
+
It is the operator layer for coding agents that need to keep running after the
|
|
16
|
+
novelty wears off — and the responsible adult in the room that stops them from
|
|
17
|
+
going completely off the rails.
|
|
18
|
+
|
|
19
|
+
- License: [`MIT`](./LICENSE)
|
|
20
|
+
- Changelog: [CHANGELOG.md](./CHANGELOG.md)
|
|
21
|
+
- Roadmap: [ROADMAP.md](./ROADMAP.md)
|
|
22
|
+
- Architecture: [references/architecture.md](./references/architecture.md)
|
|
23
|
+
- Commands: [references/commands.md](./references/commands.md)
|
|
24
|
+
|
|
25
|
+
## The Big Idea
|
|
26
|
+
|
|
27
|
+
Here is the dirty secret nobody in the AI hype cycle wants to admit: **the free
|
|
28
|
+
models are not that dumb.** They are just chaotic. Left alone to manage their
|
|
29
|
+
own execution loop, retry logic, GitHub labels, and publish pipeline, they will
|
|
30
|
+
reliably discover creative new ways to do absolutely nothing useful at 3am while
|
|
31
|
+
you sleep. Give them a tight operating harness and a clear job description,
|
|
32
|
+
however, and suddenly that "not smart enough" free model is grinding through
|
|
33
|
+
your issue backlog like a junior developer who is weirdly enthusiastic about
|
|
34
|
+
reading CI logs.
|
|
35
|
+
|
|
36
|
+
That is what ACP does. It turns a GitHub repo into a managed runtime: a
|
|
37
|
+
repeatable setup, a stable home for state, a heartbeat that keeps agents
|
|
38
|
+
scheduled and supervised, and a dashboard you can actually glance at without
|
|
39
|
+
spelunking through temp folders, worktrees, or half-remembered `tmux` sessions.
|
|
40
|
+
|
|
41
|
+
ACP does not try to be the coding agent. It makes the surrounding system less
|
|
42
|
+
fragile: profile setup, runtime start and stop, heartbeat scheduling,
|
|
34
43
|
reconcile-owned outcomes, background execution, and operator visibility under
|
|
35
|
-
`~/.agent-runtime`.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
`~/.agent-runtime`. The agent writes the code. ACP writes the boring
|
|
45
|
+
infrastructure that keeps the agent from losing its own work.
|
|
46
|
+
|
|
47
|
+
### Free models: surprisingly economical
|
|
48
|
+
|
|
49
|
+
If you are using ACP for research, the economics are almost embarrassing.
|
|
50
|
+
Running a free-tier model like `openrouter/qwen3.6-plus:free` continuously
|
|
51
|
+
across multiple repos costs roughly what a large latte costs — per month, not
|
|
52
|
+
per hour. ACP handles quota cooldowns, stall detection, provider failover, and
|
|
53
|
+
retry backoff, so free-tier models become genuinely useful in a production-shaped
|
|
54
|
+
loop instead of a toy demo. For researchers studying agent behavior, measuring
|
|
55
|
+
output quality, or iterating on prompting strategies at scale: you can run
|
|
56
|
+
hundreds of sessions for what you would otherwise spend on a single GPT-4
|
|
57
|
+
afternoon.
|
|
58
|
+
|
|
59
|
+
**The free model is not brilliant. ACP makes it relentless.**
|
|
60
|
+
|
|
61
|
+
### Smarter models: powerful, and worth supervising
|
|
62
|
+
|
|
63
|
+
ACP works equally well with Claude Sonnet, OpenAI Codex, and other
|
|
64
|
+
high-capability backends. They produce better code, handle harder tasks, and
|
|
65
|
+
generally understand the first time what the free model needed three attempts and
|
|
66
|
+
a blocker comment to figure out.
|
|
67
|
+
|
|
68
|
+
But here is the thing about powerful AI agents running autonomously against your
|
|
69
|
+
GitHub repo: they are, in a very real sense, a slow-burning fuse. An agent with
|
|
70
|
+
broad permissions, no supervision, and no circuit breakers will eventually push
|
|
71
|
+
something broken, auto-merge a PR it should not have touched, burn through a
|
|
72
|
+
monthly API budget in a long weekend, or enter a retry loop that only stops when
|
|
73
|
+
the credit card does.
|
|
74
|
+
|
|
75
|
+
ACP is the person standing next to the fuse. It enforces launch limits,
|
|
76
|
+
reconciles outcomes before touching GitHub, validates before it publishes, and
|
|
77
|
+
respects cooldowns instead of hammering a provider at full throttle. The agent
|
|
78
|
+
gets to be smart and fast. ACP makes sure "smart and fast" does not also mean
|
|
79
|
+
"unattended and irreversible."
|
|
80
|
+
|
|
81
|
+
You would not hand a brilliant but impulsive junior developer the repository
|
|
82
|
+
admin key and leave for a two-week vacation. ACP is the on-call rotation for
|
|
83
|
+
your AI workforce — quiet when things go well, essential when they do not.
|
|
41
84
|
|
|
42
85
|
## Why people use it
|
|
43
86
|
|
|
44
|
-
ACP is useful when you want agent workflows to feel operational instead of
|
|
45
|
-
fragile, improvised, or tied to one lucky terminal session.
|
|
46
|
-
|
|
47
|
-
- replace human babysitting with boring runtime ownership: supervisor,
|
|
48
|
-
heartbeat, reconcile, and status tooling
|
|
49
|
-
- one profile per repo, so every project has a clear runtime identity
|
|
50
|
-
- start, stop, restart, and status commands that behave like operator tooling
|
|
51
|
-
- dashboard visibility instead of hunting through `tmux` panes and temp folders
|
|
52
|
-
- smoke checks before you trust the runtime on real work
|
|
53
|
-
- optional macOS autostart so a reboot does not reset your flow
|
|
54
|
-
- room for multiple worker backends without changing how you operate the repo
|
|
55
|
-
|
|
56
87
|
ACP is a good fit when your pain is not "the agent cannot code" but "the setup
|
|
57
|
-
around the agent is too easy to break
|
|
88
|
+
around the agent is too easy to break" — or "I would trust this agent more if
|
|
89
|
+
it had a supervisor."
|
|
90
|
+
|
|
91
|
+
| Need | What ACP provides |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| Keep agent workflows running without babysitting | Supervisor, heartbeat loop, and reconcile scripts that manage the lifecycle automatically |
|
|
94
|
+
| Get real value out of free-tier models | Quota cooldowns, stall detection, provider failover, and retry backoff that free-tier models need to be actually useful |
|
|
95
|
+
| Manage multiple repos cleanly | One profile per repo with isolated runtime state, each with its own identity and status |
|
|
96
|
+
| Observe what is happening without digging through files | Dashboard and `runtime status` that show the real state without spelunking through `tmux` or temp folders |
|
|
97
|
+
| Compare worker backends on real workloads | Swap between `codex`, `claude`, `openclaw`, `ollama`, `pi`, `opencode`, and `kilo` without rebuilding your runtime habits |
|
|
98
|
+
| Run reproducible agent research cheaply | Cost-controlled execution harness for studying agent behavior, output quality, or prompting strategies |
|
|
99
|
+
| Enforce safety by architecture, not by hope | Launch limits, reconcile gates, and cooldowns that are built into the runtime, not left to chance |
|
|
58
100
|
|
|
59
101
|
## Use Cases
|
|
60
102
|
|
|
61
103
|
Teams and solo builders usually reach for ACP when one of these starts to feel
|
|
62
104
|
familiar:
|
|
63
105
|
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
inferring it from stale branches, dangling sessions, or mystery files
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
around it is messy," this tool is aimed directly at that problem.
|
|
106
|
+
- Issue-driven or PR-driven agent work should keep running in the background,
|
|
107
|
+
but still be inspectable and recoverable when something goes wrong.
|
|
108
|
+
- The project has more than one repo, and each one deserves a clean, separate
|
|
109
|
+
runtime identity instead of sharing state.
|
|
110
|
+
- You want to swap or compare worker backends without rebuilding your runtime
|
|
111
|
+
setup from scratch every time.
|
|
112
|
+
- You want one command to tell you whether automation is healthy, instead of
|
|
113
|
+
inferring it from stale branches, dangling sessions, or mystery files under
|
|
114
|
+
`/tmp`.
|
|
115
|
+
- You are doing research on agent behavior, output quality, or prompt strategy
|
|
116
|
+
and need a reproducible, cost-controlled execution harness.
|
|
117
|
+
- Your local machine should behave like a reliable operator box, not a pile of
|
|
118
|
+
shell history that breaks after a reboot.
|
|
78
119
|
|
|
79
120
|
## Roadmap
|
|
80
121
|
|
|
81
|
-
ACP is moving toward a true multi-backend control plane.
|
|
122
|
+
ACP is moving toward a true multi-backend control plane. The goal is one runtime
|
|
123
|
+
and one dashboard for many coding-agent backends, across macOS, Linux, and
|
|
124
|
+
Windows.
|
|
82
125
|
|
|
83
|
-
|
|
84
|
-
- planned next: `opencode`, `kilo`, `gemini-cli`
|
|
85
|
-
- platform roadmap now calls out Linux, Windows via WSL2, and the longer-term
|
|
86
|
-
native Windows story explicitly
|
|
87
|
-
- adjacent ecosystem targets now include local-model and neighboring runtimes
|
|
88
|
-
such as `ollama`, `nanoclaw`, and `picoclaw`
|
|
89
|
-
- roadmap matrix now distinguishes implemented backends from placeholder
|
|
90
|
-
scaffolds so users can see what is ready today versus what is being prepared
|
|
91
|
-
- long-term direction: one runtime and dashboard for many coding-agent backends
|
|
126
|
+
### Backend Status
|
|
92
127
|
|
|
93
|
-
|
|
128
|
+
| Backend | Status | Notes |
|
|
129
|
+
| --- | --- | --- |
|
|
130
|
+
| `codex` | Production-ready | Full ACP workflow support today. |
|
|
131
|
+
| `claude` | Production-ready | Full ACP workflow support today. |
|
|
132
|
+
| `openclaw` | Production-ready | Full ACP workflow support, including resident-style runs. |
|
|
133
|
+
| `ollama` | Experimental | Working adapter with Node.js agentic loop. Runs any model served by a local Ollama instance. Output quality depends on model size — 7–9B models handle exploration well but struggle with complex multi-step tasks. |
|
|
134
|
+
| `pi` | Experimental | Working adapter using the [pi CLI](https://github.com/mariozechner/pi) in `--print --no-session` mode. Connects to any OpenRouter-compatible model. Useful as a lightweight alternative to openclaw for free-tier model testing. |
|
|
135
|
+
| `opencode` | Experimental | Working adapter for [Crush](https://github.com/charmbracelet/crush) (formerly opencode). Non-interactive `crush run` with full tool execution. |
|
|
136
|
+
| `kilo` | Experimental | Working adapter for [Kilo Code](https://github.com/Kilo-Org/kilocode). Non-interactive `kilo run --auto` with JSON event stream. |
|
|
137
|
+
| `gemini-cli` | Roadmap | Strong future candidate; not wired into ACP yet. |
|
|
138
|
+
| `nanoclaw` | Exploratory | Ecosystem reference for containerized and WSL2-friendly workflows. |
|
|
139
|
+
| `picoclaw` | Exploratory | Ecosystem reference for lightweight Linux and edge-style runtimes. |
|
|
94
140
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
| `kilo` | Scaffolded in the package so routing and docs can evolve, but not implemented for live execution yet. |
|
|
102
|
-
| `gemini-cli` | Not wired into ACP yet, but on the public roadmap as a strong future worker candidate. |
|
|
141
|
+
If you are trying ACP on a real repo right now, start with `codex`, `claude`,
|
|
142
|
+
or `openclaw`. Use `ollama` to run local models — useful for research, offline
|
|
143
|
+
workflows, or comparing local model output against cloud backends without
|
|
144
|
+
incurring API costs. Use `pi` to experiment with OpenRouter-hosted free-tier
|
|
145
|
+
models via the pi CLI. The remaining entries show the direction of travel, not
|
|
146
|
+
finished support.
|
|
103
147
|
|
|
104
|
-
|
|
148
|
+
See [ROADMAP.md](./ROADMAP.md) for the fuller public roadmap.
|
|
105
149
|
|
|
106
|
-
|
|
107
|
-
| --- | --- | --- | --- |
|
|
108
|
-
| `codex` | direct worker | First-class ACP worker backend | production-ready path today |
|
|
109
|
-
| `claude` | direct worker | First-class ACP worker backend | production-ready path today |
|
|
110
|
-
| `openclaw` | direct worker | First-class ACP worker backend with resident workflow support | production-ready path today |
|
|
111
|
-
| `opencode` | direct worker | Planned future worker adapter | placeholder scaffold only |
|
|
112
|
-
| `kilo` | direct worker | Planned future worker adapter | placeholder scaffold only |
|
|
113
|
-
| `gemini-cli` | direct worker | Research target for a future worker adapter | roadmap candidate |
|
|
114
|
-
| `ollama` | local model runtime | Candidate local-model substrate behind future ACP integrations | research target |
|
|
115
|
-
| `nanoclaw` | adjacent agent shell | Ecosystem reference for containerized and WSL2-friendly workflows | exploratory interoperability target |
|
|
116
|
-
| `picoclaw` | adjacent agent shell | Ecosystem reference for lightweight Linux and edge-style agent runtimes | exploratory interoperability target |
|
|
150
|
+
### Using Ollama (local models)
|
|
117
151
|
|
|
118
|
-
|
|
119
|
-
or `openclaw`. The other adapters are there to show the direction of travel,
|
|
120
|
-
not to pretend support is already complete.
|
|
152
|
+
To run ACP with a local model via [Ollama](https://ollama.com):
|
|
121
153
|
|
|
122
|
-
|
|
154
|
+
```bash
|
|
155
|
+
# 1. Install Ollama and pull a model
|
|
156
|
+
ollama pull qwen3.5:9b
|
|
123
157
|
|
|
124
|
-
|
|
158
|
+
# 2. Init a profile with ollama backend
|
|
159
|
+
npx agent-control-plane@latest init \
|
|
160
|
+
--profile-id my-repo \
|
|
161
|
+
--repo-slug owner/my-repo \
|
|
162
|
+
--repo-root ~/src/my-repo \
|
|
163
|
+
--agent-root ~/.agent-runtime/projects/my-repo \
|
|
164
|
+
--worktree-root ~/src/my-repo-worktrees \
|
|
165
|
+
--coding-worker ollama
|
|
166
|
+
|
|
167
|
+
# 3. Configure the model in your profile YAML
|
|
168
|
+
# ~/.agent-runtime/control-plane/profiles/my-repo/control-plane.yaml
|
|
169
|
+
#
|
|
170
|
+
# execution:
|
|
171
|
+
# coding_worker: "ollama"
|
|
172
|
+
# ollama:
|
|
173
|
+
# model: "qwen3.5:9b"
|
|
174
|
+
# base_url: "http://localhost:11434"
|
|
175
|
+
# timeout_seconds: 900
|
|
176
|
+
```
|
|
125
177
|
|
|
126
|
-
The
|
|
127
|
-
|
|
178
|
+
The Ollama adapter runs a Node.js agentic loop that calls the Ollama API with
|
|
179
|
+
tool-use support. It handles both native tool-call responses and models that
|
|
180
|
+
return tool calls as JSON text in the content field.
|
|
128
181
|
|
|
129
|
-
|
|
182
|
+
**Model guidance:** Models in the 7–14B range can explore codebases and run
|
|
183
|
+
commands, but may struggle with complex multi-step repair tasks. Larger models
|
|
184
|
+
(27B+) produce significantly better results if your hardware supports them.
|
|
185
|
+
Thinking mode is disabled by default (`think: false`) and context is set to
|
|
186
|
+
32K tokens to balance speed and capability.
|
|
130
187
|
|
|
131
|
-
|
|
132
|
-
<summary>Animated dashboard walkthrough</summary>
|
|
188
|
+
## See It Running
|
|
133
189
|
|
|
134
|
-
|
|
190
|
+
The dashboard gives you a single view across all active profiles — running
|
|
191
|
+
sessions, recent history, provider cooldowns, scheduled issues, and queue state.
|
|
135
192
|
|
|
136
|
-
|
|
193
|
+

|
|
137
194
|
|
|
138
195
|
## Architecture
|
|
139
196
|
|
|
140
|
-
ACP is easiest to trust once you can see the moving pieces. The
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
197
|
+
ACP is easiest to trust once you can see the moving pieces. The npm package
|
|
198
|
+
stages a shared runtime, installed profiles live outside the package, a shared
|
|
199
|
+
heartbeat loop decides what to launch, worker adapters do the coding work, and
|
|
200
|
+
reconcile scripts own the GitHub-facing outcome.
|
|
144
201
|
|
|
145
202
|
```mermaid
|
|
146
203
|
flowchart LR
|
|
@@ -152,7 +209,7 @@ flowchart LR
|
|
|
152
209
|
Supervisor --> Heartbeat["heartbeat-safe-auto.sh"]
|
|
153
210
|
Heartbeat --> Scheduler["agent-project-heartbeat-loop"]
|
|
154
211
|
Scheduler --> Workers["issue / PR worker launchers"]
|
|
155
|
-
Workers --> Backends["codex / claude / openclaw"]
|
|
212
|
+
Workers --> Backends["codex / claude / openclaw / ollama / pi / opencode / kilo"]
|
|
156
213
|
Backends --> Reconcile["reconcile issue / PR session"]
|
|
157
214
|
Reconcile --> GitHub["issues / PRs / labels / comments"]
|
|
158
215
|
Scheduler --> State["runs + state + history"]
|
|
@@ -202,32 +259,28 @@ Visual assets:
|
|
|
202
259
|
|
|
203
260
|
## Prerequisites
|
|
204
261
|
|
|
205
|
-
ACP is a shell-first operator tool. Most install problems become
|
|
262
|
+
ACP is a shell-first operator tool. Most install problems become easier to
|
|
206
263
|
debug once it is clear which dependency is responsible for which part of the
|
|
207
264
|
system.
|
|
208
265
|
|
|
209
|
-
| Tool | Required |
|
|
266
|
+
| Tool | Required | Purpose | Notes |
|
|
210
267
|
| --- | --- | --- | --- |
|
|
211
|
-
| Node.js `>= 18` | yes | Runs the npm package entrypoint and `npx
|
|
212
|
-
| `bash` | yes |
|
|
213
|
-
| `git` | yes |
|
|
214
|
-
| `gh` | yes |
|
|
215
|
-
| `jq` | yes |
|
|
216
|
-
| `python3` | yes | Powers the dashboard server, snapshot renderer, and
|
|
217
|
-
| `tmux` | yes |
|
|
218
|
-
| Worker CLI
|
|
219
|
-
|
|
|
220
|
-
| `
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
an unmaintained external install. If you already have a custom `codex-quota`
|
|
228
|
-
setup you want to keep, point ACP at it explicitly with
|
|
229
|
-
`ACP_CODEX_QUOTA_BIN=/path/to/codex-quota` and optionally
|
|
230
|
-
`ACP_CODEX_QUOTA_MANAGER_SCRIPT=/path/to/auto-switch.sh`.
|
|
268
|
+
| Node.js `>= 18` | yes | Runs the npm package entrypoint and `npx` wrapper. | CI runs on Node `22`. Node `20` or `22` both work fine. |
|
|
269
|
+
| `bash` | yes | All runtime, profile, and worker orchestration scripts are Bash. | Your login shell can be `zsh`; `bash` just needs to be on `PATH`. |
|
|
270
|
+
| `git` | yes | Manages worktrees, checks branch state, and coordinates repo automation. | Required even if you interact only through GitHub issues and PRs. |
|
|
271
|
+
| `gh` | yes | GitHub CLI auth and API access for issues, PRs, labels, and metadata. | Run `gh auth login` before first use. |
|
|
272
|
+
| `jq` | yes | Parses JSON from `gh` output and worker metadata throughout. | Missing `jq` will break GitHub-heavy and runtime flows. |
|
|
273
|
+
| `python3` | yes | Powers the dashboard server, snapshot renderer, and config helpers. | Required for both dashboard use and several internal scripts. |
|
|
274
|
+
| `tmux` | yes | Runs long-lived worker sessions and captures their status. | Missing `tmux` means background worker workflows will not launch. |
|
|
275
|
+
| Worker CLI (backend-specific) | depends on backend | The coding agent for a profile. Supported: `codex`, `claude`, `openclaw` (production); `ollama`, `pi`, `opencode`, `kilo` (experimental). | Install and authenticate your chosen backend before starting background runs. |
|
|
276
|
+
| `ollama` | for `ollama` backend | Serves local models via OpenAI-compatible API at `http://localhost:11434`. | Install from [ollama.com](https://ollama.com) and pull a model (e.g. `ollama pull qwen3.5:9b`) before use. |
|
|
277
|
+
| `pi` CLI | for `pi` backend | Lightweight coding agent using OpenRouter-compatible APIs. | Install via `npm i -g @mariozechner/pi-coding-agent`. Set `OPENROUTER_API_KEY` before use. |
|
|
278
|
+
| `crush` (opencode) | for `opencode` backend | Go-based coding agent by Charm ([charmbracelet/crush](https://github.com/charmbracelet/crush)). | Install via `brew install charmbracelet/tap/crush`. |
|
|
279
|
+
| `kilo` CLI | for `kilo` backend | TypeScript coding agent ([kilocode/cli](https://github.com/Kilo-Org/kilocode)). | Install via `npm i -g @kilocode/cli`. |
|
|
280
|
+
| Bundled `codex-quota` + ACP quota manager | automatic for Codex | Quota-aware failover and health signals for Codex profiles. | Bundled by default. Override with `ACP_CODEX_QUOTA_BIN` only if you have a custom setup. |
|
|
281
|
+
|
|
282
|
+
Make sure `gh` and your chosen worker backend are both authenticated for the
|
|
283
|
+
same OS user before starting any background runtime.
|
|
231
284
|
|
|
232
285
|
## Install
|
|
233
286
|
|
|
@@ -247,127 +300,69 @@ agent-control-plane help
|
|
|
247
300
|
The examples below use `npx agent-control-plane@latest ...`, but every command
|
|
248
301
|
works the same way after a global install.
|
|
249
302
|
|
|
250
|
-
##
|
|
251
|
-
|
|
252
|
-
If ACP saves you time, helps you keep agent workflows sane, or simply makes
|
|
253
|
-
background automation less annoying, you can support the project.
|
|
303
|
+
## First Run
|
|
254
304
|
|
|
255
|
-
|
|
256
|
-
`https://github.com/sponsors/ducminhnguyen0319`
|
|
257
|
-
- use the npm `funding` metadata so `npm fund` points people to the same place
|
|
258
|
-
- keep the open source core free, then layer in paid help or team features later
|
|
305
|
+
### Option A — Guided setup (recommended)
|
|
259
306
|
|
|
260
|
-
|
|
261
|
-
the sponsor links in `package.json` and `.github/FUNDING.yml`.
|
|
307
|
+
The fastest path is the interactive wizard:
|
|
262
308
|
|
|
263
|
-
|
|
309
|
+
```bash
|
|
310
|
+
npx agent-control-plane@latest setup
|
|
311
|
+
```
|
|
264
312
|
|
|
265
|
-
|
|
313
|
+
The wizard walks you through the full setup in one pass:
|
|
266
314
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
discretion
|
|
315
|
+
1. Detects the current repo and suggests sane defaults
|
|
316
|
+
2. Installs missing dependencies and authenticates `gh`
|
|
317
|
+
3. Checks backend readiness (API keys for openclaw/pi, local server for ollama)
|
|
318
|
+
4. Scaffolds the profile, runs health checks, starts the runtime
|
|
319
|
+
5. Launches the monitoring dashboard in the background
|
|
320
|
+
6. Offers to create recurring starter issues so ACP starts working immediately
|
|
274
321
|
|
|
275
|
-
|
|
322
|
+
After the wizard finishes, your repo has a running agent, a live dashboard,
|
|
323
|
+
and a set of `agent-keep-open` issues that ACP will continuously work through.
|
|
276
324
|
|
|
277
|
-
|
|
325
|
+
To preview exactly what it would do before touching anything:
|
|
278
326
|
|
|
279
327
|
```bash
|
|
280
|
-
npx agent-control-plane@latest setup
|
|
328
|
+
npx agent-control-plane@latest setup --dry-run
|
|
281
329
|
```
|
|
282
330
|
|
|
283
|
-
|
|
284
|
-
`~/.agent-runtime/projects/<profile-id>`, offers to install missing core tools
|
|
285
|
-
when it knows how, can prompt to run `gh auth login`, runs `sync`, scaffolds
|
|
286
|
-
the profile, checks doctor status, reports core tool and auth readiness, and
|
|
287
|
-
can optionally start the runtime for you.
|
|
288
|
-
|
|
289
|
-
Use it when you want ACP to walk you through the install instead of assembling
|
|
290
|
-
the bootstrap sequence by hand.
|
|
291
|
-
|
|
292
|
-
During `setup`, ACP can:
|
|
293
|
-
|
|
294
|
-
- auto-detect the current repo root and GitHub slug when you run it inside a
|
|
295
|
-
checkout with `origin` configured
|
|
296
|
-
- offer to install missing core tools like `gh`, `jq`, `python3`, or `tmux`
|
|
297
|
-
through supported package managers such as `brew`, `apt-get`, `dnf`, `yum`,
|
|
298
|
-
and `pacman`
|
|
299
|
-
- prompt to run `gh auth login` before ACP tries to start background runtime
|
|
300
|
-
flows
|
|
301
|
-
- offer to install supported worker backends like `codex`, `claude`, or
|
|
302
|
-
`openclaw` when ACP knows a safe install command, and otherwise show
|
|
303
|
-
backend-specific next steps, install/auth/verify examples, and a docs URL it
|
|
304
|
-
can open for you on interactive machines
|
|
305
|
-
- defer anchor repo sync automatically when ACP can scaffold the profile but
|
|
306
|
-
cannot reach the repo remote yet, so setup can still finish with a clear
|
|
307
|
-
follow-up instead of failing half way through
|
|
308
|
-
- run one final fix-up summary at the end so you can clear whatever is still
|
|
309
|
-
red instead of guessing which step to retry next
|
|
310
|
-
- scaffold the profile, run doctor checks, and optionally start the runtime in
|
|
311
|
-
one guided pass
|
|
312
|
-
|
|
313
|
-
The wizard now automates ACP's shell/runtime prerequisites and can also
|
|
314
|
-
auto-install supported worker CLIs through npm. If ACP cannot or should not
|
|
315
|
-
install the selected backend itself, it will tell you what is missing, print
|
|
316
|
-
backend-specific next steps, and offer to open the right setup docs before ACP
|
|
317
|
-
tries to launch it.
|
|
318
|
-
|
|
319
|
-
If you want the same flow without prompts, use flags such as
|
|
320
|
-
`--non-interactive`, `--install-missing-deps`, `--gh-auth-login`,
|
|
321
|
-
`--start-runtime`, and `--json`.
|
|
322
|
-
|
|
323
|
-
If you want to inspect the entire onboarding plan before ACP touches your
|
|
324
|
-
machine, run:
|
|
331
|
+
For non-interactive use (CI, scripted installs, GUI frontends):
|
|
325
332
|
|
|
326
333
|
```bash
|
|
327
|
-
npx agent-control-plane@latest setup
|
|
334
|
+
npx agent-control-plane@latest setup \
|
|
335
|
+
--non-interactive \
|
|
336
|
+
--install-missing-deps \
|
|
337
|
+
--start-runtime \
|
|
338
|
+
--start-dashboard \
|
|
339
|
+
--create-starter-issues \
|
|
340
|
+
--json
|
|
328
341
|
```
|
|
329
342
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
without writing files, installing packages, or launching background services.
|
|
333
|
-
|
|
334
|
-
If you are building a GUI installer, setup assistant, or another frontend
|
|
335
|
-
around ACP, add `--json` to either the real run or the dry-run preview. ACP
|
|
336
|
-
will emit exactly one JSON object on `stdout` and send progress logs to
|
|
337
|
-
`stderr`, which keeps parsing stable.
|
|
343
|
+
With `--json`, ACP emits a single structured object on `stdout` and sends
|
|
344
|
+
progress logs to `stderr`, which keeps parsing stable.
|
|
338
345
|
|
|
339
|
-
|
|
346
|
+
### Option B — Manual setup
|
|
340
347
|
|
|
341
|
-
|
|
342
|
-
2. sync the packaged runtime into `~/.agent-runtime`
|
|
343
|
-
3. create one profile for one repo
|
|
344
|
-
4. run quick health checks
|
|
345
|
-
5. start the runtime and confirm it answers to you
|
|
348
|
+
If you prefer explicit control over each step:
|
|
346
349
|
|
|
347
|
-
|
|
348
|
-
intentional.
|
|
349
|
-
|
|
350
|
-
### 1. Authenticate GitHub first
|
|
350
|
+
**1. Authenticate GitHub**
|
|
351
351
|
|
|
352
352
|
```bash
|
|
353
353
|
gh auth login
|
|
354
354
|
```
|
|
355
355
|
|
|
356
|
-
|
|
357
|
-
automation. If `gh` cannot see the repo, the rest of the flow will feel broken
|
|
358
|
-
for reasons that have nothing to do with ACP.
|
|
359
|
-
|
|
360
|
-
### 2. Install or refresh the packaged runtime
|
|
356
|
+
**2. Install the packaged runtime**
|
|
361
357
|
|
|
362
358
|
```bash
|
|
363
359
|
npx agent-control-plane@latest sync
|
|
364
360
|
```
|
|
365
361
|
|
|
366
|
-
This
|
|
367
|
-
|
|
368
|
-
tooling in place on disk" before you wire it to a specific repo.
|
|
362
|
+
This stages the ACP runtime into `~/.agent-runtime/runtime-home`. Safe to
|
|
363
|
+
re-run after upgrades.
|
|
369
364
|
|
|
370
|
-
|
|
365
|
+
**3. Create a profile for your repo**
|
|
371
366
|
|
|
372
367
|
```bash
|
|
373
368
|
npx agent-control-plane@latest init \
|
|
@@ -379,217 +374,196 @@ npx agent-control-plane@latest init \
|
|
|
379
374
|
--coding-worker openclaw
|
|
380
375
|
```
|
|
381
376
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
- `--repo-root` points at your local checkout
|
|
391
|
-
- `--agent-root` is where ACP keeps per-project runtime state
|
|
392
|
-
- `--worktree-root` is where ACP can place repo worktrees
|
|
393
|
-
- `--coding-worker` picks the backend ACP should orchestrate
|
|
377
|
+
| Flag | Purpose |
|
|
378
|
+
| --- | --- |
|
|
379
|
+
| `--profile-id` | Short name used in all ACP commands |
|
|
380
|
+
| `--repo-slug` | GitHub repo ACP should track |
|
|
381
|
+
| `--repo-root` | Path to your local checkout |
|
|
382
|
+
| `--agent-root` | Where ACP keeps per-project runtime state |
|
|
383
|
+
| `--worktree-root` | Where ACP places repo worktrees |
|
|
384
|
+
| `--coding-worker` | Backend to orchestrate (`codex`, `claude`, `openclaw`, `ollama`, `pi`, `opencode`, or `kilo`) |
|
|
394
385
|
|
|
395
|
-
|
|
386
|
+
**4. Validate before trusting it**
|
|
396
387
|
|
|
397
388
|
```bash
|
|
398
389
|
npx agent-control-plane@latest doctor
|
|
399
390
|
npx agent-control-plane@latest profile-smoke --profile-id my-repo
|
|
400
391
|
```
|
|
401
392
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
background loops.
|
|
393
|
+
`doctor` checks installation health. `profile-smoke` gives the profile a fast
|
|
394
|
+
confidence pass before you turn on background loops.
|
|
405
395
|
|
|
406
|
-
|
|
396
|
+
**5. Start the runtime**
|
|
407
397
|
|
|
408
398
|
```bash
|
|
409
399
|
npx agent-control-plane@latest runtime start --profile-id my-repo
|
|
410
400
|
npx agent-control-plane@latest runtime status --profile-id my-repo
|
|
411
401
|
```
|
|
412
402
|
|
|
413
|
-
|
|
414
|
-
runtime for that profile.
|
|
415
|
-
|
|
403
|
+
Once `runtime status` returns clean output, ACP is actively managing the
|
|
404
|
+
runtime for that profile. Per-profile state lives under `~/.agent-runtime`,
|
|
405
|
+
grouped and inspectable without digging through scattered temp files.
|
|
406
|
+
|
|
407
|
+
## Starter Issues
|
|
416
408
|
|
|
417
|
-
|
|
409
|
+
The setup wizard can create a set of recurring `agent-keep-open` issues on your
|
|
410
|
+
repo so ACP starts working immediately after installation. Each issue carries the
|
|
411
|
+
`agent-ready` and `agent-keep-open` labels, and ACP picks them up on its next
|
|
412
|
+
heartbeat cycle.
|
|
418
413
|
|
|
419
|
-
|
|
414
|
+
Built-in templates:
|
|
420
415
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
416
|
+
| Issue | What ACP does |
|
|
417
|
+
| --- | --- |
|
|
418
|
+
| Code quality sweep | Fix lint warnings, type errors, and dead code |
|
|
419
|
+
| Test coverage improvement | Add tests for critical untested modules |
|
|
420
|
+
| Documentation refresh | Keep README and inline docs accurate |
|
|
421
|
+
| Dependency audit | Fix vulnerabilities and update safe patches |
|
|
422
|
+
| Refactoring sweep | Reduce complexity and duplication |
|
|
425
423
|
|
|
426
|
-
|
|
427
|
-
|
|
424
|
+
You can also create your own recurring issues — just add the `agent-ready` and
|
|
425
|
+
`agent-keep-open` labels to any GitHub issue and ACP will work on it
|
|
426
|
+
continuously.
|
|
428
427
|
|
|
429
|
-
|
|
428
|
+
To skip this step during setup, pass `--no-create-starter-issues`.
|
|
430
429
|
|
|
431
|
-
|
|
430
|
+
## Everyday Usage
|
|
432
431
|
|
|
433
432
|
```bash
|
|
433
|
+
# Check runtime state
|
|
434
434
|
npx agent-control-plane@latest runtime status --profile-id my-repo
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
Restart the runtime:
|
|
438
435
|
|
|
439
|
-
|
|
436
|
+
# Restart the runtime
|
|
440
437
|
npx agent-control-plane@latest runtime restart --profile-id my-repo
|
|
441
|
-
```
|
|
442
438
|
|
|
443
|
-
Stop the runtime
|
|
444
|
-
|
|
445
|
-
```bash
|
|
439
|
+
# Stop the runtime
|
|
446
440
|
npx agent-control-plane@latest runtime stop --profile-id my-repo
|
|
447
|
-
```
|
|
448
441
|
|
|
449
|
-
Run smoke checks
|
|
450
|
-
|
|
451
|
-
```bash
|
|
442
|
+
# Run smoke checks
|
|
452
443
|
npx agent-control-plane@latest profile-smoke --profile-id my-repo
|
|
453
444
|
npx agent-control-plane@latest smoke
|
|
454
445
|
```
|
|
455
446
|
|
|
456
|
-
This is the rhythm ACP is built for: install once, inspect often, restart when
|
|
457
|
-
needed, and keep the runtime understandable.
|
|
458
|
-
|
|
459
447
|
## Dashboard
|
|
460
448
|
|
|
461
|
-
Run the dashboard locally:
|
|
462
|
-
|
|
463
449
|
```bash
|
|
464
450
|
npx agent-control-plane@latest dashboard --host 127.0.0.1 --port 8765
|
|
465
451
|
```
|
|
466
452
|
|
|
467
|
-
Then open:
|
|
468
|
-
|
|
469
|
-
```text
|
|
470
|
-
http://127.0.0.1:8765
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
The dashboard is where ACP gets much more pleasant to use. Instead of treating
|
|
474
|
-
automation like a black box, you can track profiles, runtime state, and system
|
|
475
|
-
activity in one place.
|
|
476
|
-
|
|
477
|
-
## Contributing
|
|
453
|
+
Then open `http://127.0.0.1:8765`.
|
|
478
454
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
- contribution guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
483
|
-
- contributor agreement: [CLA.md](./CLA.md)
|
|
484
|
-
|
|
485
|
-
## Security
|
|
486
|
-
|
|
487
|
-
If you find a vulnerability, do not open a public issue first.
|
|
488
|
-
|
|
489
|
-
- security policy: [SECURITY.md](./SECURITY.md)
|
|
490
|
-
- code of conduct: [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
|
|
491
|
-
|
|
492
|
-
## Releases
|
|
493
|
-
|
|
494
|
-
- release history: [CHANGELOG.md](./CHANGELOG.md)
|
|
495
|
-
- maintainer checklist: [references/release-checklist.md](./references/release-checklist.md)
|
|
455
|
+
The dashboard shows all active profiles in one place: running sessions, recent
|
|
456
|
+
run history, provider cooldowns, scheduled issues, and queue state — without
|
|
457
|
+
having to dig through `tmux` panes or temp folders.
|
|
496
458
|
|
|
497
459
|
## macOS Autostart
|
|
498
460
|
|
|
499
|
-
|
|
461
|
+
Install a per-profile LaunchAgent so the runtime survives reboots:
|
|
500
462
|
|
|
501
463
|
```bash
|
|
502
464
|
npx agent-control-plane@latest launchd-install --profile-id my-repo
|
|
503
465
|
```
|
|
504
466
|
|
|
505
|
-
Remove
|
|
467
|
+
Remove it:
|
|
506
468
|
|
|
507
469
|
```bash
|
|
508
470
|
npx agent-control-plane@latest launchd-uninstall --profile-id my-repo
|
|
509
471
|
```
|
|
510
472
|
|
|
511
|
-
These commands are macOS-only
|
|
473
|
+
These commands are macOS-only and manage per-user `launchd` agents.
|
|
512
474
|
|
|
513
475
|
## Update
|
|
514
476
|
|
|
515
|
-
|
|
477
|
+
After upgrading the package, refresh the runtime and verify health:
|
|
516
478
|
|
|
517
479
|
```bash
|
|
518
480
|
npx agent-control-plane@latest sync
|
|
519
481
|
npx agent-control-plane@latest doctor
|
|
482
|
+
npx agent-control-plane@latest smoke # optional confidence check
|
|
520
483
|
```
|
|
521
484
|
|
|
522
|
-
Optional confidence check:
|
|
523
|
-
|
|
524
|
-
```bash
|
|
525
|
-
npx agent-control-plane@latest smoke
|
|
526
|
-
```
|
|
527
|
-
|
|
528
|
-
This keeps the runtime on disk aligned with the packaged version you just
|
|
529
|
-
installed.
|
|
530
|
-
|
|
531
485
|
## Remove a Profile
|
|
532
486
|
|
|
533
|
-
|
|
487
|
+
Remove one profile and its ACP-managed runtime state:
|
|
534
488
|
|
|
535
489
|
```bash
|
|
536
490
|
npx agent-control-plane@latest remove --profile-id my-repo
|
|
537
491
|
```
|
|
538
492
|
|
|
539
|
-
Also remove ACP-managed repo and worktree
|
|
493
|
+
Also remove ACP-managed repo and worktree directories:
|
|
540
494
|
|
|
541
495
|
```bash
|
|
542
496
|
npx agent-control-plane@latest remove --profile-id my-repo --purge-paths
|
|
543
497
|
```
|
|
544
498
|
|
|
545
|
-
Use `--purge-paths` only when you want ACP-managed directories
|
|
499
|
+
Use `--purge-paths` only when you want ACP-managed directories deleted too.
|
|
546
500
|
|
|
547
501
|
## Troubleshooting
|
|
548
502
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
- `
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
- `node` is older than `18`
|
|
562
|
-
Upgrade Node first. ACP's package contract starts at `18+`.
|
|
563
|
-
- you are already on Node `20` or `22`
|
|
564
|
-
That is fine. The package only has a minimum version, not a maximum.
|
|
565
|
-
- missing `jq`
|
|
566
|
-
Install `jq`, then retry the GitHub- or runtime-heavy command that failed.
|
|
567
|
-
- runtime or source drift after updates
|
|
568
|
-
Run `sync`, then `doctor`.
|
|
569
|
-
- missing `tmux`, `gh`, or `python3`
|
|
570
|
-
Install the dependency, then retry `sync` or `runtime start`.
|
|
571
|
-
- missing `codex-quota`
|
|
572
|
-
This is only an optional Codex enhancement. Core ACP installation and most
|
|
573
|
-
non-Codex flows do not require it.
|
|
503
|
+
| Symptom | Fix |
|
|
504
|
+
| --- | --- |
|
|
505
|
+
| `profile not installed` | Run `init` first, then retry with the same `--profile-id`. |
|
|
506
|
+
| `explicit profile selection required` | Pass `--profile-id <id>` to `runtime`, `launchd-install`, `launchd-uninstall`, and `remove`. |
|
|
507
|
+
| `gh` cannot access the repo | Re-run `gh auth login` and confirm the repo slug in the profile is correct. |
|
|
508
|
+
| Setup deferred anchor repo sync | ACP could not reach the repo remote. Fix Git access or the remote URL, then re-run `setup` or `init` without `--skip-anchor-sync`. |
|
|
509
|
+
| Backend auth failures | Authenticate the backend before starting ACP. For `openclaw`/`pi`, set `OPENROUTER_API_KEY`. For `ollama`, ensure the server is running. For `opencode`/`kilo`, install and authenticate the CLI. |
|
|
510
|
+
| Node older than `18` | Upgrade Node first. ACP's minimum version is `18+`. |
|
|
511
|
+
| Missing `jq` | Install `jq`, then retry the failed command. |
|
|
512
|
+
| Runtime or source drift after an update | Run `sync`, then `doctor`. |
|
|
513
|
+
| Missing `tmux`, `gh`, or `python3` | Install the dependency, then retry `sync` or `runtime start`. |
|
|
514
|
+
| Missing `codex-quota` warning | This is optional. Core ACP and all non-Codex flows do not require it. |
|
|
574
515
|
|
|
575
516
|
## Command Summary
|
|
576
517
|
|
|
577
|
-
| Command |
|
|
578
|
-
| --- | --- |
|
|
579
|
-
| `
|
|
580
|
-
| `
|
|
581
|
-
| `
|
|
582
|
-
| `
|
|
583
|
-
| `
|
|
584
|
-
| `
|
|
585
|
-
| `
|
|
586
|
-
| `
|
|
587
|
-
| `
|
|
588
|
-
| `
|
|
589
|
-
| `
|
|
590
|
-
| `
|
|
591
|
-
| `
|
|
592
|
-
| `npx agent-control-plane@latest remove --profile-id <id> [--purge-paths]` | Remove an installed profile and ACP-managed state. | `--purge-paths` also deletes ACP-managed repo/worktree paths, so use it carefully. |
|
|
593
|
-
| `npx agent-control-plane@latest smoke` | Run the packaged smoke suite for the shared control plane. | No required args. Best used after `sync` or before a public release. |
|
|
518
|
+
| Command | Purpose |
|
|
519
|
+
| --- | --- |
|
|
520
|
+
| `help` | Show the full CLI surface. Good first command on a new machine. |
|
|
521
|
+
| `version` | Print the running package version. |
|
|
522
|
+
| `setup [--dry-run] [--json]` | Guided bootstrap wizard. Detects repo, installs deps, scaffolds profile, starts runtime and dashboard, creates starter issues. `--dry-run` previews. `--json` emits structured output. |
|
|
523
|
+
| `sync` / `install` | Stage or refresh the packaged runtime into `~/.agent-runtime/runtime-home`. Run after install or upgrade. |
|
|
524
|
+
| `init ...` | Scaffold one repo profile manually. Requires `--profile-id`, `--repo-slug`, `--repo-root`, `--agent-root`, `--worktree-root`, `--coding-worker`. |
|
|
525
|
+
| `doctor` | Inspect runtime and source installation health. |
|
|
526
|
+
| `profile-smoke [--profile-id <id>]` | Validate one profile before trusting it with real work. |
|
|
527
|
+
| `runtime <status\|start\|stop\|restart> --profile-id <id>` | Operate one profile runtime. |
|
|
528
|
+
| `dashboard [--host] [--port]` | Start the local monitoring dashboard. Defaults: `127.0.0.1:8765`. |
|
|
529
|
+
| `launchd-install --profile-id <id>` | Install a per-profile LaunchAgent on macOS. |
|
|
530
|
+
| `launchd-uninstall --profile-id <id>` | Remove a per-profile LaunchAgent on macOS. |
|
|
531
|
+
| `remove --profile-id <id> [--purge-paths]` | Remove a profile and its ACP-managed state. `--purge-paths` also deletes managed directories. |
|
|
532
|
+
| `smoke` | Run the packaged smoke suite for the shared control plane. |
|
|
594
533
|
|
|
595
534
|
For a lower-level script map, see [references/commands.md](./references/commands.md).
|
|
535
|
+
|
|
536
|
+
## Support the Project
|
|
537
|
+
|
|
538
|
+
If ACP saves you time or keeps your agent workflows sane, you can support the
|
|
539
|
+
project via [GitHub Sponsors](https://github.com/sponsors/ducminhnguyen0319).
|
|
540
|
+
|
|
541
|
+
The open source core stays free. If you fork or republish this package under
|
|
542
|
+
another maintainer account, update the sponsor links in `package.json` and
|
|
543
|
+
`.github/FUNDING.yml`.
|
|
544
|
+
|
|
545
|
+
**Sponsorship policy:** Sponsorships are maintainer-managed project support.
|
|
546
|
+
They do not transfer ownership, copyright, patent rights, or control over the
|
|
547
|
+
project. Contributors are not automatically entitled to sponsorship payouts. The
|
|
548
|
+
maintainer may direct funds toward maintenance, infrastructure, contributor
|
|
549
|
+
rewards, or other project-related work at their discretion.
|
|
550
|
+
|
|
551
|
+
## Contributing
|
|
552
|
+
|
|
553
|
+
Contributions are welcome. This repo uses a contributor agreement so the
|
|
554
|
+
project can stay easy to maintain and relicense if needed.
|
|
555
|
+
|
|
556
|
+
- Contribution guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
557
|
+
- Contributor agreement: [CLA.md](./CLA.md)
|
|
558
|
+
|
|
559
|
+
## Security
|
|
560
|
+
|
|
561
|
+
Do not open a public issue for vulnerabilities.
|
|
562
|
+
|
|
563
|
+
- Security policy: [SECURITY.md](./SECURITY.md)
|
|
564
|
+
- Code of conduct: [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
|
|
565
|
+
|
|
566
|
+
## Releases
|
|
567
|
+
|
|
568
|
+
- Release history: [CHANGELOG.md](./CHANGELOG.md)
|
|
569
|
+
- Maintainer checklist: [references/release-checklist.md](./references/release-checklist.md)
|