# === Server Port === # Port the Next.js server listens on (dev and production) # PORT=3000 # === Authentication === # On first run, visit http://localhost:3000/setup to create your admin account. # Alternatively, set AUTH_USER/AUTH_PASS to seed an admin from env (useful for CI/automation). # AUTH_USER=admin # AUTH_PASS=your-strong-password-here # If your password includes "#", use base64: AUTH_PASS_B64= # Example: echo -n 'my#password' | base64 # API key for headless/external access (x-api-key header) # Auto-generated on first run if not set. Persisted to .data/.auto-generated. # API_KEY= # Primary gateway defaults (used by /api/gateways seeding if DB is empty) MC_DEFAULT_GATEWAY_NAME=primary # Session cookie behavior # - In production, cookies default to secure=true unless overridden. # - SameSite defaults to "strict". MC_COOKIE_SECURE= MC_COOKIE_SAMESITE=strict # Network access control (middleware) # In production, access is blocked unless the host is explicitly allowed. # Patterns supported: # - Exact hosts: "app.example.com" # - Subdomains: "*.example.com" # - Prefix wildcard: "100.*" (useful for Tailscale IPs) MC_ALLOW_ANY_HOST= MC_ALLOWED_HOSTS=localhost,127.0.0.1 # Trusted reverse proxy / header authentication # When set, Mission Control reads the named header for the authenticated username # and resolves (or auto-provisions) the MC user without requiring a password. # Only enable this when MC is deployed behind a trusted gateway that injects the # header from a verified identity (e.g. Envoy OIDC claimToHeaders: email → X-User-Email). # MC users must be created with their email address as the username. # MC_PROXY_AUTH_HEADER=X-User-Email # Role assigned to auto-provisioned users (viewer | operator | admin). Leave unset # to require an admin to create accounts manually before users can access via proxy auth. # MC_PROXY_AUTH_DEFAULT_ROLE=viewer # Google OAuth client IDs for Google Sign-In approval workflow # Create in Google Cloud Console (Web application) and set authorized origins/redirects GOOGLE_CLIENT_ID= NEXT_PUBLIC_GOOGLE_CLIENT_ID= # Legacy cookie auth (backward compat, can be removed once all clients use session auth) # Auto-generated on first run if not set. Persisted to .data/.auto-generated. # AUTH_SECRET= # Coordinator identity (used for coordinator chat status replies and comms UI) MC_COORDINATOR_AGENT=coordinator NEXT_PUBLIC_COORDINATOR_AGENT=coordinator # === 1Password Integration (optional) === # Vault name for 1Password CLI pulls (used by Integrations panel) OP_VAULT_NAME=default # === OpenClaw Integration === # Path to .openclaw home directory (required for memory browser, gateway config, logs) OPENCLAW_HOME= # Optional: explicitly point at openclaw.json # OPENCLAW_CONFIG_PATH= # Gateway connection (used by frontend WebSocket) OPENCLAW_GATEWAY_HOST=127.0.0.1 OPENCLAW_GATEWAY_PORT=18789 # Optional: token used by server-side gateway calls OPENCLAW_GATEWAY_TOKEN= # Tools profile used when Mission Control spawns sessions via sessions_spawn. # OpenClaw 2026.3.2+ defaults to "messaging" if omitted. OPENCLAW_TOOLS_PROFILE=coding # Frontend env vars (NEXT_PUBLIC_ prefix = available in browser) NEXT_PUBLIC_GATEWAY_HOST= NEXT_PUBLIC_GATEWAY_PORT=18789 NEXT_PUBLIC_GATEWAY_PROTOCOL= NEXT_PUBLIC_GATEWAY_URL= # Do not expose gateway tokens via NEXT_PUBLIC_* variables. # Keep gateway auth secrets server-side only (OPENCLAW_GATEWAY_TOKEN / GATEWAY_TOKEN). # Gateway client id used in websocket handshake (role=operator UI client). NEXT_PUBLIC_GATEWAY_CLIENT_ID=openclaw-control-ui # Gateway optional mode: set to 'true' if deploying on VPS with firewall blocking WebSocket ports. # In optional mode, Mission Control runs standalone; core CRUD features work but live gateway events do not. # NEXT_PUBLIC_GATEWAY_OPTIONAL=false # === Data Paths (all optional, defaults to .data/ in project root) === # MISSION_CONTROL_DATA_DIR=.data # MISSION_CONTROL_DB_PATH=.data/mission-control.db # MISSION_CONTROL_TOKENS_PATH=.data/mission-control-tokens.json # === OpenClaw Paths (derived from OPENCLAW_HOME if not set) === # OPENCLAW_LOG_DIR=/path/to/.openclaw/logs # OPENCLAW_MEMORY_DIR=/path/to/.openclaw/memory # # NOTE: OpenClaw does NOT store agent memory markdown files under OPENCLAW_HOME/memory/. # That directory does not exist by default. Agent memory lives in each agent's workspace # (e.g. ~/clawd-agents/{agent}/memory/). Point this at your agents root to make the # Memory Browser useful: # OPENCLAW_MEMORY_DIR=/home/you/clawd-agents # OPENCLAW_SOUL_TEMPLATES_DIR=/path/to/.openclaw/templates/souls # OPENCLAW_BIN=openclaw # === Super Admin / Provisioning (optional) === # Path to this repo root, needed if you use the super-admin provisioning helpers. # MISSION_CONTROL_REPO_ROOT=/path/to/mission-control # Template openclaw.json used to seed new tenant state (required for tenant bootstrap). # MC_SUPER_TEMPLATE_OPENCLAW_JSON=/path/to/openclaw.json # Base path used for provisioned linux user homes (default: /home) # MC_TENANT_HOME_ROOT=/home # Workspace directory name under each tenant user home (default: workspace) # MC_TENANT_WORKSPACE_DIRNAME=workspace # === Data Retention (days, 0 = keep forever) === # MC_RETAIN_ACTIVITIES_DAYS=90 # MC_RETAIN_AUDIT_DAYS=365 # MC_RETAIN_LOGS_DAYS=30 # MC_RETAIN_NOTIFICATIONS_DAYS=60 # MC_RETAIN_PIPELINE_RUNS_DAYS=90 # MC_RETAIN_TOKEN_USAGE_DAYS=90