Skip to main content
Environment variables are set in dev_resources.py (local) and prd_resources.py (production).

Production Variables

These variables are set in prd_resources.py:
VariableSourceDescription
RUNTIME_ENVHardcodedprd in production
DATA_DIRHardcoded/data (EFS mount point)
OPENAI_API_KEYSecretsFrom prd_api_secrets.yml
EXA_API_KEYSecretsFrom prd_api_secrets.yml (optional)
DB_HOSTAWSRDS endpoint (auto-populated)
DB_PORTAWSRDS port (auto-populated)
DB_USERSecretsFrom prd_db_secrets.yml
DB_PASSSecretsFrom prd_db_secrets.yml
DB_DATABASEAWSRDS database name (auto-populated)
WAIT_FOR_DBHardcodedTrue when database enabled
MIGRATE_DB is not set in production by default. Add it manually if you want migrations to run on startup. See Adding Custom Variables.

Development Variables

These variables are set in dev_resources.py:
VariableValueNotes
RUNTIME_ENVdev
DATA_DIR/app/.dataLocal container path
MIGRATE_DBTrueAuto-migrates on startup
WAIT_FOR_DBTrueWaits for Docker Postgres
Database variables (DB_HOST, DB_PORT, etc.) come from the local Docker container.

Adding Custom Variables

Add variables to the container_env dict in prd_resources.py:
prd_resources.py
container_env = {
    ...
    "MY_CUSTOM_VAR": "value",
    "FROM_LOCAL_ENV": getenv("LOCAL_VAR"),
    "MIGRATE_DB": True,  # Enable auto-migrations
}
After adding variables:
ag infra patch prd:aws:::td && ag infra patch prd:aws:::service

Reading in Code

import os

# With default fallback
my_var = os.getenv("MY_CUSTOM_VAR", "default_value")

# Required (raises if missing)
api_key = os.environ["OPENAI_API_KEY"]