ccp

agent
Security Audit
Fail
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Fail
  • spawnSync — Synchronous process spawning in src/bin/add-repo.ts
  • process.env — Environment variable access in src/bin/add-repo.ts
  • fs module — File system access in src/bin/add-repo.ts
  • spawnSync — Synchronous process spawning in src/bin/install-launchd.ts
  • process.env — Environment variable access in src/bin/install-launchd.ts
  • fs module — File system access in src/bin/install-launchd.ts
  • spawnSync — Synchronous process spawning in src/bin/intake-dispatch.ts
  • fs module — File system access in src/bin/intake-dispatch.ts
  • fs module — File system access in src/bin/intake-job.ts
  • fs module — File system access in src/bin/intake-linear.ts
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This tool is an open-source orchestration pipeline that automates the entire software delivery lifecycle. It converts tickets into code, creates pull requests, monitors CI pipelines, and can even auto-merge and fix errors using AI coding agents.

Security Assessment
The overall security risk is Medium. The tool exhibits several highly privileged behaviors typical of an automation orchestrator, including widespread synchronous shell command execution (`spawnSync`) and direct file system access. It also reads environment variables, which means it likely interacts with sensitive API keys for services like GitHub, Linear, Sentry, and Discord. While this deep integration is necessary for its core functionality, it handles the complete control plane of your repositories. You must be extremely careful to configure its environment variables securely and ensure it only receives trusted webhook payloads, as malicious inputs could potentially trigger unintended system commands.

Quality Assessment
The repository is actively maintained, with its most recent push occurring today. It uses the permissive MIT license and includes a highly detailed, well-structured README that clearly outlines its complex architecture. However, it suffers from extremely low community visibility, having only 5 GitHub stars. This lack of widespread adoption means the codebase has not undergone extensive peer review or real-world battle-testing by the broader developer community.

Verdict
Use with caution — the active maintenance is promising, but the highly privileged system access and lack of broader community validation require you to thoroughly audit the codebase before trusting it with your production environment.
SUMMARY

☭ Coding Control Plane — Seize the means of code production. Autonomous ticket → code → PR → review → auto-merge → error → fix loop.

README.md

☭ CCP — Coding Control Plane

Seize the means of code production.

CCP is an open-source control plane that turns coding agents (Claude Code, Codex, etc.) into a continuous delivery pipeline. It handles the orchestration that nobody else does: ticket intake → job dispatch → coding → PR creation → review → auto-merge → error detection → remediation.

Linear Ticket → CCP → Coding Agent → PR → CI → Auto-Merge → Deploy
       ↑                                                        |
       └──── Sentry Error / Vercel Failure / CI Failure ────────┘

CCP Hero

What It Does

  • Job Pipeline — Queue, dispatch, and monitor coding jobs with full lifecycle tracking
  • Linear Integration — Auto-dispatch from Linear tickets, sync state back, create tickets from errors
  • PR Review & Auto-Merge — Per-repo auto-merge config, CI check monitoring, disposition analysis
  • Remediation Loop — CI failures auto-spawn fix jobs; errors → tickets → fixes → deploy
  • Webhook Intake — Sentry errors, Vercel deploy failures, GitHub CI failures all create tickets
  • Discord Notifications — Compact one-liners for runs, threads for non-clean outcomes
  • Dashboard — Dark-themed web UI to monitor jobs, configure repos, track PR reviews
  • Nightly Runs — Scheduled coding runs for maintenance, tech debt, compound tasks

Architecture

┌──────────────────────────────────────────────────────────┐
│                     Intake Layer                          │
│  Sentry webhook ──┐                                      │
│  Vercel webhook ──┼── intake-server.ts ── normalize ──┐  │
│  GitHub webhook ──┘                                   │  │
│  Linear webhook ──── linear-dispatch.ts ──────────────┤  │
│  Discord message ── intake-text.ts ───────────────────┤  │
│                                                       ▼  │
│                     Job System (jobs.ts)                  │
│                     ┌────────────────┐                    │
│                     │ queued         │                    │
│                     │ → preflight    │                    │
│                     │ → running      │ ◄── tmux + claude  │
│                     │ → coded        │                    │
│                     │ → verified     │                    │
│                     └────────────────┘                    │
│                           │                              │
│              ┌────────────┼────────────┐                 │
│              ▼            ▼            ▼                 │
│         PR Review    Linear Sync   Notifications         │
│         (pr-review)  (linear.ts)   (Discord)             │
│              │                                           │
│              ▼                                           │
│         PR Watcher ── auto-merge / remediation           │
│         (every 15s)                                      │
└──────────────────────────────────────────────────────────┘

Quick Start

Prerequisites

  • Node.js 20+
  • Claude Code (npm i -g @anthropic-ai/claude-code) or another coding agent
  • GitHub CLI (gh) authenticated
  • Linear account with API key

