Skip to main content
Steward is configured entirely through environment variables. There is no config file. Pass variables via your orchestrator (docker run -e, Kubernetes Secrets, ECS task definitions, etc.) or a .env file for local development.

Required

VariableDescription
ENCRYPTION_KEY64-character hex string. Used to encrypt provider credentials at rest. Generate with openssl rand -hex 32.
POSTGRES_HOSTPostgreSQL host.
POSTGRES_USERPostgreSQL user.
POSTGRES_PASSWORDPostgreSQL password.
POSTGRES_DBPostgreSQL database name. Default: majordomo_steward.

Server

VariableDefaultDescription
HOST0.0.0.0Bind address.
PORT7680HTTP port.
READ_TIMEOUT30sMax duration for reading the full request.
WRITE_TIMEOUT600sMax duration for writing the full response (set high for streaming).
UPSTREAM_TIMEOUT600sMax duration to wait for the upstream LLM provider.

PostgreSQL

VariableDefaultDescription
POSTGRES_PORT5432PostgreSQL port.
POSTGRES_SSLMODEdisableSSL mode: disable, require, verify-full, etc.
POSTGRES_MAX_CONNS20Connection pool size.

Logging

VariableDefaultDescription
LOG_LEVELinfoLog verbosity: debug, info, warn, error.
LOG_STORE_REQUEST_BODYfalseStore request bodies in Postgres. Off by default — use cloud storage instead.
LOG_STORE_RESPONSE_BODYfalseStore response bodies in Postgres. Off by default — use cloud storage instead.

Metadata sync

VariableDefaultDescription
BATCH_INTERVAL60sHow often Steward syncs usage metadata to Butler.
BATCH_MAX_SIZE500Maximum rows per sync batch.
KEY_SYNC_INTERVAL5mHow often Steward polls Butler for API key updates.

Pricing

VariableDefaultDescription
PRICING_REMOTE_URLhttps://www.llm-prices.com/current-v1.jsonSource for live model pricing. Fetched hourly.
PRICING_REFRESH_INTERVAL1hHow often to refresh pricing data.
PRICING_FALLBACK_FILE./pricing.jsonLocal fallback if remote fetch fails.
PRICING_ALIASES_FILE./model_aliases.jsonMaps provider model names to canonical pricing names.

Provider overrides

Override the base URL for any LLM provider. Useful when routing through an internal gateway or private endpoint.
VariableDefault
OPENAI_BASE_URLhttps://api.openai.com
ANTHROPIC_BASE_URLhttps://api.anthropic.com
GEMINI_BASE_URLhttps://generativelanguage.googleapis.com

Admin API

VariableDefaultDescription
STEWARD_ADMIN_TOKENWhen set, enables the admin API for managing org registration and checking sync status.

Secrets management

Set ENCRYPTION_KEY and POSTGRES_PASSWORD via your secrets manager — never in source control. In Kubernetes, mount them as Secrets. In ECS, reference them from Parameter Store or Secrets Manager. In Docker, use an .env file outside of version control.