All backend configuration is via environment variables. Set them in .env or export them in your shell.
Required
| Variable | Description |
|---|
ANTHROPIC_API_KEY | Claude API key from console.anthropic.com |
VOYAGE_API_KEY | Voyage AI key from dash.voyageai.com |
GITHUB_TOKEN | GitHub personal access token or App token |
Models
| Variable | Type | Default | Description |
|---|
PLANNER_MODEL | string | claude-opus-4-6 | Model for the planning phase |
IMPLEMENTER_MODEL | string | claude-sonnet-4-6 | Model for the implementation phase |
REVIEWER_MODEL | string | claude-sonnet-4-6 | Model for self-review |
Storage
| Variable | Type | Default | Description |
|---|
CHROMA_PERSIST_DIR | path | ./.chroma | ChromaDB persistence directory |
WORKSPACE_BASE_DIR | path | /tmp/nimbus-workspaces | Base dir for task workspaces |
Embeddings
| Variable | Type | Default | Description |
|---|
EMBEDDING_MODEL | string | voyage-code-2 | Voyage AI embedding model |
EMBEDDING_BATCH_SIZE | integer | 64 | Files per embedding batch |
CHUNK_MAX_LINES | integer | 80 | Max lines per code chunk |
CHUNK_OVERLAP_LINES | integer | 10 | Overlap between chunks |
Retrieval
| Variable | Type | Default | Description |
|---|
RAG_TOP_K | integer | 20 | Number of chunks to retrieve |
RAG_BM25_WEIGHT | float | 0.3 | BM25 score weight in hybrid search |
RAG_VECTOR_WEIGHT | float | 0.7 | Vector score weight in hybrid search |
Execution
| Variable | Type | Default | Description |
|---|
MAX_IMPLEMENT_ITERATIONS | integer | 5 | Max plan generation attempts |
MAX_FIX_ITERATIONS | integer | 3 | Max fix attempts after verification failure |
PARALLEL_THRESHOLD | integer | 6 | Min file changes to enable parallel workers |
MAX_PARALLEL_WORKERS | integer | 3 | Max concurrent implementation workers |
API
| Variable | Type | Default | Description |
|---|
REQUIRE_API_KEY | boolean | false | Require X-API-Key on all requests |
FREE_TIER_MONTHLY_LIMIT | integer | 10 | Tasks per month on free tier |
CORS_ORIGINS | JSON array | ["http://localhost:3000"] | Allowed CORS origins |
WS_PING_INTERVAL | integer | 20 | WebSocket ping interval (seconds) |
Integrations
| Variable | Description |
|---|
SLACK_BOT_TOKEN | Slack bot token (xoxb-...) |
SLACK_SIGNING_SECRET | Slack app signing secret |
SLACK_CLIENT_ID | Slack app client ID |
SLACK_CLIENT_SECRET | Slack app client secret |
LINEAR_API_KEY | Linear GraphQL API key |
LINEAR_WEBHOOK_SECRET | Linear webhook secret |