Service topology
Services
kommit-api — REST API server
kommit-api — REST API server
Framework: Hono 4 (lightweight, TypeScript-first)
Port: 3319
Responsibilities:
- Project, node, edge, and memory CRUD
- PRD generation and refinement (streaming via SSE)
- Chat endpoints with AI models (Anthropic Claude, OpenAI)
- Authentication via Better Auth (session cookies + API keys)
- Template and invite management
- Job queue submission to BullMQ
HTTPException, ZodError, and generic errors. Sentry integration for production error tracking.kommit-frontend — web application
kommit-frontend — web application
Framework: Next.js 16 with App Router, React 19
Port: 3000
Responsibilities:
- Dashboard, project canvas editor, memory browser
- PRD generation and refinement UI
- Import wizards (GitHub, GitLab, Bitbucket, Figma, Vercel, ZIP, and more)
- Admin panel (user management, audit logs, feature requests, roadmap)
- Marketing pages, blog, and embedded documentation
kommit-worker — background job processor
kommit-worker — background job processor
Framework: BullMQ on Redis
Port: 4200 (health/metrics)
Queue name:
Failed jobs go to a Dead Letter Queue with optional Slack notifications. Completed jobs are retained for 24 hours; failed jobs for 7 days.
repo
Concurrency: configurable (default 5)| Job type | Purpose |
|---|---|
repo.sync | Sync with GitHub repositories |
repo.analyze | Code analysis and semantic indexing |
repo.import | Repository import/ingestion |
zip.import | ZIP file import and processing |
kommit-parser — code analysis service
kommit-parser — code analysis service
Framework: Express 5
Port: 4100
Responsibilities:
- Language detection across 50+ languages
- AST generation via Tree-sitter
- Code tokenization and processing
kommit-worker during repository analysis jobs.Data stores
| Store | Technology | Purpose |
|---|---|---|
| Primary database | PostgreSQL 16 + pgvector | Projects, nodes, edges, users, orgs, billing, audit logs |
| Vector embeddings | pgvector (1 536 dimensions) | Semantic memory search |
| Job queue & cache | Redis | BullMQ job queue, session cache |
Data flow
User creates a project
The frontend sends requests to
kommit-api. The API validates inputs with Zod, persists to PostgreSQL via Drizzle ORM, and returns the created project.User imports a repository
The API enqueues a
repo.import job to BullMQ (Redis). The worker picks up the job, clones the repo, and calls kommit-parser for code analysis. Results are written back to PostgreSQL.Memory is stored
When a memory is created, the API generates a vector embedding (1 536 dimensions) and stores it in PostgreSQL via pgvector. Conflict detection runs automatically against existing memories.
External integrations
| Service | Purpose |
|---|---|
| GitHub | Repository sync, webhooks, OAuth, GitHub App |
| Anthropic Claude | AI-powered chat, PRD generation |
| OpenAI | Alternative LLM provider |
| Resend | Transactional email |
| Stripe | Billing and subscriptions |
| Sentry | Error tracking (all services) |
| PostHog | Product analytics (frontend) |
Observability
Every service exposes:GET /health— liveness check with database connectivityGET /metrics— Prometheus-format metrics
jobs_processed_total (by job name and status), job_duration_seconds (histogram), active_jobs (gauge).