81 lines
2.6 KiB
Markdown
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
|