{"id":47604349,"url":"https://github.com/kerplunkstudio/ccplus","last_synced_at":"2026-04-01T19:03:13.559Z","repository":{"id":345381664,"uuid":"1182086808","full_name":"kerplunkstudio/ccplus","owner":"kerplunkstudio","description":"A desktop app for Claude Code with multi-tab sessions, agent observability, and usage analytics.","archived":false,"fork":false,"pushed_at":"2026-03-26T23:29:57.000Z","size":28482,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-27T11:30:04.705Z","etag":null,"topics":["agentic-engineering","ai-agents","anthropic","claude-code","observability","ui","vibe-coding"],"latest_commit_sha":null,"homepage":"https://ccplus.run","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kerplunkstudio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T02:43:25.000Z","updated_at":"2026-03-26T23:30:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kerplunkstudio/ccplus","commit_stats":null,"previous_names":["kerplunkstudio/ccplus"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/kerplunkstudio/ccplus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerplunkstudio%2Fccplus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerplunkstudio%2Fccplus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerplunkstudio%2Fccplus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerplunkstudio%2Fccplus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kerplunkstudio","download_url":"https://codeload.github.com/kerplunkstudio/ccplus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerplunkstudio%2Fccplus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-engineering","ai-agents","anthropic","claude-code","observability","ui","vibe-coding"],"created_at":"2026-04-01T19:02:57.212Z","updated_at":"2026-04-01T19:03:13.542Z","avatar_url":"https://github.com/kerplunkstudio.png","language":"TypeScript","readme":"# cc+ — Watch your agents work.\n\nFleet orchestration for Claude Code — run parallel AI coding sessions with real-time observability and multi-agent workflows.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kerplunkstudio/ccplus/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/kerplunkstudio/ccplus/ci.yml?branch=main\u0026style=for-the-badge\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/kerplunkstudio/ccplus/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/kerplunkstudio/ccplus?include_prereleases\u0026style=for-the-badge\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey?style=for-the-badge\"\u003e\u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey?style=for-the-badge\" alt=\"Platform\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/demo.gif\" alt=\"cc+ demo\" width=\"800\"\u003e\u003c/p\u003e\n\n[Website](https://ccplus.run) · [GitHub](https://github.com/kerplunkstudio/ccplus) · [Install](#install)\n\n---\n\n## Who is this for\n\nYou're a developer who uses Claude Code daily. You want to run 5 sessions in parallel, each on a different feature, with automated testing and code review. cc+ does that. See every tool call, every agent, every token — in real-time. Fleet monitor shows all sessions at once. Captain orchestrates workflows autonomously.\n\n---\n\n## Quick Install\n\n```sh\ncurl -fsSL https://ccplus.run/install | sh\n```\n\nRequires [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code). macOS and Linux.\n\n### Install from Source\n\n#### Prerequisites\n\n- **Node.js 16+** (check: `node --version`)\n- **Claude Code CLI** installed globally: `npm install -g @anthropic-ai/claude-code`\n- **Claude authentication**: Run `claude login` and follow prompts\n- **Git** (for cloning the repository)\n\n#### Install Steps\n\n1. **Clone the repository**:\n   ```sh\n   git clone https://github.com/kerplunkstudio/ccplus.git\n   cd ccplus\n   ```\n\n2. **Install dependencies**:\n   ```sh\n   cd backend-ts \u0026\u0026 npm install \u0026\u0026 cd ..\n   cd frontend \u0026\u0026 npm install \u0026\u0026 cd ..\n   ```\n\n3. **Configure environment** (optional):\n   ```sh\n   cp .env.example .env\n   # Edit .env to customize workspace path, port, etc.\n   ```\n\n4. **Build and launch**:\n   ```sh\n   ./ccplus\n   ```\n\n   The first run will:\n   - Build backend TypeScript → `backend-ts/dist/`\n   - Build frontend React app → `static/chat/`\n   - Launch desktop app (Electron)\n\n---\n\n## How It Works\n\nYou tell Captain: \"fix the auth bug\". Captain starts a bug-fix workflow → Debugger investigates → Code Agent patches → TDD Guide writes regression test → Code Reviewer approves → merged to main. You get a summary.\n\nThe process is automatic. No manual intervention needed. Captain manages workflow state, retries on failure, and adapts to blockers.\n\n---\n\n## The Model\n\nYou talk to Captain. Captain runs workflows. You watch.\n\nEach session is fully isolated. Multi-tab interface. Desktop app (Electron) for macOS/Linux, web UI at localhost for remote access. Real-time activity trees show every agent spawn, tool call, and file edit as a hierarchy.\n\nToken and cost tracking per query, session, and project. Context window usage. Trust scores. Cache efficiency.\n\n---\n\n## Fleet Monitor\n\nMulti-tab sessions (Cmd+T, Cmd+W, Ctrl+Tab). Each tab is its own Claude Code session. Fleet monitor shows all sessions at once: status, tools, tokens, files touched.\n\n---\n\n## See Everything\n\nReal-time activity trees. Every agent spawn, tool call, and file edit, structured as a hierarchy. Agent → sub-agent → Read → Edit → Write. Status, duration, parameters. Not terminal scroll, a live tree.\n\n---\n\n## Cross-Session Memory\n\nPersistent knowledge across sessions.\n\n---\n\n## Scheduled Tasks\n\nCron-based recurring prompts.\n\n---\n\n---\n\n## Access Anywhere\n\nDesktop app (Electron, macOS + Linux). Web UI at localhost. Telegram bridge: message Captain from your phone, get status updates, start sessions remotely. For Telegram setup details, see [docs](docs/).\n\n---\n\n## Built on the Agent SDK\n\nThe Claude Agent SDK does the heavy lifting. cc+ is a real-time observability layer around it.\n\nThe SDK handles:\n- In-process agent spawning and async streaming\n- Tool execution and result injection\n- Agent parent-child correlation\n- Cooperative cancellation\n- File system access (read, edit, write)\n\ncc+ adds:\n- Multi-session coordination\n- SQLite persistence (conversations, activity tree, costs)\n- Real-time WebSocket updates to the UI\n- Desktop app + web interface\n- Captain AI orchestration\n- Telegram bridge\n\nThe result: you get full transparency into what your agents are doing, and the power to run them at scale.\n\n---\n\n## More Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand\u003c/strong\u003e\u003c/summary\u003e\n\n- Built-in browser (dev servers detected automatically)\n- Integrated terminal\n- Command palette (Cmd+K)\n- Conversation search (FTS5)\n- Session import from Claude Code history\n- Insights dashboard (daily trends, model breakdowns, tool success rates)\n- Image attachments\n- Themes\n- Crash recovery\n\n\u003c/details\u003e\n\n---\n\n## Architecture\n\nUser messages → WebSocket → Claude Agent SDK → Real-time callbacks → SQLite + activity tree.\n\n**Stack**: Node.js / TypeScript / Express + Socket.IO / React 19 / SQLite / Electron\n\n---\n\n## Development\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand development guide\u003c/strong\u003e\u003c/summary\u003e\n\n### CLI Reference\n\n| Command | Description |\n|---------|-------------|\n| `./ccplus` | Build everything + launch desktop app |\n| `./ccplus web` | Build everything + start web server |\n| `./ccplus desktop` | Launch desktop app (skip build) |\n| `./ccplus desktop-parallel` | Desktop + web server on port 4001 |\n| `./ccplus frontend` | Build + deploy frontend only |\n| `./ccplus backend` | Build backend only |\n| `./ccplus server` | Restart server |\n| `./ccplus stop` | Stop server |\n| `./ccplus import` | Import historical Claude Code sessions |\n| `./ccplus doctor` | System diagnostics |\n| `./ccplus setup` | Re-run interactive setup |\n| `./ccplus status` | Show server status |\n| `./ccplus logs` | Tail server logs |\n| `./ccplus update` | Update to latest version |\n| `./ccplus release` | Package desktop app for distribution |\n\n### Backend Development\n\n```bash\ncd backend-ts\n\n# Install dependencies\nnpm install\n\n# Development (watch mode, auto-reload)\nnpm run dev\n\n# Build (compile TypeScript to dist/)\nnpm run build\n\n# Test (Vitest)\nnpm test\n\n# Coverage\nnpm run test:coverage\n```\n\n### Frontend Development\n\n```bash\ncd frontend\n\n# Install dependencies\nnpm install\n\n# Development server (port 3001, proxies API to 3000)\nnpm start\n\n# Production build\nnpm run build\n\n# Test (Jest + React Testing Library)\nnpm test\n```\n\nAfter modifying frontend source, deploy the build:\n\n```bash\n./ccplus frontend    # Build + deploy to static/chat/ (no restart)\n```\n\nThen hard refresh browser (Cmd+Shift+R) to clear cached assets.\n\n**Important**: Express serves from `static/chat/`, not `frontend/src/`. If you edit source files but do not deploy, the browser shows stale code.\n\n### Environment Variables\n\nSee [.env.example](.env.example) for all available environment variables. Key settings:\n\n- `WORKSPACE_PATH` — Working directory for SDK sessions (default: `~/Workspace`)\n- `SDK_MODEL` — Default model for SDK queries (default: `sonnet`)\n- `PORT` — Server port (default: `4000`)\n- `CCPLUS_TELEGRAM_BOT_TOKEN` — Enable Telegram bridge (optional)\n- `CCPLUS_CAPTAIN_MODEL` — Captain AI model (default: `claude-opus-4-6`)\n\n### File Tree\n\n```\nccplus/\n├── backend-ts/          # Express + Socket.IO server\n│   ├── src/             # TypeScript source\n│   └── dist/            # Compiled output (gitignored)\n├── electron/            # Desktop app (Electron)\n├── frontend/            # React 19 app\n│   ├── src/components/  # React components\n│   ├── src/hooks/       # Custom hooks\n│   └── build/           # Build output (gitignored)\n├── static/chat/         # Deployed frontend (gitignored)\n├── data/                # SQLite database (gitignored)\n├── docs/                # Architecture, database, development, testing\n└── ccplus               # Unified CLI launcher\n```\n\n### Testing\n\n#### Backend Tests\n\n**Run all tests**:\n```bash\ncd backend-ts \u0026\u0026 npm test\n```\n\n**Run specific module**:\n```bash\ncd backend-ts \u0026\u0026 npx vitest run src/__tests__/database.test.ts\n```\n\n**Coverage**:\n```bash\ncd backend-ts \u0026\u0026 npm run test:coverage\n```\n\n#### Frontend Tests\n\n**Run all tests**:\n```bash\ncd frontend \u0026\u0026 npm test\n```\n\n#### Test Policy\n\nTests are mandatory for all implementations:\n- **New features**: Unit tests for logic + integration tests for flows\n- **Bug fixes**: Regression test that fails without the fix, passes with it\n- **Refactoring**: Existing tests pass before and after changes\n\nCoverage targets: 80%+ on critical paths (sdk-session, database), 100% on utility functions (auth, config).\n\n\u003c/details\u003e\n\n---\n\n\n## Open source, local, yours\n\nMIT licensed. Runs on your machine. Your data stays local.\n\n---\n## Contributing\n\nFork, branch, test, PR. See [CLAUDE.md](CLAUDE.md) for conventions.\n\n---\n\n## License\n\nMIT License. Copyright 2025-present Matias Fuentes. See [LICENSE](LICENSE).\n\n---\n\n\u003cp align=\"center\"\u003e\n  Built with \u003ca href=\"https://www.anthropic.com/claude\"\u003eClaude\u003c/a\u003e by \u003ca href=\"https://github.com/kerplunkstudio\"\u003e@kerplunkstudio\u003c/a\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerplunkstudio%2Fccplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkerplunkstudio%2Fccplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerplunkstudio%2Fccplus/lists"}