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)