OpenCodeHub is configured via environment variables. Copy .env.example to .env and edit.
| Variable | Description | Default |
|---|
HOST | Bind address | 0.0.0.0 |
PORT | HTTP port | 4321 |
SITE_URL | Public URL of the instance | http://localhost:4321 |
APP_NAME | Instance name | OpenCodeHub |
NODE_ENV | development or production | development |
| Variable | Description | Default |
|---|
DATABASE_DRIVER | postgres, sqlite, or turso (LibSQL) | postgres |
DATABASE_URL | Connection string | — |
DATABASE_POOL_SIZE | Connection pool size | 10 |
DATABASE_SSL | Enable PostgreSQL SSL | false |
DATABASE_AUTH_TOKEN | Auth token (Turso/LibSQL only) | — |
| Variable | Description | Default |
|---|
REDIS_URL | Redis connection string | redis://localhost:6379 |
REDIS_PASSWORD | Redis password | — |
Redis is required in production for distributed locking, rate limiting, and sessions. For edge deployments (Vercel), use Upstash Redis with UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.
| Variable | Description | Generate With |
|---|
JWT_SECRET | Signs auth tokens | openssl rand -base64 32 |
JWT_EXPIRES_IN | Token expiry | 7d |
SESSION_SECRET | Signs session cookies | openssl rand -base64 32 |
All secrets below must be unique. Generate each with openssl rand -hex 32.
| Variable | Purpose |
|---|
INTERNAL_HOOK_SECRET | Secures git hook communication between Git server and app |
CRON_SECRET | Protects cron endpoints (GC, mirror sync, notification digests) |
AI_CONFIG_ENCRYPTION_KEY | Encrypts AI provider API keys at rest |
WORKFLOW_SECRET_ENCRYPTION_KEY | Encrypts CI/CD workflow secrets at rest |
RUNNER_SECRET | Shared secret between server and CI runners |
| Variable | Description |
|---|
OAUTH_GOOGLE_CLIENT_ID | Google OAuth client ID |
OAUTH_GOOGLE_CLIENT_SECRET | Google OAuth client secret |
OAUTH_GITHUB_CLIENT_ID | GitHub OAuth client ID |
OAUTH_GITHUB_CLIENT_SECRET | GitHub OAuth client secret |
OAUTH_GITLAB_CLIENT_ID | GitLab OAuth client ID |
OAUTH_GITLAB_CLIENT_SECRET | GitLab OAuth client secret |
OpenCodeHub also supports SSO via SAML and OIDC. Configure these through the admin dashboard.
| Variable | Description | Default |
|---|
GIT_REPOS_PATH | Directory for git repositories | ./data/repositories |
GIT_SSH_PORT | SSH git server port | 2222 |
GIT_SSH_HOST_KEY | Path to SSH host key | ./data/ssh/host_key |
| Variable | Description | Default |
|---|
STORAGE_TYPE | local or s3 | local |
STORAGE_PATH | Local storage path | ./data/storage |
Works with AWS S3, MinIO, Cloudflare R2, Garage, SeaweedFS, Ceph RGW, Wasabi, Backblaze B2, and any S3-compatible service.
| Variable | Description |
|---|
STORAGE_BUCKET | Bucket name (required for S3) |
STORAGE_REGION | S3 region (default: us-east-1) |
STORAGE_ENDPOINT | Custom S3 endpoint (for MinIO, R2, etc.) |
STORAGE_ACCESS_KEY_ID | S3 access key |
STORAGE_SECRET_ACCESS_KEY | S3 secret key |
| Variable | Description | Default |
|---|
RUNNER_ENABLED | Enable the CI runner | true |
RUNNER_DOCKER_SOCKET | Docker socket path | /var/run/docker.sock |
RUNNER_WORKSPACE_PATH | Workspace directory | ./data/runner/workspaces |
RUNNER_ARTIFACTS_PATH | Artifacts directory | ./data/runner/artifacts |
RUNNER_CONCURRENT_JOBS | Max concurrent jobs | 2 |
RUNNER_TIMEOUT | Job timeout in seconds | 3600 |
RUNNER_REGISTRATION_TOKEN_TTL_DAYS | Token TTL | 90 |
| Variable | Description | Default |
|---|
SMTP_HOST | SMTP hostname | — |
SMTP_PORT | SMTP port | 587 |
SMTP_USER | SMTP username | — |
SMTP_PASSWORD | SMTP password | — |
SMTP_FROM | From address | noreply@opencodehub.local |
| Variable | Description | Default |
|---|
LOG_LEVEL | debug, info, warn, error | info |
LOG_FILE | Log file path | ./data/logs/opencodehub.log |
| Variable | Description | Default |
|---|
RATE_LIMIT_ENABLED | Enable rate limiting | true |
RATE_LIMIT_AUTH | Auth endpoints (req/15min) | 5 |
RATE_LIMIT_API | API endpoints (req/min) | 100 |
RATE_LIMIT_GIT | Git operations (req/min) | 200 |
RATE_LIMIT_GENERAL | General endpoints (req/min) | 60 |
RATE_LIMIT_SKIP_DEV | Skip in development | false |
CSRF_SKIP_DEV | Skip CSRF in development | false |
| Variable | Description | Default |
|---|
ALLOWED_ORIGINS | Comma-separated allowed origins | http://localhost:4321 |
MAX_REQUEST_BODY_MB | Max request body size (MB) | 10 |
MAX_PACK_SIZE_MB | Max git pack size (MB) | 500 |
GIT_PROCESS_TIMEOUT_SECS | Git process timeout (sec) | 300 |
| Variable | Description | Default |
|---|
ENABLE_REGISTRATION | Allow new user signups | true |
ENABLE_WIKI | Enable repository wikis | true |
ENABLE_ISSUES | Enable issue tracking | true |
ENABLE_ACTIONS | Enable CI/CD pipelines | true |
ENABLE_PACKAGES | Enable package registry | false |
ENABLE_AI_ASSISTANT | Enable AI code review | true |
Configure one or more AI providers for code review. Keys are encrypted at rest using AI_CONFIG_ENCRYPTION_KEY.
| Variable | Provider |
|---|
OPENAI_API_KEY | OpenAI (GPT-4, GPT-4o) |
ANTHROPIC_API_KEY | Anthropic (Claude) |
GROQ_API_KEY | Groq (fast inference) |
BYTEZ_API_KEY | Bytez |
OPENROUTER_API_KEY | OpenRouter (multi-model) |
TOGETHER_API_KEY | Together AI |
GOOGLE_AI_API_KEY | Google AI (Gemini) |
Ollama is supported for local/self-hosted AI. No API key required — just set the Ollama endpoint in the admin dashboard.
| Variable | Description |
|---|
EXTERNAL_AGENT_WEBHOOK_URL | Webhook URL for external AI agent |
EXTERNAL_AGENT_API_KEY | API key for the external agent |
EXTERNAL_AGENT_CALLBACK_SECRET | Callback verification secret |
| Variable | Description | Default |
|---|
BACKUP_ENCRYPTION_KEY | Encryption key for backups | — |
BACKUP_S3_BUCKET | S3 bucket for backups | — |
BACKUP_S3_PREFIX | S3 prefix | opencodehub-backups |
BACKUP_RETENTION_DAYS | Retention period | 30 |
BACKUP_DIR | Local backup directory | ./backups |
| Variable | Description | Default |
|---|
AIR_GAPPED_MODE | Disable all external API calls | false |
When enabled, OpenCodeHub operates fully offline. AI features are disabled unless you run a local model (e.g., Ollama).
| Variable | Description |
|---|
GRAFANA_OTLP_ENDPOINT | Grafana Cloud OTLP endpoint |
GRAFANA_INSTANCE_ID | Grafana Cloud instance ID |
GRAFANA_API_KEY | Grafana Cloud API key |
OpenCodeHub exports OpenTelemetry traces and Prometheus metrics. See Monitoring for setup details.