Run it
bun install
docker compose up -d postgres # Navidiff keeps sessions, files and findings in Postgres
bun run dev # server :5177, web :5178 (vite proxies /api)Open http://localhost:5178 and create a local account. The first account becomes the workspace owner. GitHub sign-in and repository access become available after the GitHub App is configured.
Always-on instead: ops/navidiff.service (systemd user unit — see the header comment). Prod-ish single process: bun run build && bun server/index.ts, and the server serves the built SPA.
Or the whole thing in containers:
cp .env.example .env # set the database + GitHub App vars
docker compose up --build -d
curl localhost:5177/preflightGET /preflight reports git / claude / database / GitHub App status.
Configuration
Config is environment-only. The essentials:
| var | default | |
|---|---|---|
NAVIDIFF_DATABASE_URL | (required in prod) | Postgres connection string. Railway/Fly/Heroku inject DATABASE_URL, which is used as a fallback. |
NAVIDIFF_PORT | 5177 | |
NAVIDIFF_REPOS_ROOT | ~/.local/share/navidiff/repos | where repos are cloned on demand, one dir per owner/name. |
NAVIDIFF_REPOS_MAX_BYTES | 20 GiB | soft cap on the clone cache; least-recently-used checkouts are evicted past it. |
NAVIDIFF_EVENTS | ~/.local/share/navidiff/events.jsonl | the append-only verdict log — deliberately a file, not in the DB (see internals). |
NAVIDIFF_TOKEN | (unset) | a shared machine token for the extension / scripts, alongside the browser login. |
GitHub App (read PRs) and sign-in (GitHub OAuth) each have their own vars — see GitHub App and Deploying. Linear (LINEAR_API_KEY, LINEAR_WORKSPACE) and Langfuse (LANGFUSE_*, Tracing) are optional; unset means the feature is off, not broken.