Skip to content

Environment Variables

VariableRequiredDescription
GITHUB_TOKENYesGitHub personal access token
RESEND_API_KEYConditionalResend API key (required when EMAIL_PROVIDER=resend or unset)
FROM_EMAILYesDefault sender email address
FROM_NAMENoDefault sender name
CRYYER_REPOWorkflowsowner/repo for draft issue creation
CRYYER_ROOTMCP onlyProject root path (defaults to cwd)
ISSUE_NUMBERCI onlySet by GitHub Actions for send-on-close
GITHUB_REPOSITORYCI onlySet by GitHub Actions
VariableDefaultDescription
LLM_PROVIDERanthropicanthropic, openai, or gemini
LLM_MODELPer-providerOverride the default model
ANTHROPIC_API_KEYRequired when LLM_PROVIDER=anthropic
OPENAI_API_KEYRequired when LLM_PROVIDER=openai
GEMINI_API_KEYRequired when LLM_PROVIDER=gemini

Default models: Anthropic claude-sonnet-4-5-20250514, OpenAI gpt-4o, Gemini gemini-1.5-flash.

See LLM Providers for setup details.

VariableDefaultDescription
EMAIL_PROVIDERresendresend or gmail
RESEND_API_KEYRequired when EMAIL_PROVIDER=resend (or unset)
GMAIL_REFRESH_TOKENRequired when EMAIL_PROVIDER=gmail; set via cryyer auth gmail
VariableDefaultDescription
SUBSCRIBER_STOREsupabasesupabase, json, gist, or google-sheets
VariableDescription
SUPABASE_URLYour Supabase project URL
SUPABASE_SERVICE_KEYSupabase service role key
VariableDefaultDescription
SUBSCRIBERS_JSON_PATH./subscribers.jsonPath to subscriber data
EMAIL_LOG_JSON_PATH./email-log.jsonPath to email send log
VariableDescription
GITHUB_GIST_IDID of a private Gist containing subscribers.json
GITHUB_TOKENClassic PAT with gist scope (fine-grained PATs do not support gists; the default Actions token cannot access private gists)
VariableDescription
GOOGLE_SHEETS_SPREADSHEET_IDThe ID from your spreadsheet URL
GOOGLE_SERVICE_ACCOUNT_EMAILService account email
GOOGLE_PRIVATE_KEYService account private key (PEM format)

See Subscriber Stores for setup details.

VariableDescription
RESEND_AUDIENCE_IDResend Audience ID for waitlist signups