mission-control/CLAUDE.md

81 lines
2.6 KiB
Markdown

# Mission Control
Open-source dashboard for AI agent orchestration. Manage agent fleets, track tasks, monitor costs, and orchestrate workflows.
**Stack**: Next.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS 3, Zustand, pnpm
## Prerequisites
- Node.js >= 22 (LTS recommended; 24.x also supported)
- pnpm (`corepack enable` to auto-install)
## Setup
```bash
pnpm install
pnpm build
```
Secrets (AUTH_SECRET, API_KEY) auto-generate on first run if not set.
Visit `http://localhost:3000/setup` to create an admin account, or set `AUTH_USER`/`AUTH_PASS` in `.env` for headless/CI seeding.
## Run
```bash
pnpm dev # development (localhost:3000)
pnpm start # production
node .next/standalone/server.js # standalone mode (after build)
```
## Docker
```bash
docker compose up # zero-config
bash install.sh --docker # full guided setup
```
Production hardening: `docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d`
## Tests
```bash
pnpm test # unit tests (vitest)
pnpm test:e2e # end-to-end (playwright)
pnpm typecheck # tsc --noEmit
pnpm lint # eslint
pnpm test:all # lint + typecheck + test + build + e2e
```
## Key Directories
```
src/app/ Next.js pages + API routes (App Router)
src/components/ UI panels and shared components
src/lib/ Core logic, database, utilities
.data/ SQLite database + runtime state (gitignored)
scripts/ Install, deploy, diagnostics scripts
docs/ Documentation and guides
```
Path alias: `@/*` maps to `./src/*`
## Data Directory
Set `MISSION_CONTROL_DATA_DIR` env var to change the data location (defaults to `.data/`).
Database path: `MISSION_CONTROL_DB_PATH` (defaults to `.data/mission-control.db`).
## Conventions
- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`)
- **No AI attribution**: Never add `Co-Authored-By` or similar trailers to commits
- **Package manager**: pnpm only (no npm/yarn)
- **Icons**: No icon libraries -- use raw text/emoji in components
- **Standalone output**: `next.config.js` sets `output: 'standalone'`
## Common Pitfalls
- **Standalone mode**: Use `node .next/standalone/server.js`, not `pnpm start` (which requires full `node_modules`)
- **better-sqlite3**: Native addon -- needs rebuild when switching Node versions (`pnpm rebuild better-sqlite3`)
- **AUTH_PASS with `#`**: Quote it (`AUTH_PASS="my#pass"`) or use `AUTH_PASS_B64` (base64-encoded)
- **Gateway optional**: Set `NEXT_PUBLIC_GATEWAY_OPTIONAL=true` for standalone deployments without gateway connectivity