Deployment
The app builds to a standalone output (output: "standalone" in
), so it runs anywhere Node runs.
You need two things in production: a PostgreSQL database with pgvector and your environment variables.
Option A — Vercel
- Push the repo to GitHub and import it in Vercel.
- Provision a Postgres database with the
vectorextension (Neon, Supabase, or any Postgres 16+). Copy its connection string intoDATABASE_URL. - Add every variable from in the Vercel project settings. Set
NEXT_PUBLIC_APP_URLto your domain. - Run migrations against the production database:
- Add the Stripe production webhook (see ).
- Deploy.
Option B — Docker
The repo ships a multi-stage .
docker-compose.yml also defines a full app + db stack behind the full
profile:
Run migrations against the target database before first boot:
Production checklist
-
DATABASE_URLpoints at a Postgres with thevectorextension - Migrations applied (
npm run db:deploy) -
BETTER_AUTH_SECRETset to a strong secret -
NEXT_PUBLIC_APP_URLset to your domain - OAuth redirect URIs updated to your domain
- Live Stripe keys + production webhook configured
- At least one AI provider key set
- For a public demo, set
NEXT_PUBLIC_DEMO_MODE="true"(disables sign up so only the shared demo account is usable) and tuneconfig/demo.tscredits; otherwise disable it (enabled: false)