All environment variables that control Steward behavior.
| Variable | Required | Default | Description |
|---|---|---|---|
| SECRET_KEY_BASE | Prod | Auto-generated (dev) | Phoenix session signing secret. Generate with mix phx.gen.secret. |
| DATABASE_PATH | No | var/acs.sqlite (dev) | SQLite database file path. Dev default: var/acs.sqlite. |
| DATABASE_URL | Prod (PG) | — | PostgreSQL connection string. Not needed for SQLite dev setup. |
| POOL_SIZE | No | 5 (SQLite) / 10 (PG) | Database connection pool size. |
| ACS_CLUSTER_NAME | No | dev (dev) / default (prod) | Cluster identity for multi-cluster deployments. |
| ACS_PROJECT_NAME | No | "" | Project name for memory scoping and attribution. |
| ACS_DEVELOPER_NAME | No | unknown | Developer identity tag for memory attribution. |
| ACS_USERNAME | No | admin | Dashboard username. |
| ACS_PASSWORD | Prod | admin | Dashboard password. Must change in production. |
| MCP_API_KEY | Prod | dev-api-key (dev) | API key for MCP tool authentication. |
| SERVICE_API_KEY | Prod | dev-service-key (dev) | Service-level key for cross-system integrations. |
| LOG_INGEST_KEY | No | dev-log-ingest-key (dev) | Shared key for log ingestion endpoint. |
| MCP_AUTH_LOCAL_FALLBACK | No | false | Allow unauthenticated MCP calls from localhost. |
| MCP_QUERY_KEY_AUTH | No | false | Allow ?api_key= on MCP SSE (legacy connector fallback). |
| MCP_TOOLS_PATH | No | /app/acs/acstools | Comma-separated directories for YAML tool definitions. |
| COOKIE_SIGNING_SALT | No | Derived from SECRET_KEY_BASE | Session cookie salt for stable LiveView auth across restarts. |
| SESSION_VALIDITY_DAYS | No | 7 | Dashboard session lifetime in days. |
| CORS_ORIGINS | No | * | Comma-separated browser origins allowed for MCP CORS. |
| PHX_HOST / DOMAIN | Prod | — | Public hostname for URL generation and LiveView origin checks. |
| MEMORY_STORE | No | yaml | Storage format: yaml or obsidian. |
| OBSIDIAN_VAULT_PATH | No | — | Filesystem path to Obsidian vault (when MEMORY_STORE=obsidian). |
| META_HARNESS_ENABLED | No | false | Enable meta-harness analysis and reporting. |
| BRIDGE_ALLOWED_HOSTS | No | — | Comma-separated allowed hosts for HTTP bridge. |
| ALLOWED_COMMANDS | No | echo,ls,cat (dev) | Comma-separated allowed commands for exec_command tool. |
| ALLOWED_PATHS | No | /tmp,/app | Comma-separated allowed paths for file tools. |
| HTTP_SLEEP_MAX_MS | No | — | Max sleep duration for sleep tool (ms). |
| ACS_ADMIN_EMAILS | No | admin@localhost (dev) | Comma-separated admin emails for notifications. |
Memory auditing and semantic search need at least one LLM provider. Set any of these:
| Variable | Provider | Description |
|---|---|---|
| NIM_API_KEY | NVIDIA NIM | NVIDIA NIM API key for LLM evaluation |
| MIMO_API_KEY | Mimo | Mimo API key for LLM evaluation |
| MINIMAX_API_KEY | MiniMax | MiniMax API key for LLM evaluation |
| OPENAI_API_KEY | OpenAI | OpenAI API key |
| OPENAI_BASE_URL | OpenAI | Custom OpenAI-compatible endpoint URL |
| OPENAI_MODEL | OpenAI | OpenAI model name override |
| ENABLED_LLM_PROVIDERS | All | Comma-separated whitelist (e.g. mimo,nim) |
| OLLAMA_URL | Ollama | Ollama endpoint for local embeddings: http://localhost:11434 |
Optional rules to auto-reject low-quality proposed memories:
| Variable | Description |
|---|---|
| AUDITOR_REJECT_TITLE_PREFIXES | Comma-separated title prefix patterns for auto-rejection |
| AUDITOR_REJECT_TITLE_EXACT | Comma-separated exact title matches for auto-rejection |
| AUDITOR_REJECT_SCOPE_PREFIXES | Comma-separated scope prefix patterns for auto-rejection |
| AUDITOR_REJECT_ID_PREFIXES | Comma-separated ID prefix patterns for auto-rejection |
| AUDITOR_REJECT_ID_CONTAINS | Comma-separated ID substring patterns for auto-rejection |
| AUDITOR_MIN_CONTENT_LENGTH | Minimum content length before auto-reject |
| AUDITOR_LOW_CONTENT_LENGTH | Content length threshold for low-quality flagging |
| AUDITOR_FUZZY_THRESHOLD | Similarity threshold for fuzzy duplicate detection (0.0-1.0) |
| AUDITOR_REJECT_EMPTY_SCOPE | Auto-reject memories with empty scope path |
| AUDITOR_REJECT_TITLE_EQUALS_CONTENT | Auto-reject when title equals content verbatim |
| AUDITOR_INTERVAL | Polling interval in ms (default: 30000) |
For Claude Connectors or production deployments:
| Variable | Default | Description |
|---|---|---|
| OAUTH_BEARER_ENABLED | false | Enable Auth0 JWT validation for Claude Connectors |
| AUTH0_DOMAIN | dev-jw5wgp2b.us.auth0.com | Auth0 tenant domain |
| AUTH0_AUDIENCE | https://prod.stewardacs.xyz/mcp/sse | MCP API identifier |
| AUTH0_ISSUER | Derived from domain | Override OIDC issuer if non-standard |
| MCP_PUBLIC_URL | https://${DOMAIN} | Public base URL for OAuth metadata |
| MCP_RESOURCE_URL | Same as audience | Resource URL in protected-resource metadata |
var/acs.sqliteDATABASE_PATH env var5 (SQLite is single-writer)Two options: set DATABASE_URL for full connection string, or set individual PG vars:
| Env Var | Default | Description |
|---|---|---|
| PGUSER | postgres | Username |
| PGPASSWORD | postgres | Password |
| PGHOST | localhost | Host |
| PGPORT | 5432 | Port |
| PGDATABASE | acs_prod | Database name |
| PGSSL | false | Enable SSL |