Skip to main content
Everything is env-driven. cp .env.example .env and edit. Each variable has a working local default in docker-compose.yml, so a bare docker compose up runs; you only set what a real deployment needs.

Security (required)

string
required
Session-token signing secret. The API refuses to start if it’s unset or shorter than 16 chars. Generate one: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Public URLs

For a real deployment, point these at your domain (behind HTTPS).
string
Public origin of the dashboard, e.g. https://replayfy.example.com.
string
Public origin of the API, e.g. https://api.example.com. The dashboard image reads this at runtime, so one image works for any host.
string
Comma-separated allowlist of browser origins. Set it to your dashboard origin.

Datastores

The compose defaults wire these to the bundled containers. Override only to point at external/managed datastores.
string
string
Must be a replica set — Prisma requires one. The bundled Mongo self-initiates rs0; a managed MongoDB (e.g. Atlas) already is one.
string
string

Object storage (S3-compatible)

Stores session assets, thumbnails, and media. Any S3-compatible store works — MinIO (the default), AWS S3, Cloudflare R2, Backblaze B2.
string
string
boolean
true for MinIO.
string
string
string
string
The browser-reachable read URL. Path-style stores include the bucket, e.g. http://localhost:9002/replayfy.
Cloudflare R2 shortcut: set R2_ACCOUNT_ID + R2_ACCESS_KEY_ID + R2_SECRET_ACCESS_KEY + R2_BUCKET and the endpoint is derived for you.

Email

Defaults to the built-in Mailpit catcher — read what the app sends at http://localhost:8025. For real delivery:
string
smtp, resend, or console (logs to stdout). Defaults to the Mailpit SMTP.
string
Your relay, when EMAIL_PROVIDER=smtp.
string

AI (optional)

See Enable AI for the full setup. In short:
string
openrouter (reaches every provider by model id) or blank for Anthropic direct.
string
string
The model id, e.g. anthropic/claude-sonnet-4.5 (OpenRouter) or claude-sonnet-4-5 (Anthropic direct).

First run

boolean
1 (default) seeds a demo workspace + the admin@local / admin login. Set 0 to start empty.
boolean
true lets /signup work without a mail server (new accounts are marked verified on creation). See First login.
Keep this off on an internet-facing instance — it lets anyone create verified accounts.