Configuration
Configure the Edsger CLI — file patterns for code review, workflow concurrency, polling intervals, retry behavior, timeouts, and environment variables.
Configuration
Edsger CLI uses cosmiconfig for flexible configuration loading. Configuration controls two main areas: code review behavior (patterns, severity, file limits) and agent workflow behavior (concurrency, polling, retries, timeouts).
Configuration Files
Create any of these files in your project root. Cosmiconfig searches for them in this order:
| File | Format |
|---|---|
.edsgerrc | JSON |
.edsgerrc.json | JSON |
.edsgerrc.yaml | YAML |
.edsgerrc.yml | YAML |
edsger.config.js | JavaScript (CommonJS) |
edsger.config.mjs | JavaScript (ESM) |
package.json → "edsger" field | JSON |
You can also specify a config file explicitly:
edsger --config ./my-edsger-config.json --reviewFull Configuration Reference
{
"patterns": ["**/*.ts", "**/*.tsx", "**/*.js"],
"exclude": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"],
"severity": "error",
"maxFiles": 50,
"claude": {
"timeout": 120000
},
"workflow": {
"maxConcurrency": 3,
"pollInterval": 30000,
"maxRetries": 3,
"retryCooldown": 300000,
"workerTimeout": 1800000,
"maxVerificationIterations": 10
}
}Code Review Options
These options control the edsger --review command behavior.
patterns
Type: string[]
Default:
[
"**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx",
"**/*.vue", "**/*.py", "**/*.go", "**/*.rs",
"**/*.java", "**/*.cpp", "**/*.c", "**/*.h"
]Glob patterns for files to include in code review. Only files matching these patterns will be analyzed. The defaults cover most common languages — narrow this down for faster reviews on large codebases.
{
"patterns": ["src/**/*.ts", "src/**/*.tsx"]
}exclude
Type: string[]
Default:
[
"**/node_modules/**", "**/dist/**", "**/build/**",
"**/*.test.js", "**/*.spec.js", "**/*.test.ts", "**/*.spec.ts",
"**/__tests__/**", "**/*.min.js", "**/*.bundle.js"
]Glob patterns for files to exclude from review. Excludes are applied after patterns, so a file matching both will be excluded.
{
"exclude": [
"**/node_modules/**",
"**/dist/**",
"**/*.generated.ts",
"**/migrations/**"
]
}severity
Type: "error" | "warning"
Default: "error"
Controls how review findings affect the exit code:
"error"— OnlyBLOCKfindings cause exit code 1 (non-zero).WARNfindings are reported but don't fail the process."warning"— BothBLOCKandWARNfindings cause exit code 1. Use this for stricter enforcement (e.g., CI pipelines).
maxFiles
Type: number
Default: 50
Maximum number of files to process in a single review run. If more files match, the CLI processes the first maxFiles files and warns about skipped ones. Increase this for large changesets, but be aware of API rate limits and processing time.
claude.timeout
Type: number (milliseconds)
Default: 120000 (2 minutes)
Timeout for individual AI requests during code review. Increase this if you're reviewing very large files or experiencing timeout errors.
Workflow Options
These options control the agent workflow (edsger with no flags) and task watching behavior.
workflow.maxConcurrency
Type: number
Default: 3
Hard cap: 10
Maximum number of features to process simultaneously. Each feature runs in its own forked Node.js process (~50-80MB memory each).
Why the cap of 10: This limit exists because of:
- MCP API rate limits — Per-minute and per-hour limits per token
- AI API rate limits — Claude RPM/TPM limits
- GitHub API rate limits — GitHub App installation tokens allow 5,000 requests/hour
- Memory — Each forked worker uses ~50-80MB
For most teams, 3-5 concurrent features is a good balance. Increase only if you have high API rate limits and sufficient memory.
{
"workflow": {
"maxConcurrency": 5
}
}You can also set this per-run via the --concurrency flag:
edsger --concurrency 5workflow.pollInterval
Type: number (milliseconds)
Default: 30000 (30 seconds)
How often the agent checks the platform for new ready_for_ai features. Lower values mean faster pickup but more API calls. Higher values reduce API usage but introduce latency.
{
"workflow": {
"pollInterval": 15000
}
}workflow.maxRetries
Type: number
Default: 3
Maximum number of times to retry a failed feature before giving up. After maxRetries failures, the feature is skipped in future polling cycles.
Exception: If a feature is updated on the platform after a failure (e.g., someone provides feedback or adjusts the configuration), the retry counter is bypassed and the feature is picked up again.
workflow.retryCooldown
Type: number (milliseconds)
Default: 300000 (5 minutes)
Minimum time to wait before retrying a failed feature. This prevents rapid retry loops when a feature has a persistent issue.
workflow.workerTimeout
Type: number (milliseconds)
Default: 1800000 (30 minutes)
Maximum time a single feature worker can run before being killed. If a worker exceeds this timeout:
- It receives a
SIGTERMsignal - If it doesn't exit within 10 seconds, it receives
SIGKILL - The feature is marked as failed with a timeout error
Increase this for features with complex implementations or many phases. Decrease it to fail-fast on stuck workers.
{
"workflow": {
"workerTimeout": 3600000
}
}workflow.maxVerificationIterations
Type: number
Default: 10
Maximum number of verification-rework loops before escalating to human review. When a phase's output is verified by AI and found lacking, the CLI re-runs the phase with feedback. This setting caps the loop to prevent infinite cycles.
After reaching the limit, the feature status is escalated so a human can review and provide direction.
Environment Variables
Authentication
| Variable | Required | Description |
|---|---|---|
EDSGER_MCP_SERVER_URL | For env-based auth | MCP server endpoint URL |
EDSGER_MCP_TOKEN | For env-based auth | MCP authentication token |
EDSGER_BASE_URL | No | Edsger web app URL (default: https://edsger.ai) |
Note: If you use edsger login, these are stored automatically in ~/.edsger/auth.json and you don't need to set them as environment variables. Environment variables take precedence over stored auth if both exist.
Legacy Workflow
| Variable | Required | Description |
|---|---|---|
EDSGER_PRODUCT_ID | For --product-level | Product UUID for single-product workflow |
Setting EDSGER_PRODUCT_ID without --product-level flag auto-enables legacy mode for backward compatibility.
Growth Analysis & Video
| Variable | Required | Description |
|---|---|---|
ELEVENLABS_API_KEY | For growth videos | ElevenLabs TTS API key (primary) |
DEEPGRAM_API_KEY | For growth videos | Deepgram TTS API key (alternative) |
At least one TTS key is required for the growth command's video generation feature.
Setting Environment Variables
Recommended: Use the CLI for persistent storage:
edsger config set ELEVENLABS_API_KEY=sk-xxxxxVariables set this way are stored in ~/.edsger/env.json and loaded automatically on every CLI run.
Alternative: .env file in your project directory:
# .env
EDSGER_MCP_SERVER_URL=https://your-project.supabase.co/functions/v1
EDSGER_MCP_TOKEN=mcp_xxxxxxxxxxxxx
ELEVENLABS_API_KEY=sk-xxxxxAlternative: Shell export for session-only use:
export EDSGER_MCP_TOKEN=mcp_xxxxxxxxxxxxxExample Configurations
TypeScript Project (Code Review Focused)
{
"patterns": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "dist/**"],
"severity": "warning",
"maxFiles": 100,
"claude": {
"timeout": 180000
}
}Monorepo
{
"patterns": ["packages/*/src/**/*.ts", "apps/*/src/**/*.ts"],
"exclude": ["**/node_modules/**", "**/dist/**", "**/__mocks__/**"],
"maxFiles": 200
}High-Concurrency Workflow
For teams with high API rate limits processing many features:
{
"workflow": {
"maxConcurrency": 8,
"pollInterval": 15000,
"maxRetries": 5,
"retryCooldown": 120000,
"workerTimeout": 3600000,
"maxVerificationIterations": 15
}
}Conservative Workflow
For careful processing with longer timeouts and fewer retries:
{
"workflow": {
"maxConcurrency": 1,
"pollInterval": 60000,
"maxRetries": 2,
"retryCooldown": 600000,
"workerTimeout": 3600000,
"maxVerificationIterations": 5
}
}Python Project
{
"patterns": ["**/*.py"],
"exclude": [
"**/__pycache__/**",
"**/venv/**",
"**/.venv/**",
"**/test_*.py",
"**/*_test.py"
],
"severity": "error"
}Commands
Complete reference for all Edsger CLI commands — authentication, configuration, code review, refactoring, workflow, growth analysis, app store publishing, and more.
Agent Workflow
How the Edsger CLI agent workflow discovers, claims, and processes features across all your products — with concurrent workers, automatic retries, and graceful shutdown.