src/ and ee/) and the frontend source. Variables in the example .env that do not match code-level names are called out explicitly.
Required? means the backend throws or the feature silently fails at startup if the variable is absent. Optional means it is feature-gated or has a safe default.
Core
Consumer configuration
FRONTEND is a deployment-convention variable used by consumer projects and templates (e.g. exulu-example) to supply the public frontend URL for invite and notification links. It is not read by @exulu/backend itself (process.env.FRONTEND does not appear in the backend source). Set it in whichever layer of your deployment config constructs those links.
Postgres
See Postgres service for connection pool settings and
max_connections requirements.
Redis
Redis is required for background workers (embeddings, evals, routines). IfREDIS_HOST and REDIS_PORT are absent, the server starts without worker support.
S3-compatible storage
IMP uses an S3-compatible bucket for file uploads (via the Uppy companion proxy). MinIO is the recommended self-hosted option.The frontend also reads
COMPANION_S3_ENDPOINT to construct upload URLs for the browser. Set it in both environments.LiteLLM
Model providers
These variables appear inconfig.litellm.yaml under litellm_params using LiteLLM’s os.environ/ interpolation syntax. Set them in the backend container environment so LiteLLM can read them at startup.
Add other provider API keys (OpenAI, Anthropic, Azure, etc.) the same way — expose them in the container environment and reference them from
config.litellm.yaml with os.environ/VARIABLE_NAME.
Transcription
Transcription requires a running Whisper server. See Whisper service.Claim check
Claim check (POST /claims/check) verifies an answer’s claims against the sources supplied with the request. See the Claim Check API.
Meetings (Recall)
Meeting recording via Recall.ai is optional.SMTP
There are two separate SMTP variable namespaces. See SMTP and authentication for the full explanation. Backend variables — used by the agent email tool (SMTP_*):
Frontend variables — used by NextAuth for OTP sign-in emails (
EMAIL_SERVER_*):
Telemetry
OpenTelemetry export to SigNoz is optional. All three must be set for telemetry to initialise. See Observability.Sandbox
Guest access
These variables control the anonymous guest chat feature. All five are optional; the backend uses the defaults listed when the variables are absent.External user access
These variables control rate limiting for logged-in users with theexternal role (self-registered users invited to chat with specific agents). Both are optional; the backend uses the defaults listed when the variables are absent. Unlike guest rate limiting, this is keyed by user ID rather than IP, since external users are authenticated.