PHPackages                             bookbreakdown/commandcenter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. bookbreakdown/commandcenter

ActiveProject[Admin Panels](/categories/admin)

bookbreakdown/commandcenter
===========================

Workspace and session dashboard for multi-project development with Claude Code.

v0.1.0(2mo ago)00MITPHPPHP ^8.3CI passing

Since May 4Pushed 2mo agoCompare

[ Source](https://github.com/bookbreakdown/commandcenter)[ Packagist](https://packagist.org/packages/bookbreakdown/commandcenter)[ RSS](/packages/bookbreakdown-commandcenter/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (9)Versions (6)Used By (0)

Command Center
==============

[](#command-center)

Workspace and session dashboard for multi-project development with Claude Code. Laravel 13 + React 19 + Tailwind 4 + shadcn-style components on top of SQLite.

What it does
------------

[](#what-it-does)

- Auto-discovers every Claude Code config tree under `$HOME` (`.claude`, `.claude-savvior`, etc.) and treats each one as an **Account**.
- Walks each account's `projects//.jsonl` files and turns them into **Sessions** in the dashboard, tagged with the account they came from -- so you can tell at a glance which session belongs to your **personal** vs **savvior** Claude account.
- Lets you organize **Workspaces** under named **Projects**.
- Provides a `php artisan cc:register` command consumer projects can call from any workspace to label their current session.

Install
-------

[](#install)

### Via Packagist (once submitted)

[](#via-packagist-once-submitted)

```
composer create-project bookbreakdown/commandcenter commandcenter
```

### Without Packagist

[](#without-packagist)

Add the VCS repository to your global or project `composer.json`:

```
{
    "repositories": [
        { "type": "vcs", "url": "https://github.com/bookbreakdown/commandcenter" }
    ]
}
```

Then:

```
composer create-project bookbreakdown/commandcenter commandcenter
```

### Setup

[](#setup)

`composer create-project` (and any subsequent `composer install`) will:

- copy `.env.example` to `.env`
- generate `APP_KEY`
- create the SQLite file and run migrations
- run `npm install` and `npm run build` to produce `public/build/` (skipped with a notice if npm is not on PATH; install Node 18+ if you need the dashboard UI)

After that, just edit `.env` for your machine:

```
cd commandcenter
# edit .env -- set COMMANDCENTER_HOME, COMMANDCENTER_HOME_ROOT, optional CLAUDE_EXECUTABLES
```

Then point an Apache vhost at `public/` and add `commandcenter.test` (or whatever you call it) to your hosts file.

Configure
---------

[](#configure)

Two PC-specific values in `.env`:

KeyPurpose`COMMANDCENTER_HOME`Absolute path of this checkout. Consumer projects use it in their universal self-registration prompt.`COMMANDCENTER_HOME_ROOT`Parent dir holding `.claude/`, `.claude-savvior/`, etc. Apache on Windows often runs as `LocalSystem` and cannot resolve `$HOME`/`$USERPROFILE`, so pin the user-profile dir explicitly. Leave blank on POSIX boxes where the service inherits `$HOME`.First run
---------

[](#first-run)

```
php artisan cc:project:add TMO
php artisan cc:workspace:add TMO 'C:\wamp\www\tmo-tools3'
php artisan cc:discover
```

`cc:discover` scans for accounts and rebuilds the sessions table; safe to re-run any time.

Universal self-registration prompt
----------------------------------

[](#universal-self-registration-prompt)

Paste this into any project's `CLAUDE.md` so agents working there register themselves:

```
## Session Tracking

Register this session with Command Center. Pick the form that matches your shell:

- bash / zsh: `( cd "$COMMANDCENTER_HOME" && php artisan cc:register --label "PROJECTNAME | brief task description" )`
- PowerShell: `& php "$env:COMMANDCENTER_HOME\artisan" cc:register --label "PROJECTNAME | brief task description"`

Replace PROJECTNAME with this project's name. The description should be 3-5 words.
GUID, account, and workspace are auto-detected from the working directory.
```

The registrar's auto-detection looks at every account's `projects//` dir for the most recently-written `.jsonl`, so it Just Works whether you started Claude under `claude` or `savvior-claude`.

Architecture
------------

[](#architecture)

```
app/
  Console/Commands/
    DiscoverCommand.php       cc:discover
    ProjectAddCommand.php     cc:project:add
    WorkspaceAddCommand.php   cc:workspace:add
    RegisterCommand.php       cc:register
  Http/Controllers/
    DashboardController.php   GET /api/dashboard, PATCH /api/sessions/{guid}
  Models/
    Account.php Project.php Workspace.php Session.php
  Services/
    WorkspacePathEncoder.php       /var/www/x -> -var-www-x; C:\x -> C--x
    ClaudeAccountDiscovery.php     finds .claude* dirs, upserts accounts
    ClaudeSessionDiscovery.php     walks each account's projects/ tree
    DashboardService.php           composes the API tree
resources/
  js/
    app.tsx                   React entry
    pages/Dashboard.tsx       polls /api/dashboard every 5s
    components/
      ProjectCard.tsx WorkspaceTable.tsx SessionRow.tsx
      ui/{badge,button,card}.tsx   shadcn-style primitives
  views/app.blade.php         shell that mounts
routes/
  web.php                     all unmatched URLs render the React shell
  api.php                     /api/dashboard, /api/sessions/{guid}
database/migrations/
  2026_05_04_*                accounts, projects, workspaces, claude_sessions
tests/
  Unit/WorkspacePathEncoderTest.php
  Feature/AccountDiscoveryTest.php
  Feature/SessionDiscoveryTest.php
  Feature/DashboardEndpointTest.php

```

Development
-----------

[](#development)

```
composer dev   # concurrent: artisan serve + vite dev + queue + pail
# or:
php artisan serve
npm run dev
```

Run tests:

```
php artisan test
```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance84

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

81d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/262235990?v=4)[bookbreakdown](/maintainers/bookbreakdown)[@bookbreakdown](https://github.com/bookbreakdown)

---

Top Contributors

[![savvior-ladieu](https://avatars.githubusercontent.com/u/1591415?v=4)](https://github.com/savvior-ladieu "savvior-ladieu (11 commits)")

---

Tags

dashboarddeveloper-toolsclaude-codeworkspace

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/bookbreakdown-commandcenter/health.svg)

```
[![Health](https://phpackages.com/badges/bookbreakdown-commandcenter/health.svg)](https://phpackages.com/packages/bookbreakdown-commandcenter)
```

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3991.8k](/packages/codewithdennis-larament)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
