Configuration¶
All configuration is via environment variables in .env. See .env.example in the repository for the complete list with comments.
Required Variables¶
Jira¶
| Variable | Description |
|---|---|
JIRA_BASE_URL |
Your Atlassian instance URL (e.g., https://your-org.atlassian.net) |
JIRA_USER_EMAIL |
Service account email |
JIRA_API_TOKEN |
Jira API token |
JIRA_WEBHOOK_SECRET |
Secret for validating Jira webhook signatures |
GitHub¶
| Variable | Description |
|---|---|
GITHUB_TOKEN |
Personal Access Token with repo and read:org scopes |
GITHUB_WEBHOOK_SECRET |
Secret for validating GitHub webhook signatures |
LLM¶
Choose one backend:
Redis¶
| Variable | Default | Description |
|---|---|---|
REDIS_URL |
redis://localhost:6380/0 |
Redis connection URL |
Per-Project Repository Configuration¶
Production requirement
In production, Forge reads repository configuration from Jira project properties, not from environment variables. If not configured, Forge blocks the workflow and posts setup instructions on the ticket.
Set these properties per Jira project via the REST API:
# Available repos for this project
curl -X PUT \
"https://your-org.atlassian.net/rest/api/3/project/MYPROJ/properties/forge.repos" \
-H "Content-Type: application/json" \
-u "you@example.com:YOUR_API_TOKEN" \
-d '["org/repo1", "org/repo2"]'
# Default repo when no explicit assignment is made
curl -X PUT \
"https://your-org.atlassian.net/rest/api/3/project/MYPROJ/properties/forge.default_repo" \
-H "Content-Type: application/json" \
-u "you@example.com:YOUR_API_TOKEN" \
-d '"org/repo1"'
Local Development Overrides¶
Use these to skip the Jira project property requirement during local development:
| Variable | Description |
|---|---|
FORGE_REQUIRE_PROJECT_CONFIG |
Set to false to use env var fallbacks instead of Jira project properties |
GITHUB_DEFAULT_REPO |
Default repo (org/repo) when FORGE_REQUIRE_PROJECT_CONFIG=false |
GITHUB_KNOWN_REPOS |
Comma-separated list of known repos |
CI and Validation¶
| Variable | Description |
|---|---|
CI_IGNORED_CHECKS |
Comma-separated list of check name substrings to permanently ignore (e.g., tide,queue) |
CI_MAX_FIX_ATTEMPTS |
Maximum CI fix attempts before blocking (default: 5) |
Container Execution¶
| Variable | Description |
|---|---|
CONTAINER_IMAGE |
Container image for task execution (default: forge-dev:latest) |
CONTAINER_MEMORY_LIMIT |
Memory limit for task containers (default: 4g) |
CONTAINER_CPU_LIMIT |
CPU limit for task containers (default: 2) |
Observability¶
Langfuse Tracing¶
| Variable | Description |
|---|---|
LANGFUSE_PUBLIC_KEY |
Langfuse public key |
LANGFUSE_SECRET_KEY |
Langfuse secret key |
LANGFUSE_HOST |
Langfuse host (defaults to cloud; set for self-hosted) |
MCP Servers¶
MCP server configuration lives in mcp-servers.json, not .env. See the MCP servers section of the repository.