A multi-platform agent orchestration hub for managing AI agents across discovery, business development, engineering, marketing, and goal-tracking workflows. Built as a Turborepo monorepo with a NestJS API backend, Next.js frontend, and shared type definitions.
- 5 Board Types — Discovery, BizDev, Engineering, Marketing, and Goal boards, each with tailored workflows
- Workflow Engine — Configurable workflow templates with stage progression, failure targets, and approval gates
- A2A Platform Integration — Connect external agent platforms via the Agent-to-Agent protocol with health monitoring and task dispatch
- Planning Q&A — Interactive planning sessions on tasks with spec generation and conversational context
- Learner / Knowledge System — Capture failures, fixes, patterns, and checklists per board with confidence scoring and tagging
- Metrics Dashboard — Board-level and organization-wide analytics via Recharts
- Onboarding — Guided board onboarding sessions with step-by-step question flows
- Custom Fields — Define organization-scoped custom fields (text, number, select, date, boolean) and attach them to boards and tasks
- Approvals — Request and resolve approvals on tasks with optional blocking of status changes
- Activity Feed — Audit trail of all entity-level events across the organization
| Layer | Technology |
|---|---|
| Monorepo | Turborepo + pnpm workspaces |
| Backend | NestJS 11 + Prisma 7 + PostgreSQL 16 |
| Frontend | Next.js 16 + React 19 + Tailwind CSS 4 |
| UI Components | Radix UI + Lucide Icons |
| Data Fetching | TanStack React Query 5 |
| Charts | Recharts 3 |
| Drag & Drop | @hello-pangea/dnd |
| Queue | BullMQ + Redis 7 |
| Auth | JWT + Passport (local dev mode with shared token) |
| API Docs | Swagger via @nestjs/swagger |
| Testing | Jest (API) + Vitest + Testing Library (Web) |
- Node.js v20+
- pnpm v10.30+
- Docker and docker-compose (standalone v5+, use
docker-composenotdocker compose)
# Clone the repository
git clone <repo-url> command-center
cd command-center
# Install dependencies
pnpm install
# Set up environment variables
cp .env.example .env
# Edit .env if needed (defaults work for local development)
# Start infrastructure (PostgreSQL + Redis)
docker-compose up -d db redis
# Run database migrations
cd apps/api && npx prisma migrate deploy && cd ../..
# Start all services in dev mode
pnpm devThe services will be available at:
| Service | URL |
|---|---|
| Web App | http://localhost:3000 |
| API | http://localhost:8000 |
| Swagger Docs | http://localhost:8000/api |
To run everything in containers:
docker-compose up -dRun from the repository root — Turborepo handles cross-workspace orchestration:
pnpm dev # Start all apps in watch mode
pnpm build # Build all packages and apps
pnpm test # Run all tests
pnpm typecheck # TypeScript type checking
pnpm lint # Lint all packages
pnpm clean # Clean build artifactscommand-center/
├── apps/
│ ├── api/ # NestJS backend (port 8000)
│ │ ├── prisma/ # Schema & migrations
│ │ └── src/
│ │ ├── modules/ # Feature modules
│ │ │ ├── auth/ # JWT + local auth
│ │ │ ├── organizations/ # Multi-tenant org management
│ │ │ ├── boards/ # Board CRUD + type registry
│ │ │ ├── board-groups/ # Board grouping
│ │ │ ├── board-type-registry # Board type definitions
│ │ │ ├── tasks/ # Task management
│ │ │ ├── agents/ # Agent lifecycle
│ │ │ ├── agent-platforms/ # A2A platform registry
│ │ │ ├── approvals/ # Approval workflows
│ │ │ ├── custom-fields/ # Custom field definitions & values
│ │ │ ├── workflow-engine/ # Stage progression logic
│ │ │ ├── workflow-templates/ # Template CRUD
│ │ │ ├── dispatch/ # Task dispatch + OpenClaw client
│ │ │ ├── planning/ # Planning Q&A sessions
│ │ │ ├── learner/ # Knowledge entry management
│ │ │ ├── metrics/ # Analytics & aggregations
│ │ │ ├── onboarding/ # Board onboarding flows
│ │ │ ├── activity-events/ # Audit event logging
│ │ │ ├── platform-health/ # Platform health checks
│ │ │ ├── events/ # Domain event bus
│ │ │ └── health/ # Health check endpoint
│ │ ├── common/ # Shared guards, decorators, pipes
│ │ └── prisma/ # Prisma service
│ └── web/ # Next.js frontend (port 3000)
│ └── src/
│ ├── app/ # App Router pages
│ │ ├── boards/ # Board views
│ │ ├── agents/ # Agent management
│ │ ├── approvals/ # Approval views
│ │ ├── custom-fields/ # Custom field admin
│ │ ├── dashboard/ # Metrics dashboard
│ │ ├── platforms/ # Platform management
│ │ ├── settings/ # App settings
│ │ └── login/ # Authentication
│ ├── components/ # Reusable UI components
│ ├── hooks/ # React Query hooks & custom hooks
│ ├── lib/ # API client & utilities
│ └── providers/ # Context providers
└── packages/
└── shared-types/ # Shared TypeScript type definitions
| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | postgresql://command_center:command_center@localhost:5432/command_center |
REDIS_URL |
Redis connection string | redis://localhost:6379 |
JWT_SECRET |
Secret for signing JWT tokens | local-dev-jwt-secret-change-in-production |
AUTH_MODE |
Authentication mode (local for dev) |
local |
LOCAL_AUTH_TOKEN |
Shared token for local auth | dev-token-123 |
PORT |
API server port | 8000 |
OPENCLAW_GATEWAY_TOKEN |
Token for OpenClaw WebSocket auth | (empty) |
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_API_URL |
Backend API URL | http://localhost:8000 |
NEXT_PUBLIC_AUTH_MODE |
Auth mode for the frontend | local |
The API is documented with Swagger/OpenAPI. Once the API is running, visit:
http://localhost:8000/api
All endpoints require authentication. In local dev mode, pass the LOCAL_AUTH_TOKEN as a Bearer token:
curl -H "Authorization: Bearer dev-token-123" http://localhost:8000/boardsEach board is one of five types, representing a domain of work:
- Discovery — Research and exploration tasks
- BizDev — Business development and partnerships
- Engineering — Technical implementation work
- Marketing — Campaign and content management
- Goal — Objective and key result tracking
Boards can be linked to workflow templates that define ordered stages (e.g., Inbox → In Progress → Review → Done). Templates support failure targets for handling rejected work and can require approvals before marking tasks as done.
Agents are scoped to a board and can be in one of three states: active, paused, or terminated. Each agent may have a delegation role (orchestration, engineering, research, execution) and can be linked to an external A2A platform.
Tasks can have approval gates. Boards can be configured to require approval before a task moves to "done" and optionally block all status changes while an approval is pending.
Organizations define custom field schemas (text, number, select, date, boolean) that can be attached to boards. Tasks on those boards then carry values for each attached field.
Tasks support an interactive planning Q&A flow where messages are stored alongside the task. Once planning is complete, a structured spec is generated and attached to the task.
The learner module captures organizational knowledge as entries categorized by type (failure, fix, pattern, checklist) with confidence scoring and tagging. Entries are scoped to boards and optionally linked to tasks.