|
1 | 1 | # ppg — Pure Point Guard |
2 | 2 |
|
3 | | -[](https://github.com/2witstudios/ppg-cli/actions/workflows/ci.yml) |
4 | | -[](https://www.npmjs.com/package/pure-point-guard) |
5 | | -[](https://github.com/2witstudios/ppg-cli/blob/main/LICENSE) |
| 3 | +> **This project has been archived.** PPG CLI has been superseded by [PurePoint](https://github.com/2witstudios/PurePoint), a ground-up rebuild in Swift and Rust. |
| 4 | +> |
| 5 | +> PPG CLI started as a vibe-coded experiment — a TypeScript CLI wrapped in a Swift macOS dashboard for orchestrating parallel AI coding agents. The concept worked so well that it warranted a proper rebuild as a native application. PurePoint is that rebuild. |
| 6 | +> |
| 7 | +> **If you're looking for a parallel AI agent orchestrator, head to [PurePoint](https://github.com/2witstudios/PurePoint).** |
6 | 8 |
|
7 | | -> **Note:** This project is an active swarm/vibecoding experiment. The open PRs and branches were generated by parallel AI agents and have not been reviewed line-by-line. The project is being rebuilt properly — treat the current state as experimental. |
8 | | -
|
9 | | -A native macOS dashboard for orchestrating parallel AI coding agents. |
10 | | - |
11 | | -Spawn, monitor, and merge multiple AI agents working in parallel — each isolated in its own git worktree. Watch them all from a single window. |
| 9 | +--- |
12 | 10 |
|
13 | 11 |  |
14 | 12 |
|
15 | | -## Features |
16 | | - |
17 | | -**Multi-agent dashboard** — See all your projects, worktrees, and agents in one place. Each agent gets a live terminal pane so you can watch it work in real time. |
18 | | - |
19 | | -**Command palette** — Hit a key to spawn a new agent (Claude, Codex, OpenCode), open a terminal, or create a worktree. Type a prompt and it's running in seconds. |
20 | | - |
21 | | -**Agent-agnostic** — Works with Claude Code, Codex, OpenCode, or any CLI agent. Define custom agents in config. |
22 | | - |
23 | | -**Git worktree isolation** — Every agent works in its own worktree on its own branch. No file conflicts, clean merges. |
24 | | - |
25 | | -**Prompts editor** — Write and manage reusable prompt templates with `{{VAR}}` substitution, right inside the app. |
26 | | - |
27 | | -**Swarms** — Define multi-agent orchestrations in YAML. Choose shared or isolated strategies. Launch coordinated agent groups. |
28 | | - |
29 | | -**Project overview** — Home dashboard shows all your projects with commit heatmaps, recent commits, agent status, and worktree counts at a glance. |
30 | | - |
31 | | -**Inline rename** — Click any agent, terminal, or worktree name in the sidebar to rename it. |
32 | | - |
33 | | -**Split panes** — Run multiple agents in the same worktree with split terminal views. |
34 | | - |
35 | | -**Cron scheduling** — Define recurring agent tasks in `.ppg/schedules.yaml`. The daemon triggers swarms or prompts on cron expressions. Manage from the Schedules dashboard tab or `ppg cron` CLI. |
36 | | - |
37 | | -**Global prompts & templates** — Put prompts, templates, and swarms in `~/.ppg/` to share them across all projects. Project-local always takes precedence. |
38 | | - |
39 | | -**Customizable** — Appearance modes (light/dark/system), terminal font and size, keybinding customization, configurable shell. |
40 | | - |
41 | | -## Install |
42 | | - |
43 | | -### Dashboard (macOS app) |
44 | | - |
45 | | -The dashboard is the primary interface. Download from [GitHub Releases](https://github.com/2witstudios/ppg-cli/releases/latest) — grab the `.dmg` file. |
46 | | - |
47 | | -Or install via CLI: |
48 | | - |
49 | | -```bash |
50 | | -ppg install-dashboard |
51 | | -``` |
52 | | - |
53 | | -### CLI (runtime engine) |
54 | | - |
55 | | -The CLI is the engine that powers the dashboard. Install it globally: |
56 | | - |
57 | | -```bash |
58 | | -npm install -g pure-point-guard |
59 | | -``` |
60 | | - |
61 | | -**Requirements:** Node.js >= 20, git, tmux (`brew install tmux`), macOS |
62 | | - |
63 | | -### Claude Code integration |
64 | | - |
65 | | -Running `ppg init` in any project automatically installs the `/ppg` skill for Claude Code. This gives Claude the ability to orchestrate parallel agents — just type `/ppg` in any Claude Code session. |
66 | | - |
67 | | -## Quick Start |
68 | | - |
69 | | -```bash |
70 | | -# 1. Initialize ppg in your project |
71 | | -cd your-project |
72 | | -ppg init |
73 | | - |
74 | | -# 2. Open the dashboard |
75 | | -ppg ui |
76 | | -``` |
77 | | - |
78 | | -From the dashboard, use the command palette to spawn agents, watch their progress in real time, and merge completed work. |
79 | | - |
80 | | -### Or use the CLI directly |
81 | | - |
82 | | -```bash |
83 | | -# Spawn agents |
84 | | -ppg spawn --name fix-auth --prompt "Fix the authentication bug in src/auth.ts" |
85 | | -ppg spawn --name add-tests --prompt "Add unit tests for src/utils/" |
86 | | -ppg spawn --name update-docs --prompt "Update the API documentation" |
87 | | - |
88 | | -# Attach to an existing branch (e.g. from a PR) |
89 | | -ppg spawn --branch fix/auth-bug --prompt "Review and improve this PR" |
90 | | - |
91 | | -# Check status |
92 | | -ppg status |
93 | | - |
94 | | -# Collect results |
95 | | -ppg aggregate --all |
96 | | - |
97 | | -# Merge completed work |
98 | | -ppg merge wt-xxxxxx |
99 | | -``` |
100 | | - |
101 | | -## How It Works |
102 | | - |
103 | | -Each `ppg spawn` creates a git worktree on a `ppg/<name>` branch, opens a tmux pane, and launches the agent. The dashboard watches the manifest file in real time — no IPC, no server. |
104 | | - |
105 | | -``` |
106 | | -your-project/ |
107 | | -├── .ppg/ |
108 | | -│ ├── config.yaml # Agent and project config |
109 | | -│ ├── manifest.json # Runtime state (worktrees, agents, status) |
110 | | -│ ├── templates/ # Reusable prompt templates |
111 | | -│ ├── prompts/ # Prompt files for swarms |
112 | | -│ └── results/ # Agent result files |
113 | | -├── .worktrees/ |
114 | | -│ ├── wt-abc123/ # Isolated git worktree |
115 | | -│ └── wt-def456/ # Another worktree |
116 | | -└── ... |
117 | | -``` |
118 | | - |
119 | | -**Agent lifecycle:** |
120 | | - |
121 | | -``` |
122 | | -spawning → running → completed (result file written) |
123 | | - → failed (non-zero exit or shell prompt visible) |
124 | | - → killed (via ppg kill) |
125 | | - → lost (tmux pane died unexpectedly) |
126 | | -``` |
127 | | - |
128 | | -## Configuration |
129 | | - |
130 | | -`.ppg/config.yaml`: |
131 | | - |
132 | | -```yaml |
133 | | -sessionName: ppg |
134 | | -defaultAgent: claude |
135 | | - |
136 | | -agents: |
137 | | - claude: |
138 | | - name: claude |
139 | | - command: claude --dangerously-skip-permissions |
140 | | - interactive: true |
141 | | - resultInstructions: >- |
142 | | - When you have completed the task, write a summary of what you did |
143 | | - and any important notes to the file at: {{RESULT_FILE}} |
144 | | -
|
145 | | - codex: |
146 | | - name: codex |
147 | | - command: codex |
148 | | - promptFlag: --prompt |
149 | | - interactive: true |
150 | | - |
151 | | - custom-script: |
152 | | - name: custom |
153 | | - command: ./scripts/my-agent.sh |
154 | | - promptFlag: --task |
155 | | - interactive: false |
156 | | - |
157 | | -worktreeBase: .worktrees |
158 | | -templateDir: .ppg/templates |
159 | | -resultDir: .ppg/results |
160 | | -logDir: .ppg/logs |
161 | | -envFiles: |
162 | | - - .env |
163 | | - - .env.local |
164 | | -symlinkNodeModules: true |
165 | | -``` |
166 | | -
|
167 | | -## Templates |
168 | | -
|
169 | | -Templates live in `.ppg/templates/` as Markdown files with `{{VAR}}` placeholders. The prompts editor in the dashboard lets you create and edit these visually. |
170 | | - |
171 | | -**Built-in variables:** `{{WORKTREE_PATH}}`, `{{BRANCH}}`, `{{AGENT_ID}}`, `{{RESULT_FILE}}`, `{{PROJECT_ROOT}}`, `{{TASK_NAME}}`, `{{PROMPT}}` |
172 | | - |
173 | | -Custom variables are passed with `--var KEY=VALUE` or defined in swarm YAML. |
174 | | - |
175 | | -## Global Prompts & Templates |
176 | | - |
177 | | -Put prompts, templates, and swarms in `~/.ppg/` to make them available across all projects: |
178 | | - |
179 | | -``` |
180 | | -~/.ppg/ |
181 | | -├── prompts/ # Global prompt files |
182 | | -├── templates/ # Global templates |
183 | | -└── swarms/ # Global swarm definitions |
184 | | -``` |
185 | | - |
186 | | -Project-local files always take precedence when names conflict. Use `ppg list prompts` or `ppg list templates` to see both local and global entries. |
187 | | - |
188 | | -## Cron Scheduling |
189 | | - |
190 | | -Define recurring agent tasks in `.ppg/schedules.yaml`: |
191 | | - |
192 | | -```yaml |
193 | | -schedules: |
194 | | - - name: nightly-review |
195 | | - swarm: code-review |
196 | | - cron: '0 2 * * *' |
197 | | - vars: |
198 | | - CONTEXT: 'Review all changes from the last 24 hours' |
199 | | - - name: hourly-lint |
200 | | - prompt: lint-check |
201 | | - cron: '0 * * * *' |
202 | | -``` |
203 | | - |
204 | | -```bash |
205 | | -ppg cron start # Start the scheduler daemon |
206 | | -ppg cron list # Show schedules with next run times |
207 | | -ppg cron status # Check daemon status |
208 | | -ppg cron stop # Stop the daemon |
209 | | -``` |
210 | | - |
211 | | -Manage schedules visually from the Schedules tab in the dashboard. |
212 | | - |
213 | | -## CLI Reference |
214 | | - |
215 | | -All commands support `--json` for machine-readable output. |
216 | | - |
217 | | -| Command | Description | |
218 | | -|---|---| |
219 | | -| `ppg init` | Initialize ppg in the current git repo | |
220 | | -| `ppg spawn` | Spawn a worktree with agent(s) | |
221 | | -| `ppg status` | Show status of all worktrees and agents | |
222 | | -| `ppg attach` | Open a terminal attached to a worktree or agent | |
223 | | -| `ppg logs` | View agent output from tmux pane | |
224 | | -| `ppg kill` | Kill agents and optionally remove worktrees | |
225 | | -| `ppg aggregate` | Collect result files from completed agents | |
226 | | -| `ppg merge` | Merge a worktree branch back into base | |
227 | | -| `ppg diff` | Show changes in a worktree branch | |
228 | | -| `ppg restart` | Restart a failed or killed agent | |
229 | | -| `ppg send` | Send text or keystrokes to an agent pane | |
230 | | -| `ppg wait` | Wait for agents to complete | |
231 | | -| `ppg clean` | Remove worktrees in terminal states | |
232 | | -| `ppg worktree create` | Create a standalone worktree | |
233 | | -| `ppg list templates` | List available prompt templates | |
234 | | -| `ppg list prompts` | List available prompt files | |
235 | | -| `ppg prompt` | Spawn an agent from a prompt file | |
236 | | -| `ppg cron start` | Start the cron scheduler daemon | |
237 | | -| `ppg cron stop` | Stop the cron scheduler daemon | |
238 | | -| `ppg cron list` | Show configured schedules with next run times | |
239 | | -| `ppg cron status` | Show daemon status and recent log entries | |
240 | | -| `ppg install-dashboard` | Download and install the macOS dashboard | |
241 | | -| `ppg ui` | Open the dashboard | |
242 | | - |
243 | | -Run `ppg <command> --help` for detailed options. |
244 | | - |
245 | | -## Conductor Mode |
246 | | - |
247 | | -ppg is designed to be driven programmatically by a meta-agent (a "conductor"). All commands support `--json` for machine consumption. |
248 | | - |
249 | | -```bash |
250 | | -# 1. Spawn agents |
251 | | -ppg spawn --name task-1 --prompt "Do X" --json |
252 | | -ppg spawn --name task-2 --prompt "Do Y" --json |
253 | | -
|
254 | | -# 2. Wait for completion |
255 | | -ppg wait --all --json |
256 | | -
|
257 | | -# 3. Aggregate results |
258 | | -ppg aggregate --all --json |
259 | | -
|
260 | | -# 4. Merge completed work |
261 | | -ppg merge wt-xxxxxx --json |
262 | | -``` |
| 13 | +## What was ppg? |
263 | 14 |
|
264 | | -## Contributing |
| 15 | +A native macOS dashboard for orchestrating parallel AI coding agents. Spawn, monitor, and merge multiple AI agents working in parallel — each isolated in its own git worktree. |
265 | 16 |
|
266 | | -See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing, and code conventions. |
| 17 | +- **Multi-agent dashboard** — Claude Code, Codex, OpenCode, or any CLI agent |
| 18 | +- **Git worktree isolation** — every agent works on its own branch |
| 19 | +- **Swarms** — coordinated multi-agent orchestrations defined in YAML |
| 20 | +- **Conductor mode** — designed to be driven programmatically by a meta-agent |
| 21 | +- **Cron scheduling** — recurring agent tasks on cron expressions |
267 | 22 |
|
268 | 23 | ## License |
269 | 24 |
|
|
0 commit comments