Maverick Docs
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.

VariableTypeDescription
SUPABASE_URLstr
SUPABASE_KEYstrAnon key
SUPABASE_SERVICE_ROLE_KEYstr
XPRESSDOCS_USERNAMEstr
XPRESSDOCS_PASSWORDstr

Optional Variables

VariableTypeDefaultDescription
API_HOSTstr"0.0.0.0"
API_PORTint8000
API_RELOADboolTrue
API_V1_PREFIXstr"/api/v1"
SUPABASE_JWT_SECRETOptional[str]NoneJWT secret for token verification
CRM_RICOCHET_GREGG_BLANCHARD_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_NICK_SAKHA_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_DAVIS_AGENCY_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_CURTIS_OSTLER_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_GAUDIO_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_SYMONS_AGENCY_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_NARANJO_AGENCY_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_CHRIS_GLOVER_AGENCY_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_JUSTIN_GABBARD_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_ANGELA_SMITH_API_TOKEN`SecretStrNone`None
CRM_RICOCHET_PAUL_J_DELLA_INC_API_TOKEN`SecretStrNone`None
CARRIER_SCRUB_SUPPRESSION_GATE_TOKEN`SecretStrNone`None
REDIS_BROKER_URLstr"redis://localhost:6379/0"
REDIS_BACKEND_URLstr"redis://localhost:6379/0"
DEBOUNCE_API_KEYOptional[str]None
DEBOUNCE_RATE_LIMITint10Requests per minute (adjust based on your plan)
DEBOUNCE_BULK_UPLOAD_URLstr"https://bulk.debounce.io/v1/upload/"
DEBOUNCE_BULK_STATUS_URLstr"https://bulk.debounce.io/v1/status/"
DEBOUNCE_BULK_THRESHOLDint50Switch to bulk API when batch > this size
DEBOUNCE_BULK_MAX_BATCH_SIZEint200000Max emails per upload
DEBOUNCE_BULK_POLL_INTERVALint10Seconds between status checks
DEBOUNCE_BULK_TIMEOUTint216006 hours max wait for large batches
USE_BULK_VERIFICATIONboolTrueEnable bulk verification for large batches
OMNIVERIFIER_API_KEYOptional[str]None
OMNIVERIFIER_API_URLstr"https://api.omniverifier.com/v1/validate"
REACHER_URLOptional[str]Nonehttp://<kvm8-ip>:8080
REACHER_HEADER_SECRETOptional[str]None
MAILTESTER_API_KEYOptional[str]None
MAILTESTER_API_URLstr"https://happy.mailtester.ninja/ninja"
MAILTESTER_RATE_PER_SECfloat5.0
MAILTESTER_MAX_WORKERSint8
VERIFIER_PROVIDERstr"debounce"
VERIFIER_HYBRID_DEBOUNCE_DOMAINSstr"yahoo.com,aol.com,bellsouth.net,sbcglobal.net,att.net,ymail.com,rocketmail.com"
VERIFIER_AB_PERCENTint100
VERIFIER_DRY_RUNboolFalse
EMAIL_BISON_API_URLstr"https://send.maverickmarketingllc.com/api"
EMAIL_BISON_API_KEYOptional[str]None
EMAIL_BISON_WORKSPACE_IDOptional[str]NoneDefault workspace ID
EMAIL_BISON_API_URL_MAVERICK_2Optional[str]None
EMAIL_BISON_API_KEY_MAVERICK_2Optional[str]None
BISON_INSTANCE_LABELSstr"Maverick,Maverick 2"known labels, comma-separated
BISON_DEFAULT_INSTANCEstr"Maverick"what a NULL registry label means
BISON_NEW_WORKSPACE_DEFAULT_INSTANCEstr"Maverick 2"pre-selected at onboarding
BISON_HOURLY_BUDGET_PER_INSTANCEint20000
ACCOUNT_WAVE_DRIFT_TOLERANCE_PCTfloat1.0
ACCOUNT_WAVE_DRIFT_TOLERANCE_ABSint25
ACCOUNT_WAVE_DRIFT_REL_TOLERANCEfloat0.2
SUMMARY_PRESENCE_READ_MODELboolFalse
ACCOUNT_WAVE_MISSING_ALERT_HOURSint92 waves + slack
SCRUB_SMTP_HOSTOptional[str]None
SCRUB_SMTP_PORTint587
SCRUB_SMTP_USEROptional[str]None
SCRUB_SMTP_PASSWORDOptional[str]None
SCRUB_EMAIL_FROMOptional[str]Nonee.g. "Maverick Marketing <ops@maverickmarketingllc.com>"
SLACK_BOT_TOKENOptional[str]None
SLACK_WEBHOOK_URLOptional[str]None
SLACK_SIGNING_SECRETOptional[str]None
SLACK_TEAM_IDOptional[str]None
SLACK_WORKSPACE_DOMAINOptional[str]None
SLACK_TASKS_BOT_TOKENOptional[str]None
SLACK_TASKS_SIGNING_SECRETOptional[str]None
SLACK_OPERATING_INTAKE_USER_TOKENOptional[str]None
SLACK_OPERATING_INTAKE_BOT_USER_IDOptional[str]None
SLACK_OPERATING_INTAKE_AUTO_ENABLEboolFalse
SLACK_OPERATING_INTAKE_BRAIN_WRITEBACK_ENABLEDboolFalse
SLACK_OPERATING_INTAKE_BRAIN_VAULT_PATHstr"/Users/tommychavez/MaverickBrain"
OPERATING_QUEUE_MAINTENANCE_ENABLEDboolFalseI8: gates weekly queue-maintenance + auto-promotion beat tasks
INFRA_SLACK_WEBHOOK_URLOptional[str]NoneInfrastructure ops channel (falls back to SLACK_WEBHOOK_URL)
OPS_ALERT_DM_USER_IDOptional[str]"U097J97AVU7"
OPS_ALERT_BOT_TOKENOptional[str]None
OPS_ALERTS_ENABLEDboolTrue
OPS_ALERTS_ESCALATION_ENABLEDboolFalse
OPS_ALERTS_ESCALATE_MINUTESint10
OPS_ALERTS_DEDUPE_WINDOW_MINUTESint60
OPS_ALERTS_DASHBOARD_URLstr"https://dashboard.maverick-ins.com"
WEBHOOK_SWEEP_ENFORCEboolFalse
INFRA_ALERT_SLACK_CHANNEL_IDOptional[str]None#infastructure-management channel id — CSV file upload target (scrub_slack)
BILLING_SLACK_WEBHOOK_URLOptional[str]NoneCheap Inboxes billing audit alerts (#billing)
LEAD_DROUGHT_SLACK_WEBHOOK_URLOptional[str]NoneDaily lead-drought digest (currently #performance)
AUDIT_SLACK_WEBHOOK_URLOptional[str]None
HOF_TONE_CONFIDENCE_MINint95
HOF_JUDGE_ENABLEDboolTrue
HOF_JUDGE_SCORE_MINint80
BILLING_GMAIL_OAUTH_TOKEN_JSONOptional[str]NoneJSON refresh-token blob from billing_oauth_setup.py
BILLING_RECEIPT_ALERTS_ENABLEDboolFalse
BILLING_RECEIPT_ALERT_MAILBOXstr"thomaschavez@maverickmarketingllc.com"
BILLING_RECEIPT_ALERTS_START_ATOptional[str]Nonefirst-run cutoff; ISO UTC timestamp
BILLING_MASTER_SHEET_IDstr"1DwPo6Jcvnv96p_8rV5CykRpg7w_4g50ZWrqxR5w57Co"
BILLING_MASTER_SHEET_RANGEstr"A1:N1000"
OPS_INTAKE_IMPORT_TOKENOptional[str]None
OPS_INTAKE_CLASSIFY_MODELstr"google/gemini-3-flash-preview"
OPS_INTAKE_LLM_FALLBACK_MODELSOptional[str]None
OPS_INTAKE_EMAIL_POLL_MINUTESint5
OPS_INTAKE_DRIVE_POLL_MINUTESint10
OPS_INTAKE_DEFAULT_RETENTION_DAYSint90
OPS_INTAKE_GOOGLE_WORKSPACE_DOMAINOptional[str]None
OPS_INTAKE_GOOGLE_ADMIN_SUBJECTOptional[str]None
OPS_INTAKE_GOOGLE_SERVICE_ACCOUNT_JSONOptional[str]None
OPS_INTAKE_GOOGLE_SERVICE_ACCOUNT_SECRET_REFOptional[str]None
OPS_INTAKE_GMAIL_DEFAULT_QUERYstr"-in:spam -in:trash"
OPS_INTAKE_FIREFLIES_API_KEYOptional[str]None
SECRET_KEYstr""Must be set from environment, no default
ALGORITHMstr"HS256"
ACCESS_TOKEN_EXPIRE_MINUTESint30
ENVIRONMENTstr"development"
ALLOWED_ORIGINSstr"http://localhost:3000,http://localhost:3001"
WEBHOOK_SECRETstr""Secret for webhook signature validation
WEBHOOK_URL_TOKENstr""
WEBHOOK_REQUIRE_URL_TOKENboolFalse
CSV_FIELD_SIZE_LIMIT_BYTESint"1024 * 1024"1MB per field
SENTRY_DSNOptional[str]None
VERSIONstr"1.0.0"
MASTER_CONTACTS_API_URLOptional[str]None
MASTER_CONTACTS_API_KEYOptional[str]None
MASTER_CONTACTS_ENABLEDboolFalseSet to True when master contacts service is ready
DATAMOON_CHANNEL_ENABLEDboolTrue
BOUNCE_WAVE_WINDOW_MINUTESint180
BOUNCE_WAVE_MIN_MAILBOXESint5
BOUNCE_WAVE_MIN_DOMAIN_RATIOfloat0.5
BOUNCE_WAVE_ACUTE_MIN_RATIOfloat0.2
BOUNCE_WAVE_PERSISTENT_DAYSint7
BOUNCE_WAVE_PERSISTENT_MIN_BLOCKSint10
BOUNCE_WAVE_PERSISTENT_MIN_RATIOfloat0.2
BOUNCE_WAVE_PERSISTENT_MIN_MAILBOXESint20
BOUNCE_WAVE_PERSISTENT_MIN_FLOORint5
BOUNCE_WAVE_ALERT_MENTIONstr"U097J97AVU7,U06R32KSG14,U0BR9J72K0S"
BOUNCE_WAVE_PERSISTENT_HARD_BLOCKSint20
BOUNCE_WAVE_MAX_WORKSPACE_SHAREfloat0.4
BOUNCE_WAVE_ALLOW_EMPTYING_CAMPAIGNboolTrue
BOUNCE_WAVE_DAILY_RATE_MINfloat0.1lowered from 0.15 (Hussain 2026-10-05)
BOUNCE_WAVE_DAILY_RATE_MIN_SENTint50
BOUNCE_WAVE_DAILY_RATE_REPEAT_MINfloat0.1
BOUNCE_WAVE_DAILY_RATE_DAYSint3
BOUNCE_WAVE_DETACH_WHOLE_DOMAINboolTrue
BOUNCE_WAVE_MAILBOX_LEGboolTrue
BOUNCE_WAVE_FLAGGED_LEGboolFalse10-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_MINfloat0.07
BOUNCE_WAVE_WORKSPACE_MIN_SENTint50
BOUNCE_WAVE_MAILBOX_MIN_BOUNCESint1
BOUNCE_SIGNAL_MODEstr"alert"
BOUNCE_SIGNAL_BASELINE_DAYSint7
BOUNCE_SIGNAL_RATE_DAYSint14
BOUNCE_SIGNAL_SURGE_MULTIPLIERfloat4.0
BOUNCE_SIGNAL_SURGE_MIN_QUARTERint10
BOUNCE_SIGNAL_SURGE_MIN_HOURint25
BOUNCE_SIGNAL_SURGE_MIN_MAILBOXESint3
BOUNCE_SIGNAL_CRITICAL_QUARTERint50
BOUNCE_SIGNAL_CRITICAL_HOURint100
BOUNCE_SIGNAL_QUOTA_MIN_HOURint20
BOUNCE_SIGNAL_QUOTA_CRITICAL_HOURint50
BOUNCE_SIGNAL_DAILY_MIN_SENTint200
BOUNCE_SIGNAL_DAILY_MIN_BOUNCEDint20
BOUNCE_SIGNAL_DAILY_MIN_RATEfloat5.0
BOUNCE_SIGNAL_DAILY_MULTIPLIERfloat2.5
BOUNCE_SIGNAL_DAILY_CRITICAL_RATEfloat20.0
BOUNCE_SIGNAL_DAILY_DEFAULT_MEDIANfloat0.5
BOUNCE_SIGNAL_DOMAIN_MIN_HOURint15
BOUNCE_SIGNAL_DOMAIN_MIN_MAILBOXESint5
BOUNCE_SIGNAL_CAMPAIGN_MIN_BOUNCEDint15
BOUNCE_SIGNAL_CAMPAIGN_MIN_SENTint100
BOUNCE_SIGNAL_CAMPAIGN_DAILY_MIN_BOUNCEDint10
BOUNCE_SIGNAL_CAMPAIGN_HOUR_MINint15
BOUNCE_SIGNAL_CAMPAIGN_HOUR_MAILBOXESint5
BOUNCE_SIGNAL_CAMPAIGN_CRITICAL_HOURint50
BOUNCE_SIGNAL_RELATIVE_MULTIPLIERfloat10.0
BOUNCE_SIGNAL_RELATIVE_MIN_RATEfloat2.0
BOUNCE_SIGNAL_PAUSE_RATEfloat7.0
BOUNCE_SIGNAL_BLOCKS_MIN_EVENTSint5
BOUNCE_SIGNAL_BLOCKS_MIN_MAILBOXESint3
BOUNCE_SIGNAL_BLOCKS_CRITICAL_EVENTSint20
BOUNCE_SIGNAL_BLOCKS_CRITICAL_MAILBOXESint10
BOUNCE_SIGNAL_DOMAIN_DAILY_MIN_BOUNCEDint10
BOUNCE_SIGNAL_COOLDOWN_MINUTESint120
BOUNCE_SIGNAL_CRITICAL_MENTIONSstr"U06R32KSG14,U097J97AVU7,U09TVN8HJ4T,U0BR9J72K0S,U0ASBC6S5JM"
RECONNECT_EXECUTE_ENABLEDboolFalse
RECONNECT_CANARY_WORKSPACESstr""
RECONNECT_HOURLY_BUDGETint200
RECONNECT_BISON_USERstr""
RECONNECT_BISON_PASSWORDstr""
MAILIN_CREDSTORE_PATHstr"/app/secrets/mailin-credstore"
CHEAPINBOXES_CREDSTORE_PATHstr"/app/secrets/cheapinboxes-credstore"
MS365_CREDSTORE_PATHstr"/app/secrets/ms365-credstore"
MS365_PANEL_DEFAULT_PASSWORDstr""
MAILBOX_UPLOAD_ENABLEDboolFalse
BISON_INSTANCE_ROW_CAPint0
KPI_SHADOW_COMPAREboolTrue
KPI_DERIVED_WINDOWSboolFalse
BISON_MAX_INFLIGHT_PER_PROCESSint8
DOMAIN_STATS_ENABLEDboolFalse
DOMAIN_STATS_WORKSPACESstr""
REGISTRAR_ROSTER_ENABLEDboolFalse
DOMAIN_LIFECYCLE_ALERTS_ENABLEDboolFalseExpiry + coverage alerts to the configured infrastructure channel
REGISTRAR_CSV_INBOX_ROOTstr"/opt/maverick/registrar_inbox"
DOMAIN_STATS_MAX_INFLIGHTint2
DOMAIN_STATS_CALL_SLEEP_SECONDSfloat0.5
DOMAIN_STATS_CHUNK_SIZEint100
DOMAIN_STATS_MAX_WORKSPACES_INFLIGHTint3
DOMAIN_STATS_DISPATCH_STAGGER_SECONDSint30
DOMAIN_STATS_WEEKLY_RESTATE_ENABLEDboolFalse
PUSHGATEWAY_GROUP_TTL_HOURSint72

Environment Files

FilePurposeIn Git?
backend/.envLocal developmentNo
backend/.env.productionProduction (server-local)No
backend/.env.smokeSmoke stack docker-compose.smoke.yml (machine-local)No
frontend/apps/dashboard/.env.localLocal frontendNo
frontend/apps/dashboard/.env.productionProduction frontendNo

On this page