Technical Reference
Environment Variables
Every environment variable with types, defaults, and descriptions
5 required | 205 optional
Required Variables
The application will fail to start without these.
| Variable | Type | Description |
|---|---|---|
SUPABASE_URL | str | |
SUPABASE_KEY | str | Anon key |
SUPABASE_SERVICE_ROLE_KEY | str | |
XPRESSDOCS_USERNAME | str | |
XPRESSDOCS_PASSWORD | str |
Optional Variables
| Variable | Type | Default | Description |
|---|---|---|---|
API_HOST | str | "0.0.0.0" | |
API_PORT | int | 8000 | |
API_RELOAD | bool | True | |
API_V1_PREFIX | str | "/api/v1" | |
SUPABASE_JWT_SECRET | Optional[str] | None | JWT secret for token verification |
CRM_RICOCHET_GREGG_BLANCHARD_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_NICK_SAKHA_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_DAVIS_AGENCY_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_CURTIS_OSTLER_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_GAUDIO_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_SYMONS_AGENCY_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_NARANJO_AGENCY_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_CHRIS_GLOVER_AGENCY_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_JUSTIN_GABBARD_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_ANGELA_SMITH_API_TOKEN | `SecretStr | None` | None |
CRM_RICOCHET_PAUL_J_DELLA_INC_API_TOKEN | `SecretStr | None` | None |
CARRIER_SCRUB_SUPPRESSION_GATE_TOKEN | `SecretStr | None` | None |
REDIS_BROKER_URL | str | "redis://localhost:6379/0" | |
REDIS_BACKEND_URL | str | "redis://localhost:6379/0" | |
DEBOUNCE_API_KEY | Optional[str] | None | |
DEBOUNCE_RATE_LIMIT | int | 10 | Requests per minute (adjust based on your plan) |
DEBOUNCE_BULK_UPLOAD_URL | str | "https://bulk.debounce.io/v1/upload/" | |
DEBOUNCE_BULK_STATUS_URL | str | "https://bulk.debounce.io/v1/status/" | |
DEBOUNCE_BULK_THRESHOLD | int | 50 | Switch to bulk API when batch > this size |
DEBOUNCE_BULK_MAX_BATCH_SIZE | int | 200000 | Max emails per upload |
DEBOUNCE_BULK_POLL_INTERVAL | int | 10 | Seconds between status checks |
DEBOUNCE_BULK_TIMEOUT | int | 21600 | 6 hours max wait for large batches |
USE_BULK_VERIFICATION | bool | True | Enable bulk verification for large batches |
OMNIVERIFIER_API_KEY | Optional[str] | None | |
OMNIVERIFIER_API_URL | str | "https://api.omniverifier.com/v1/validate" | |
REACHER_URL | Optional[str] | None | http://<kvm8-ip>:8080 |
REACHER_HEADER_SECRET | Optional[str] | None | |
MAILTESTER_API_KEY | Optional[str] | None | |
MAILTESTER_API_URL | str | "https://happy.mailtester.ninja/ninja" | |
MAILTESTER_RATE_PER_SEC | float | 5.0 | |
MAILTESTER_MAX_WORKERS | int | 8 | |
VERIFIER_PROVIDER | str | "debounce" | |
VERIFIER_HYBRID_DEBOUNCE_DOMAINS | str | "yahoo.com,aol.com,bellsouth.net,sbcglobal.net,att.net,ymail.com,rocketmail.com" | |
VERIFIER_AB_PERCENT | int | 100 | |
VERIFIER_DRY_RUN | bool | False | |
EMAIL_BISON_API_URL | str | "https://send.maverickmarketingllc.com/api" | |
EMAIL_BISON_API_KEY | Optional[str] | None | |
EMAIL_BISON_WORKSPACE_ID | Optional[str] | None | Default workspace ID |
EMAIL_BISON_API_URL_MAVERICK_2 | Optional[str] | None | |
EMAIL_BISON_API_KEY_MAVERICK_2 | Optional[str] | None | |
BISON_INSTANCE_LABELS | str | "Maverick,Maverick 2" | known labels, comma-separated |
BISON_DEFAULT_INSTANCE | str | "Maverick" | what a NULL registry label means |
BISON_NEW_WORKSPACE_DEFAULT_INSTANCE | str | "Maverick 2" | pre-selected at onboarding |
BISON_HOURLY_BUDGET_PER_INSTANCE | int | 20000 | |
ACCOUNT_WAVE_DRIFT_TOLERANCE_PCT | float | 1.0 | |
ACCOUNT_WAVE_DRIFT_TOLERANCE_ABS | int | 25 | |
ACCOUNT_WAVE_DRIFT_REL_TOLERANCE | float | 0.2 | |
SUMMARY_PRESENCE_READ_MODEL | bool | False | |
ACCOUNT_WAVE_MISSING_ALERT_HOURS | int | 9 | 2 waves + slack |
SCRUB_SMTP_HOST | Optional[str] | None | |
SCRUB_SMTP_PORT | int | 587 | |
SCRUB_SMTP_USER | Optional[str] | None | |
SCRUB_SMTP_PASSWORD | Optional[str] | None | |
SCRUB_EMAIL_FROM | Optional[str] | None | e.g. "Maverick Marketing <ops@maverickmarketingllc.com>" |
SLACK_BOT_TOKEN | Optional[str] | None | |
SLACK_WEBHOOK_URL | Optional[str] | None | |
SLACK_SIGNING_SECRET | Optional[str] | None | |
SLACK_TEAM_ID | Optional[str] | None | |
SLACK_WORKSPACE_DOMAIN | Optional[str] | None | |
SLACK_TASKS_BOT_TOKEN | Optional[str] | None | |
SLACK_TASKS_SIGNING_SECRET | Optional[str] | None | |
SLACK_OPERATING_INTAKE_USER_TOKEN | Optional[str] | None | |
SLACK_OPERATING_INTAKE_BOT_USER_ID | Optional[str] | None | |
SLACK_OPERATING_INTAKE_AUTO_ENABLE | bool | False | |
SLACK_OPERATING_INTAKE_BRAIN_WRITEBACK_ENABLED | bool | False | |
SLACK_OPERATING_INTAKE_BRAIN_VAULT_PATH | str | "/Users/tommychavez/MaverickBrain" | |
OPERATING_QUEUE_MAINTENANCE_ENABLED | bool | False | I8: gates weekly queue-maintenance + auto-promotion beat tasks |
INFRA_SLACK_WEBHOOK_URL | Optional[str] | None | Infrastructure ops channel (falls back to SLACK_WEBHOOK_URL) |
OPS_ALERT_DM_USER_ID | Optional[str] | "U097J97AVU7" | |
OPS_ALERT_BOT_TOKEN | Optional[str] | None | |
OPS_ALERTS_ENABLED | bool | True | |
OPS_ALERTS_ESCALATION_ENABLED | bool | False | |
OPS_ALERTS_ESCALATE_MINUTES | int | 10 | |
OPS_ALERTS_DEDUPE_WINDOW_MINUTES | int | 60 | |
OPS_ALERTS_DASHBOARD_URL | str | "https://dashboard.maverick-ins.com" | |
WEBHOOK_SWEEP_ENFORCE | bool | False | |
INFRA_ALERT_SLACK_CHANNEL_ID | Optional[str] | None | #infastructure-management channel id — CSV file upload target (scrub_slack) |
BILLING_SLACK_WEBHOOK_URL | Optional[str] | None | Cheap Inboxes billing audit alerts (#billing) |
LEAD_DROUGHT_SLACK_WEBHOOK_URL | Optional[str] | None | Daily lead-drought digest (currently #performance) |
AUDIT_SLACK_WEBHOOK_URL | Optional[str] | None | |
HOF_TONE_CONFIDENCE_MIN | int | 95 | |
HOF_JUDGE_ENABLED | bool | True | |
HOF_JUDGE_SCORE_MIN | int | 80 | |
BILLING_GMAIL_OAUTH_TOKEN_JSON | Optional[str] | None | JSON refresh-token blob from billing_oauth_setup.py |
BILLING_RECEIPT_ALERTS_ENABLED | bool | False | |
BILLING_RECEIPT_ALERT_MAILBOX | str | "thomaschavez@maverickmarketingllc.com" | |
BILLING_RECEIPT_ALERTS_START_AT | Optional[str] | None | first-run cutoff; ISO UTC timestamp |
BILLING_MASTER_SHEET_ID | str | "1DwPo6Jcvnv96p_8rV5CykRpg7w_4g50ZWrqxR5w57Co" | |
BILLING_MASTER_SHEET_RANGE | str | "A1:N1000" | |
OPS_INTAKE_IMPORT_TOKEN | Optional[str] | None | |
OPS_INTAKE_CLASSIFY_MODEL | str | "google/gemini-3-flash-preview" | |
OPS_INTAKE_LLM_FALLBACK_MODELS | Optional[str] | None | |
OPS_INTAKE_EMAIL_POLL_MINUTES | int | 5 | |
OPS_INTAKE_DRIVE_POLL_MINUTES | int | 10 | |
OPS_INTAKE_DEFAULT_RETENTION_DAYS | int | 90 | |
OPS_INTAKE_GOOGLE_WORKSPACE_DOMAIN | Optional[str] | None | |
OPS_INTAKE_GOOGLE_ADMIN_SUBJECT | Optional[str] | None | |
OPS_INTAKE_GOOGLE_SERVICE_ACCOUNT_JSON | Optional[str] | None | |
OPS_INTAKE_GOOGLE_SERVICE_ACCOUNT_SECRET_REF | Optional[str] | None | |
OPS_INTAKE_GMAIL_DEFAULT_QUERY | str | "-in:spam -in:trash" | |
OPS_INTAKE_FIREFLIES_API_KEY | Optional[str] | None | |
SECRET_KEY | str | "" | Must be set from environment, no default |
ALGORITHM | str | "HS256" | |
ACCESS_TOKEN_EXPIRE_MINUTES | int | 30 | |
ENVIRONMENT | str | "development" | |
ALLOWED_ORIGINS | str | "http://localhost:3000,http://localhost:3001" | |
WEBHOOK_SECRET | str | "" | Secret for webhook signature validation |
WEBHOOK_URL_TOKEN | str | "" | |
WEBHOOK_REQUIRE_URL_TOKEN | bool | False | |
CSV_FIELD_SIZE_LIMIT_BYTES | int | "1024 * 1024" | 1MB per field |
SENTRY_DSN | Optional[str] | None | |
VERSION | str | "1.0.0" | |
MASTER_CONTACTS_API_URL | Optional[str] | None | |
MASTER_CONTACTS_API_KEY | Optional[str] | None | |
MASTER_CONTACTS_ENABLED | bool | False | Set to True when master contacts service is ready |
DATAMOON_CHANNEL_ENABLED | bool | True | |
BOUNCE_WAVE_WINDOW_MINUTES | int | 180 | |
BOUNCE_WAVE_MIN_MAILBOXES | int | 5 | |
BOUNCE_WAVE_MIN_DOMAIN_RATIO | float | 0.5 | |
BOUNCE_WAVE_ACUTE_MIN_RATIO | float | 0.2 | |
BOUNCE_WAVE_PERSISTENT_DAYS | int | 7 | |
BOUNCE_WAVE_PERSISTENT_MIN_BLOCKS | int | 10 | |
BOUNCE_WAVE_PERSISTENT_MIN_RATIO | float | 0.2 | |
BOUNCE_WAVE_PERSISTENT_MIN_MAILBOXES | int | 20 | |
BOUNCE_WAVE_PERSISTENT_MIN_FLOOR | int | 5 | |
BOUNCE_WAVE_ALERT_MENTION | str | "U097J97AVU7,U06R32KSG14,U0BR9J72K0S" | |
BOUNCE_WAVE_PERSISTENT_HARD_BLOCKS | int | 20 | |
BOUNCE_WAVE_MAX_WORKSPACE_SHARE | float | 0.4 | |
BOUNCE_WAVE_ALLOW_EMPTYING_CAMPAIGN | bool | True | |
BOUNCE_WAVE_DAILY_RATE_MIN | float | 0.1 | lowered from 0.15 (Hussain 2026-10-05) |
BOUNCE_WAVE_DAILY_RATE_MIN_SENT | int | 50 | |
BOUNCE_WAVE_DAILY_RATE_REPEAT_MIN | float | 0.1 | |
BOUNCE_WAVE_DAILY_RATE_DAYS | int | 3 | |
BOUNCE_WAVE_DETACH_WHOLE_DOMAIN | bool | True | |
BOUNCE_WAVE_MAILBOX_LEG | bool | True | |
BOUNCE_WAVE_FLAGGED_LEG | bool | False | 10-05 afternoon: a channel post is a watch, not a park (Weatherman); the operator rule operator.bounce_wave holds the live value |
BOUNCE_WAVE_WORKSPACE_RATE_MIN | float | 0.07 | |
BOUNCE_WAVE_WORKSPACE_MIN_SENT | int | 50 | |
BOUNCE_WAVE_MAILBOX_MIN_BOUNCES | int | 1 | |
BOUNCE_SIGNAL_MODE | str | "alert" | |
BOUNCE_SIGNAL_BASELINE_DAYS | int | 7 | |
BOUNCE_SIGNAL_RATE_DAYS | int | 14 | |
BOUNCE_SIGNAL_SURGE_MULTIPLIER | float | 4.0 | |
BOUNCE_SIGNAL_SURGE_MIN_QUARTER | int | 10 | |
BOUNCE_SIGNAL_SURGE_MIN_HOUR | int | 25 | |
BOUNCE_SIGNAL_SURGE_MIN_MAILBOXES | int | 3 | |
BOUNCE_SIGNAL_CRITICAL_QUARTER | int | 50 | |
BOUNCE_SIGNAL_CRITICAL_HOUR | int | 100 | |
BOUNCE_SIGNAL_QUOTA_MIN_HOUR | int | 20 | |
BOUNCE_SIGNAL_QUOTA_CRITICAL_HOUR | int | 50 | |
BOUNCE_SIGNAL_DAILY_MIN_SENT | int | 200 | |
BOUNCE_SIGNAL_DAILY_MIN_BOUNCED | int | 20 | |
BOUNCE_SIGNAL_DAILY_MIN_RATE | float | 5.0 | |
BOUNCE_SIGNAL_DAILY_MULTIPLIER | float | 2.5 | |
BOUNCE_SIGNAL_DAILY_CRITICAL_RATE | float | 20.0 | |
BOUNCE_SIGNAL_DAILY_DEFAULT_MEDIAN | float | 0.5 | |
BOUNCE_SIGNAL_DOMAIN_MIN_HOUR | int | 15 | |
BOUNCE_SIGNAL_DOMAIN_MIN_MAILBOXES | int | 5 | |
BOUNCE_SIGNAL_CAMPAIGN_MIN_BOUNCED | int | 15 | |
BOUNCE_SIGNAL_CAMPAIGN_MIN_SENT | int | 100 | |
BOUNCE_SIGNAL_CAMPAIGN_DAILY_MIN_BOUNCED | int | 10 | |
BOUNCE_SIGNAL_CAMPAIGN_HOUR_MIN | int | 15 | |
BOUNCE_SIGNAL_CAMPAIGN_HOUR_MAILBOXES | int | 5 | |
BOUNCE_SIGNAL_CAMPAIGN_CRITICAL_HOUR | int | 50 | |
BOUNCE_SIGNAL_RELATIVE_MULTIPLIER | float | 10.0 | |
BOUNCE_SIGNAL_RELATIVE_MIN_RATE | float | 2.0 | |
BOUNCE_SIGNAL_PAUSE_RATE | float | 7.0 | |
BOUNCE_SIGNAL_BLOCKS_MIN_EVENTS | int | 5 | |
BOUNCE_SIGNAL_BLOCKS_MIN_MAILBOXES | int | 3 | |
BOUNCE_SIGNAL_BLOCKS_CRITICAL_EVENTS | int | 20 | |
BOUNCE_SIGNAL_BLOCKS_CRITICAL_MAILBOXES | int | 10 | |
BOUNCE_SIGNAL_DOMAIN_DAILY_MIN_BOUNCED | int | 10 | |
BOUNCE_SIGNAL_COOLDOWN_MINUTES | int | 120 | |
BOUNCE_SIGNAL_CRITICAL_MENTIONS | str | "U06R32KSG14,U097J97AVU7,U09TVN8HJ4T,U0BR9J72K0S,U0ASBC6S5JM" | |
RECONNECT_EXECUTE_ENABLED | bool | False | |
RECONNECT_CANARY_WORKSPACES | str | "" | |
RECONNECT_HOURLY_BUDGET | int | 200 | |
RECONNECT_BISON_USER | str | "" | |
RECONNECT_BISON_PASSWORD | str | "" | |
MAILIN_CREDSTORE_PATH | str | "/app/secrets/mailin-credstore" | |
CHEAPINBOXES_CREDSTORE_PATH | str | "/app/secrets/cheapinboxes-credstore" | |
MS365_CREDSTORE_PATH | str | "/app/secrets/ms365-credstore" | |
MS365_PANEL_DEFAULT_PASSWORD | str | "" | |
MAILBOX_UPLOAD_ENABLED | bool | False | |
BISON_INSTANCE_ROW_CAP | int | 0 | |
KPI_SHADOW_COMPARE | bool | True | |
KPI_DERIVED_WINDOWS | bool | False | |
BISON_MAX_INFLIGHT_PER_PROCESS | int | 8 | |
DOMAIN_STATS_ENABLED | bool | False | |
DOMAIN_STATS_WORKSPACES | str | "" | |
REGISTRAR_ROSTER_ENABLED | bool | False | |
DOMAIN_LIFECYCLE_ALERTS_ENABLED | bool | False | Expiry + coverage alerts to the configured infrastructure channel |
REGISTRAR_CSV_INBOX_ROOT | str | "/opt/maverick/registrar_inbox" | |
DOMAIN_STATS_MAX_INFLIGHT | int | 2 | |
DOMAIN_STATS_CALL_SLEEP_SECONDS | float | 0.5 | |
DOMAIN_STATS_CHUNK_SIZE | int | 100 | |
DOMAIN_STATS_MAX_WORKSPACES_INFLIGHT | int | 3 | |
DOMAIN_STATS_DISPATCH_STAGGER_SECONDS | int | 30 | |
DOMAIN_STATS_WEEKLY_RESTATE_ENABLED | bool | False | |
PUSHGATEWAY_GROUP_TTL_HOURS | int | 72 |
Environment Files
| File | Purpose | In Git? |
|---|---|---|
backend/.env | Local development | No |
backend/.env.production | Production (server-local) | No |
backend/.env.smoke | Smoke stack docker-compose.smoke.yml (machine-local) | No |
frontend/apps/dashboard/.env.local | Local frontend | No |
frontend/apps/dashboard/.env.production | Production frontend | No |