Skip to content

ADR-0001: Technology stack ​

Status: accepted (2026-10-12)

Decision ​

  • Runtime: Node.js 22 LTS (>= 22.18), TypeScript strict, ESM. Sources run through Node type stripping, so only erasable syntax is allowed and relative imports carry .ts extensions. No build step for services; tsc is used for type checking only.
  • Monorepo: pnpm workspaces + Turborepo. Workspace packages export src/index.ts directly.
  • HTTP: Fastify (no NestJS). GitHub: @octokit/webhooks + @octokit/app, no Probot.
  • Database: PostgreSQL 17 with pgvector and pg_textsearch (PostgreSQL License) for BM25; ts_rank_cd fallback for managed Postgres without the extension. Driver pg, schema and migrations with Drizzle.
  • Queue and cache: BullMQ (OSS) on Valkey 9 (BSD-3-Clause) via ioredis. Redis 8 is excluded (AGPL/SSPL/RSAL). BullMQ's PostgreSQL backend is an optional small-install profile after load testing.
  • Validation: zod. Logging: pino. Telemetry: OpenTelemetry (OTLP, off without endpoint).
  • Tests: vitest, Testcontainers for Postgres/Valkey, fastify.inject() for HTTP.
  • Observability bundle (optional): OTel Collector, Prometheus, Jaeger, Perses. Default is bring-your-own OTLP backend.

License policy ​

The open core, everything outside hosted/, is Apache-2.0. The hosted edition in hosted/ is proprietary under hosted/LICENSE (a placeholder until counsel provides the final text); its packages are private and declare UNLICENSED, and no open-core package may depend on them (ADR-0015). pnpm verify:licenses checks both. Dependency licenses are enforced by licenses/policy.yaml and licenses/exceptions.yaml through pnpm verify:licenses: bundled code is MIT/Apache-2.0 (plus listed permissive licenses transitively); copyleft and source-available licenses are denied in product code; dev-only exceptions are recorded explicitly.

Consequences ​

  • TypeScript features that require emit (enums, namespaces, parameter properties) are unavailable.
  • typescript-eslint pins TypeScript to the 6.0 line until it supports 7.x.

The open core is released under the Apache License 2.0.