Environment Variables
Every auxilia deployment is configured through environment variables. This page is the complete reference — start here to understand what to set, then follow the Cloud Run or VM / Docker host guide for the deployment-specific wiring.
A full example lives in .env.example at the repo root.
Required variables
These must be set for auxilia to start. Missing any of them will fail backend boot.
| Variable | Notes |
|---|---|
DATABASE_URL | postgresql+psycopg://user:pass@host:5432/dbname connection string |
REDIS_HOST / REDIS_PORT | Reachable from the backend (OAuth tokens are cached here) |
JWT_SECRET_KEY | 32+ random characters — used to sign session cookies |
SALT | Salt for AES-GCM encryption of stored MCP API keys |
FRONTEND_URL | Public URL of the web app (used as OAuth redirect base) |
BACKEND_URL | Internal URL the Next.js proxy uses to reach the backend (web only) |
| One LLM key | See LLM providers — at least one is required |
In production, also set:
| Variable | Value | Why |
|---|---|---|
COOKIE_SECURE | true | Forces session cookies to be HTTPS-only (recommended) |
LLM providers
At least one provider must be configured. That means a provider key — except for Google, which also works with Application Default Credentials alone. Configuring a provider makes its models eligible for the picker — configure multiple to give agent authors a choice. Which models actually appear (and which one is preselected) is managed by workspace admins under Settings → Models; see Available models.
| Provider | Environment variable | Models |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY | claude-haiku-4-5, claude-sonnet-4-6, claude-sonnet-5, claude-opus-4-6, claude-opus-4-8, claude-opus-5 |
| OpenAI | OPENAI_API_KEY | gpt-4o-mini, gpt-5, gpt-5-mini, gpt-5-nano, gpt-5.1, gpt-5.2, gpt-5.4, gpt-5.5, gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra |
GOOGLE_API_KEY | gemini-3-flash-preview, gemini-3-pro-preview, gemini-3.5-flash, gemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash | |
| DeepSeek | DEEPSEEK_API_KEY | deepseek-v4-flash, deepseek-v4-pro |
| Xiaomi | XIAOMI_API_KEY | mimo-v2.5-pro, mimo-v2.5 |
| OpenRouter | OPENROUTER_API_KEY | z-ai/glm-5.2, z-ai/glm-5.3, z-ai/glm-5.3-flash, qwen/qwen3.8-max, qwen/qwen3.8-27b, qwen/qwen3.8-2.4t-a95b |
| Meta | METAAI_API_KEY | muse-spark-1.2 |
Anthropic models run with thinking enabled by default; Google models run with include_thoughts=True. Defaults live in app/model_providers/catalog.py.
Google via Application Default Credentials
GOOGLE_API_KEY is not the only way to enable Gemini. If it is unset but Application Default Credentials are available — a GCP service account on Cloud Run/GKE/Compute, gcloud auth application-default login, or GOOGLE_APPLICATION_CREDENTIALS — the backend serves Gemini models through Vertex AI using those credentials instead of the Gemini Developer API. The identity needs permission to call Vertex AI (e.g. the Vertex AI User role). When GOOGLE_API_KEY is set, it always wins.
Authentication
| Variable | Notes |
|---|---|
GOOGLE_CLIENT_ID | OAuth client ID for Google sign-in |
GOOGLE_CLIENT_SECRET | OAuth client secret |
GOOGLE_REDIRECT_URI | e.g. https://your-host/auth/google/callback |
AUTH_GOOGLE_EXCLUSIVE | true disables email/password signup — Google OAuth only |
Leaving these unset keeps email/password signup as the only path. See User Management for the full flow.
Sandbox
There are no sandbox environment variables. Code-execution sandboxes (OpenSandbox, Daytona, Google Cloud Run) are registered by a workspace admin under Settings → Sandboxes, with their endpoint and credential stored encrypted in the database, and bound to agents from the agent editor. See Sandbox.
The one indirect requirement: a Cloud Run sandbox with a GCS snapshot bucket needs the backend to hold Application Default Credentials that can write to that bucket.
Observability (optional)
| Variable | Notes |
|---|---|
LANGFUSE_PUBLIC_KEY | Langfuse project public key |
LANGFUSE_SECRET_KEY | Langfuse project secret key |
LANGFUSE_BASE_URL | https://cloud.langfuse.com or your self-hosted URL |
LANGFUSE_TIMEOUT | API request timeout in seconds (positive integer; default 15) |
The public key, secret key, and base URL are required to enable Langfuse; missing any of them disables the integration silently. The timeout is optional. Details: Observability (Langfuse).
Slack (optional)
| Variable | Notes |
|---|---|
SLACK_SIGNING_SECRET | From Basic Information in your Slack app config |
SLACK_BOT_TOKEN | xoxb-… Bot User OAuth Token |
Missing values make the Slack endpoints reject all incoming requests. Details: Slack Integration.
Tuning & debugging
| Variable | Default | Notes |
|---|---|---|
LOG_LEVEL | INFO | Set to DEBUG for verbose logs (MCP traces, etc.) |
RECURSION_LIMIT | 100 | Max LangGraph steps per agent invocation |
INVOKE_PROFILING | false | Emit per-step timing on each agent invocation |