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.
This page is for self-hosted instances only. On Manifest Cloud there is no server to configure and no .env to edit — everything you can change lives in the dashboard.

Core

Network & security

Database

LLM proxy

How Manifest talks to upstream providers.

Request recordings

Storage and retention for request logs. The bundled Docker setup already sets the filesystem path and mounts a volume for it, so a default install needs none of these.
A partial S3 configuration disables recording rather than falling back to local disk. Set bucket and region, and either both access-key variables or neither.

Autofix

Autofix works with zero configuration; AUTOFIX_GLOBAL_ENABLED=false is the kill switch.

Email

Used for both Better Auth transactional emails (signup verification, password reset) and threshold alerts. Set one provider block. A provider saved on a harness’s Limits page takes precedence for threshold alerts. These variables stay the only path for verification and password-reset email.
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, and alerts still email if a provider is saved on a harness’s Limits page.

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

Error monitoring

Sentry is opt-in and stays off unless you give it a DSN.

Operations

Image version

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.