Skip to content

Environment Variables

Two components, two honest tables. Values come from api/.env.example + api/app/config.py (cloud) and .env.example + core/config.py (router). Never document live secret values.

VariableNotes
APP_ENVdevelopment / production. Drives the production fail-fast (below).
APP_NAMEApp name shown on the API. Default DefendableCloud API.
PORTDefault 8080.
APP_BASE_URLPublic Vault app URL; magic links point here.
API_BASE_URLPublic API URL; used to build share links.
DATABASE_URLPostgres via asyncpg: postgresql+asyncpg://....
AWS_ENDPOINT_URL_S3S3 endpoint. Default https://fly.storage.tigris.dev.
AWS_ACCESS_KEY_IDObject-storage key.
AWS_SECRET_ACCESS_KEYObject-storage secret.
AWS_REGIONDefault auto (Tigris).
TIGRIS_BUCKETBucket name. Default defendable-cloud (prod fly.toml sets defendable-cloud-v2).
JWT_SECRETMagic-link/session signing secret.
JWT_TTL_HOURSSession TTL. Default 720 (30 days).
MAGIC_TTL_MINUTESMagic-link TTL. Default 30.
RESEND_API_KEYResend email delivery for magic links.
EMAIL_FROMSender. Default DefendableCloud <build@defendableos.com>.
CORS_ORIGINSComma-separated. Blank = * (development only).
CHECKOUT_RETURN_ORIGINSStripe checkout redirect allowlist; APP_BASE_URL is always included.
STRIPE_API_KEYStripe secret key (test/live).
STRIPE_WEBHOOK_SECRETVerifies /stripe/webhook signatures.
STRIPE_PRICE_IDMembership annual price. All three unset = checkout 503 (fail-closed).
INTERNAL_API_KEYShared key for /internal/* (X-Internal-Key). Unset = /internal/* refuses all calls (fail-closed).
ADMIN_EMAILSComma-separated lowercase emails allowed at /admin/*.
MEMBERSHIP_CAPMembers-only cap. Default 100.
DATASET_DOWNLOAD_DAILY_LIMITGrants per email/principal per rolling 24h. Default 500.
RUNNER_TOKENShared bearer for the cook-runner (GPU rig) API.
RIG_USD_PER_HOURAmortized $/hr shown on receipts. Default 0.80.
VariableNotes
DEFENDABLE_ROUTER_ENVDefault local.
DEFENDABLE_ROUTER_DATABASE_URLSQLite. Default sqlite:///./data/defendable_router.db.
DEFENDABLE_ROUTER_RECEIPTS_DIRLocal JSONL receipt directory. Default ./data/receipts.

🐝 Operator-grade · books and records · to the shed.