Skip to main content
Manifest reads its configuration from environment variables. In the bundled Docker setup these come from ~/manifest/.env. For docker run, pass them with -e. For non-Docker installs, export them in the shell before launching the backend.

Core

Network & security

LLM proxy

How Manifest talks to upstream providers.

Email

Used for both Better Auth transactional emails (signup verification, password reset) and threshold alerts. Set one provider block.
Without an email provider, signup verification is waived (users are created as unverified-but-usable) and password reset silently no-ops. Hard-limit blocks still work; alerts just don’t email.

Legacy Mailgun-only

Older deployments used these. Kept for backward compatibility; new installs should use EMAIL_* instead.

OAuth logins

Each provider activates automatically when both *_CLIENT_ID and *_CLIENT_SECRET are set. Configure the callback URL in the provider’s console as ${BETTER_AUTH_URL}/api/auth/callback/<provider>. Subscription OAuth (ChatGPT, Claude, MiniMax) uses Manifest-side client IDs by default. Override only if you’ve registered your own app:

Telemetry

Postgres bundled volume

When you run the bundled compose file, Manifest brings up its own Postgres container. To use a stronger password than the default, set both of these. They must agree, and special characters in the password must be percent-encoded in DATABASE_URL: Special-char encoding: @%40, :%3A, /%2F.