Skip to content

Environment Variables

These variables are required for Abacus to function:

Variable Description
POSTGRES_URL PostgreSQL connection string
BETTER_AUTH_SECRET Secret for session encryption. Generate with: openssl rand -base64 32
GOOGLE_CLIENT_ID Google OAuth client ID
GOOGLE_CLIENT_SECRET Google OAuth client secret
NEXT_PUBLIC_DOMAIN Email domain to restrict access (e.g., sentry.io)
CRON_SECRET Secret for authenticating cron job requests. Generate with: openssl rand -hex 32
Variable Description
ANTHROPIC_ADMIN_KEY Anthropic Admin API key (starts with sk-admin-)
ANTHROPIC_ADMIN_KEYS JSON array of keys for multiple organizations (see Multi-Organization Keys)

See Claude Code setup for details.

Variable Description
CURSOR_ADMIN_KEY Cursor Admin API key
CURSOR_ADMIN_KEYS JSON array of keys for multiple teams (see Multi-Organization Keys)

See Cursor setup for details.

Variable Description
GITHUB_APP_ID GitHub App ID
GITHUB_APP_PRIVATE_KEY GitHub App private key (full PEM content)
GITHUB_APP_INSTALLATION_ID Installation ID for your organization
GITHUB_WEBHOOK_SECRET Webhook secret for verifying requests

For local development only:

Variable Description
GITHUB_TOKEN Fine-grained personal access token (alternative to App)

See GitHub Commits setup for details.

Variable Description
NEXT_PUBLIC_SENTRY_DSN Sentry DSN for error tracking
Variable Description
AUTH_BYPASS_LOCAL Set to true to bypass SSO login locally. Returns a mock “Dev User” session.

For managing multiple Anthropic organizations or Cursor teams, use a JSON array:

Terminal window
ANTHROPIC_ADMIN_KEYS='[{"key":"sk-admin-xxx","name":"Engineering"},{"key":"sk-admin-yyy","name":"Research"}]'
CURSOR_ADMIN_KEYS='[{"key":"cur_xxx","name":"Team Alpha"},{"key":"cur_yyy","name":"Team Beta"}]'

Each entry requires:

  • key: The admin API key
  • name: A label identifying the organization or team (used in reports)