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
OPENAI_API_KEYEnvironment / SecretsFrom prd_api_secrets.yml via Secrets Manager
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
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 --env prd --infra aws --name td && ag infra patch --env prd --infra aws --name 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"]