Environment Variables
Required 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 |
Provider Variables
Claude Code (Anthropic)
| 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.
Cursor
| 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.
GitHub Commits
| 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.
Optional Variables
| Variable | Description |
|---|---|
NEXT_PUBLIC_SENTRY_DSN | Sentry DSN for error tracking |
Local Development
| Variable | Description |
|---|---|
AUTH_BYPASS_LOCAL | Set to true to bypass SSO login locally. Returns a mock “Dev User” session. |
Multi-Organization Keys
For managing multiple Anthropic organizations or Cursor teams, use a JSON array:
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 keyname: A label identifying the organization or team (used in reports)