Install

git clone https://github.com/kyan12/ccp.git
cd ccp
npm install

# Configure
cp .env.example .env
cp configs/repos.json.example configs/repos.json
cp configs/linear.json.example configs/linear.json

# Edit .env with your API keys
# Edit configs/repos.json with your repositories
# Edit configs/linear.json with your Linear team/project IDs

Run

# Start the supervisor (monitors and runs jobs)
node src/bin/supervisor.ts --interval=15000 --max-concurrent=1

# Start the intake server (receives webhooks, serves dashboard)
node src/bin/intake-server.ts

# Dashboard at http://localhost:4318/dashboard

Create a Job Manually

node src/bin/intake-text.ts \
  --title "Fix login page timeout" \
  --repo my-app \
  --dispatch

Run on macOS with launchd

# Generate and install launchd plists
node src/bin/install-launchd.ts

Configuration

configs/repos.json — Repository mappings

{
  "mappings": [
    {
      "key": "my-app",
      "ownerRepo": "myorg/my-app",
      "localPath": "/home/user/repos/my-app",
      "aliases": ["app", "frontend"],
      "autoMerge": true,
      "mergeMethod": "squash"
    }
  ]
}

configs/linear.json — Linear integration

{
  "apiKeyEnv": "LINEAR_API_KEY",
  "teamId": "your-team-uuid",
  "teamKey": "ENG",
  "projectIds": {
    "product": "uuid-for-product-project",
    "reliability": "uuid-for-reliability-project"
  }
}

Per-Repo Auto-Merge

Set "autoMerge": true in your repo config. CCP will:

  1. Wait for all CI checks to pass
  2. Attempt GitHub approval (skips if self-authored)
  3. Squash merge (or rebase/merge per mergeMethod)

Webhook Setup

Source Endpoint Events
Sentry /ingest/sentry Internal integration with issue events
Vercel /ingest/vercel deployment.error, deployment.canceled
GitHub /webhook/github check_run, pull_request
Linear /webhook/linear Issue create/update

Expose your intake server via Tailscale Funnel, ngrok, or a public URL.

Dashboard

Access at http://localhost:4318/dashboard when the intake server is running.

Jobs

Repos PR Review
Health

Job Lifecycle

queued → preflight → running → coded → verified → done
                        │
                        ├── blocked (missing deps, can't resolve repo)
                        ├── failed (agent error, timeout)
                        └── coded → PR created
                                      │
                                      ├── checks pass + autoMerge → merged ✅
                                      ├── checks fail → remediation job spawned 🔄
                                      └── needs review → thread created 💬

The Error→Fix Loop

CCP's killer feature is the closed remediation loop:

  1. Runtime error → Sentry captures → webhook → Linear ticket created
  2. Ticket dispatched → coding agent fixes the bug → PR created
  3. CI passes → auto-merge → deploy
  4. CI fails → GitHub webhook → remediation job spawned with failure logs
  5. Deploy fails → Vercel webhook → incident ticket created
  6. Repeat until green ✅

CLI Tools

Command Description
node src/bin/supervisor.ts Main supervisor loop
node src/bin/intake-server.ts HTTP server for webhooks + dashboard
node src/bin/intake-text.ts Create jobs from text descriptions
node src/bin/jobs.ts list List all jobs and their states
node src/bin/jobs.ts inspect <id> Inspect a specific job
node src/bin/pr-watcher.ts --once Run one PR review cycle
node src/bin/linear-dispatch.ts Dispatch pending Linear tickets
node src/bin/linear-sync.ts <id> Sync a job's state to Linear

Environment Variables

Variable Required Description
LINEAR_API_KEY Yes Linear API key
CCP_DISCORD_RUNS_CHANNEL No Discord channel for job notifications
CCP_DISCORD_ERRORS_CHANNEL No Discord channel for errors
CCP_DISCORD_REVIEW_CHANNEL No Discord channel for PR reviews
CCP_PR_AUTOMERGE No Global auto-merge default (false)
CCP_PR_MERGE_METHOD No Default merge method (squash)
CCP_INTAKE_PORT No Intake server port (4318)
CCP_MAX_CONCURRENT No Max concurrent jobs (1)
VERCEL_TOKEN No Vercel API token
SENTRY_AUTH_TOKEN No Sentry auth token

How It Compares

CCP Devin Raw Claude Code GitHub Actions
Ticket → Code → PR Manual
Auto-merge on green ✅ (limited)
Error → Fix loop
CI failure remediation
Per-repo config
Dashboard
Self-hosted
Cost Your API keys $500/mo Your API keys Free tier

License

MIT — Seize it. Fork it. Ship it.

Credits

Built by Kevin Yan and Crab 🦀 — an AI coding orchestrator running on OpenClaw.

Reviews (0)

No results found