Skip to main content

Environment Variables

Supabase Edge

NameRequiredNotes
SUPABASE_URLyesProject URL
SUPABASE_SERVICE_ROLE_KEYyesServer-side DB access
SUPABASE_ANON_KEYyesPublic API key
ANTHROPIC_API_KEYyes for extraction/OCRUsed by fathom-sync, interview synthesis, and Drive OCR
FATHOM_API_KEYyes for FathomREST API
FATHOM_WEBHOOK_SECRETyes for webhookSet in Supabase
FATHOM_WEBHOOK_ORG_SLUGoptionalRequired if multiple orgs exist
SABLE_ORG_SLUGoptionalFallback org slug
ASANA_API_KEYyes for AsanaREST API
ASANA_ACT_WRITES_ENABLEDno by defaultSet true only to arm writes
TOGGL_API_KEYyes for TogglTrack and Reports API
GDRIVE_SA_JSON / GOOGLE_DRIVE_JSONyes for Drive/Calendar/GmailGoogle service account JSON
GOOGLE_CALENDAR_SUBJECToptionalWorkspace subject to impersonate for Calendar domain-wide delegation
GOOGLE_GMAIL_SUBJECTyes for GmailExplicit mailbox impersonated with gmail.readonly domain-wide delegation
GMAIL_INTERNAL_DOMAINoptionalDirection classification
GMAIL_SYNC_QUERYyes for GmailApproved narrow, bounded mailbox search; sync fails closed when unset
CALENDAR_ACT_WRITES_ENABLEDno by defaultSet true only to arm approved Calendar writes
HUBSPOT_SERVICE_KEYyes for HubSpotHubSpot connector
VOYAGE_API_KEYyes for knowledge indexing/searchVoyage voyage-4 embeddings and rerank-2.5
SPINE_MCP_TOKENyesInteractive-agent bearer: reads and approval proposals, never board delivery
SPINE_MCP_STAGE_TOKENyesIndependent read-only report/staging bearer
SPINE_MCP_LEARNING_TOKENyesIndependent reads + prompt_update proposal bearer
SPINE_MCP_ORCHESTRATOR_TOKENyesIndependent Trigger-only persistence/delivery bearer
SPINE_ORG_IDmulti-org onlyExplicit organization UUID for service-role MCP calls
REPORT_REQUIRED_CONNECTORSoptionalTrigger refresh + Spine readiness set; values must match. Defaults to Fathom, Granola, Asana, Email, Drive, Calendar, Toggl
REPORT_READINESS_GRACE_SECONDSoptionalCoverage grace; default 900, maximum 3600

Trigger.dev Reports

NameRequiredNotes
SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEYyesEdge invocation and trusted run state
CRON_SECRETyesFixed scheduled-action authentication
SPINE_MCP_ORCHESTRATOR_TOKENyesGoverned readiness, draft, and delivery calls
SABLE_REPORT_DELIVERY_MODEyesMust be exactly shadow or live; unset fails closed
SABLE_ORG_SLUGmulti-org onlyExplicit organization selection
ASANA_WORKSPACE_GIDyesExplicit scheduled-refresh workspace; no first-workspace fallback

Vercel Web

NameRequiredNotes
SABLE_MODEyes for client instancesSet production to disable demo fallbacks
PUBLIC_APP_ORIGINyes for client instancesCanonical app URL used by operators and smoke tests
SUPABASE_URLyes for live modeAPI routes
SUPABASE_SERVICE_ROLE_KEYyes for live modeAPI routes
SUPABASE_ANON_KEYyes for Edge executionAlso may use NEXT_PUBLIC_SUPABASE_ANON_KEY
NEXT_PUBLIC_SUPABASE_URLyes for client instancesReturned by /api/config; no hardcoded project refs
NEXT_PUBLIC_SUPABASE_ANON_KEYyes for client instancesReturned by /api/config; public anon key only
ANTHROPIC_API_KEYyes for chat/OCRMessages API for /api/chat and upload OCR fallback
APP_TOKENlegacy demoToken gate for non-Supabase fallback
VOYAGE_API_KEYyes for documents/search/chat retrievalVoyage voyage-4 embeddings and rerank-2.5

Local Docs

Docusaurus does not need app secrets. Hosted docs search is optional and activates only when all three DocSearch values are present:

NameRequiredNotes
DOCSEARCH_APP_IDoptionalAlgolia DocSearch app ID
DOCSEARCH_API_KEYoptionalPublic DocSearch search key, not an admin key
DOCSEARCH_INDEX_NAMEoptionalIndex name for the docs site