Docs
Environment Variables

Environment Variables

Every variable the server reads, by name, with what it is for and how to rotate it. Values are never written here.

Set in Vercel (Settings, Environment Variables) for production and in .env.local on a developer's machine. .env.example in the repository lists every name with a comment.

Required

NamePurposeRotate by
NEXT_PUBLIC_SUPABASE_URL, SUPABASE_URLSupabase project addressDoes not rotate
SUPABASE_SECRET_KEYThe service key the server uses. Bypasses RLS. Never reaches a browserSupabase, API Keys: create new, set on Vercel, redeploy, revoke old
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerk's public keyClerk, API Keys
CLERK_SECRET_KEYClerk's server keyClerk, API Keys: create, set, redeploy, delete old
CLERK_WEBHOOK_SIGNING_SECRETVerifies webhook callsClerk, Webhooks, the endpoint
NEXT_PUBLIC_CLERK_SIGN_IN_URL/sign-inDoes not rotate
RESEND_API_KEYSends emailResend, API Keys
EMAIL_FROMThe senderChange in Vercel
CRON_SECRETBearer token every cron route requiresNew random string, set on Vercel, update the Supabase pg_cron job, redeploy
NEXT_PUBLIC_APP_URLhttps://www.impacthubos.com, used in email linksDoes not rotate

Integrations

NamePurpose
GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRETGoogle Calendar connection
NEXUS_API_URL, NEXUS_API_KEY, NEXUS_OUTCOMES_PATHNexus. Without them: stub ranker, no rooms
OPENROUTER_API_KEYThe OS Agent's model. Without it the agent is off
ANTHROPIC_API_KEYFallback for the agent
NEXT_PUBLIC_SENTRY_DSNError reports
LINEAR_API_KEY, LINEAR_TEAM_ID, LINEAR_SUPPORT_LABEL_IDIn-app reports become Linear issues
APPLICATION_NOTIFY_EMAILSComma-separated list for application alerts and report copies
EMAIL_REPLY_TOOptional reply-to
LINK_SIGNING_SECRETSigns one-click links in email; falls back to CRON_SECRET

Tuning (Optional)

NameDefaultMeaning
NEXUS_MATCH_MIN_SCORE0.8Lowest score a match is kept at
MATCH_FOUNDER_RUN_CAP5New suggestions per founder per run
MATCH_SUPPORTER_OPEN_CAP3Open matches one supporter holds
NEXT_PUBLIC_GOOGLE_CALENDAR_PRIMARYtrueWrite to the member's primary calendar
NEXT_PUBLIC_GOOGLE_CALENDAR_READunsetRead access in app-calendar mode

The Rotation Rule

Create the new key first, set it on Vercel, redeploy, confirm the feature works, then revoke the old one. A NEXT_PUBLIC_ change needs a redeploy; it is baked into the build.

If a Key Leaks

Rotate it the same way, at once. Then check Vercel's deployment list for preview deployments and the repository for any accidental commit of .env.local (it is ignored by Git; confirm it stayed that way).