This repository contains four packages. Each package manages its own dependencies independently.
| Package | Runtime | Package Manager |
|---|---|---|
container/ |
Node.js | npm |
cli/ |
Bun | bun |
docs/ |
Node.js | npm |
dashboard/ |
Bun | npm (frontend) / bun (server) |
main— production/release branch. Only updated via PRs fromstaging.staging— integration branch. All feature/fix branches targetstagingfor PRs.- Feature and fix branches should be created from
stagingand PRed back tostaging. - PRs from
stagingtomainare used for releases.
Each package has its own CLAUDE.md with package-specific development rules:
container/CLAUDE.md— changelog, documentation, and configuration rules for the devcontainer packagecli/— Bun/TypeScript CLI; runbun testfor testsdocs/— Astro/Starlight site; runnpm run buildto verifydashboard/CLAUDE.md|dashboard/README.md— Svelte 5 SPA + Bun backend for session analytics
When a change spans multiple packages, make the changes in a single branch and PR. Group related changes in the commit message by package.
Run tests for each affected package before committing:
- Container:
cd container && npm test - CLI:
cd cli && bun test - Docs:
cd docs && npm run build - Dashboard:
cd dashboard && bun test
The dashboard/ and cli/ packages serve different audiences:
- CLI (
codeforgecommand) — terminal-first, text/JSON output, scriptable, runs inside or outside the container. Features: session search, task search/list/show, plan search, plugin management, index/config commands. - Dashboard (Svelte 5 SPA) — visual analytics, charts, expandable detail views, real-time SSE updates. Features: session browsing with conversation replay, task/plan/agent/memory views, project analytics, cost tracking.
When adding a new data view:
- If it's browsable/visual (tables, charts, detail drill-down) → dashboard
- If it's scriptable/automatable (piped output, filters, JSON) → CLI
- If it's both → implement in both, but don't import CLI as a dashboard dependency. Fork patterns instead.