Skip to content
NAVIDIFF DOCUMENTATION

Run it

bash
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:

bash
cp .env.example .env    # set the database + GitHub App vars
docker compose up --build -d
curl localhost:5177/preflight

GET /preflight reports git / claude / database / GitHub App status.

Configuration

Config is environment-only. The essentials:

vardefault
NAVIDIFF_DATABASE_URL(required in prod)Postgres connection string. Railway/Fly/Heroku inject DATABASE_URL, which is used as a fallback.
NAVIDIFF_PORT5177
NAVIDIFF_REPOS_ROOT~/.local/share/navidiff/reposwhere repos are cloned on demand, one dir per owner/name.
NAVIDIFF_REPOS_MAX_BYTES20 GiBsoft cap on the clone cache; least-recently-used checkouts are evicted past it.
NAVIDIFF_EVENTS~/.local/share/navidiff/events.jsonlthe 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.

Ready to review a real change?

Open Navidiff