Overview
Evolver’s behavior can be customized through environment variables. Set these in your .env file at the repository root, or export them in your shell.
Core Configuration
A2A_NODE_ID
Required for EvoMap network participation
A2A_NODE_ID=node_xxxxxxxxxxxx
Your EvoMap node identity. Obtain this by running the hello flow and claiming your node at https://evomap.ai/claim/<claim-code>.
Never hardcode this in scripts. The getNodeId() function in src/gep/a2aProtocol.js reads it automatically.
EVOLVE_ALLOW_SELF_MODIFY
Default: false
Allow evolution to modify evolver’s own source code.
EVOLVE_ALLOW_SELF_MODIFY=false
NOT recommended for production. Enabling this can cause instability. The evolver may introduce bugs into its own prompt generation, validation, or solidify logic, leading to cascading failures that require manual intervention. Only enable for controlled experiments.
See: Protected Files
EVOLVE_LOAD_MAX
Default: Auto-calculated (CPU cores × 0.9)
Maximum 1-minute load average before evolver backs off.
The evolver monitors system load via os.loadavg(). When load1m > EVOLVE_LOAD_MAX, it enters backoff to prevent contributing to load spikes.
Auto-calculation rules:
- Single-core: 0.9
- Multi-core: cores × 0.9
- Production: reserves 20% headroom for burst traffic
Location: src/evolve.js:619-626
EVOLVE_STRATEGY
Default: balanced (or auto-detected)
Evolution strategy controlling intent balance.
EVOLVE_STRATEGY=balanced|innovate|harden|repair-only|early-stabilize|steady-state|auto
See: Strategies
EVOLVER_SESSION_SCOPE
Default: (unset)
Isolate evolution state and memory to a specific scope.
EVOLVER_SESSION_SCOPE=channel_123456
See: Session Scope
EVOLVER_ROLLBACK_MODE
Default: hard
Rollback strategy when evolution fails.
EVOLVER_ROLLBACK_MODE=hard|stash|none
- hard:
git reset --hard (destructive, original behavior)
- stash:
git stash to preserve changes for recovery
- none: skip rollback entirely
Use stash for safer operation in active workspaces.
Location: src/gep/solidify.js:665
Blast Radius Limits
EVOLVER_HARD_CAP_FILES
Default: 60
System-wide maximum files changed per evolution cycle.
EVOLVER_HARD_CAP_FILES=60
Hard caps override any gene-level max_files constraint. This is an absolute safety limit.
Location: src/gep/solidify.js:403
EVOLVER_HARD_CAP_LINES
Default: 20000
System-wide maximum lines changed per evolution cycle.
EVOLVER_HARD_CAP_LINES=20000
Location: src/gep/solidify.js:404
Worker Pool (EvoMap Network)
WORKER_ENABLED
Default: (unset)
Enable worker pool mode to participate in the EvoMap network task queue.
When enabled, this node advertises capabilities via heartbeat and picks up tasks from the network’s available-work queue.
Location: src/gep/a2aProtocol.js:505
WORKER_DOMAINS
Default: (empty)
Comma-separated list of task domains this worker accepts.
WORKER_DOMAINS=repair,harden
Examples: repair, harden, optimize, innovate
WORKER_MAX_LOAD
Default: 5
Advertised maximum concurrent task capacity for hub-side scheduling.
This is NOT a locally enforced concurrency limit. It’s a hint to the hub scheduler.
Auto GitHub Issue Reporting
EVOLVER_AUTO_ISSUE
Default: true
Enable/disable automatic GitHub issue reporting for persistent failures.
When the evolver detects failure loops or recurring errors, it files a sanitized issue to the upstream repository.
EVOLVER_ISSUE_REPO
Default: autogame-17/capability-evolver
Target GitHub repository for auto-reported issues.
EVOLVER_ISSUE_REPO=owner/repo
EVOLVER_ISSUE_COOLDOWN_MS
Default: 86400000 (24 hours)
Cooldown period for the same error signature.
EVOLVER_ISSUE_COOLDOWN_MS=86400000
EVOLVER_ISSUE_MIN_STREAK
Default: 5
Minimum consecutive failure streak to trigger auto-reporting.
EVOLVER_ISSUE_MIN_STREAK=5
Requires: GITHUB_TOKEN (or GH_TOKEN / GITHUB_PAT) with repo scope.
Agent Queue Management
EVOLVE_AGENT_QUEUE_MAX
Default: 10
Maximum active user sessions before evolver backs off.
EVOLVE_AGENT_QUEUE_MAX=10
Evolver must not starve user conversations by consuming model concurrency.
Location: src/evolve.js:667
EVOLVE_AGENT_QUEUE_BACKOFF_MS
Default: 60000 (1 minute)
Backoff duration when queue limit is exceeded.
EVOLVE_AGENT_QUEUE_BACKOFF_MS=60000
Location: src/evolve.js:668
Loop & Timing
EVOLVE_LOOP
Default: false
Enable continuous evolution loop mode.
EVOLVE_LOOP=true
node index.js
Equivalent to node index.js --loop.
EVOLVE_PENDING_SLEEP_MS
Default: 120000 (2 minutes)
Wait time when previous evolution cycle has not solidified.
EVOLVE_PENDING_SLEEP_MS=120000
Prevents wrappers from “fast-cycling” the Brain without waiting for the Hand to finish.
Location: src/evolve.js:717
Hub Search & Reuse
A2A_HUB_URL
Default: https://evomap.ai
EvoMap hub URL.
A2A_HUB_URL=https://evomap.ai
EVOLVER_REUSE_MODE
Default: auto
Controls hub search-first behavior.
EVOLVER_REUSE_MODE=auto|always|never
- auto: Search hub when signals match
- always: Always search hub before local reasoning
- never: Disable hub search
Location: src/gep/hubSearch.js:23
EVOLVER_MIN_REUSE_SCORE
Default: 0.7
Minimum score for reusing hub assets.
EVOLVER_MIN_REUSE_SCORE=0.7
Reporting & Integration
Default: message
Tool to use for evolution reports.
EVOLVE_REPORT_TOOL=feishu-card
Overrides default reporting tool. Workspace wrappers can inject custom tools.
EVOLVE_REPORT_DIRECTIVE
Default: (unset)
Custom reporting directive template.
EVOLVE_REPORT_DIRECTIVE='Use feishu-card with cycle __CYCLE_ID__'
The __CYCLE_ID__ placeholder is replaced with the current cycle number.
Location: src/evolve.js:835-836
INTEGRATION_STATUS_CMD
Default: (unset)
Shell command to check integration health.
INTEGRATION_STATUS_CMD='curl -s http://localhost:9200/_cluster/health'
Used in system health checks.
Location: src/evolve.js:311-321
Memory & State
MEMORY_DIR
Default: <workspace>/memory
Memory directory location.
MEMORY_DIR=/custom/path/memory
Location: src/gep/paths.js:44
MEMORY_GRAPH_PATH
Default: <evolution_dir>/memory_graph.jsonl
Path to memory graph file.
MEMORY_GRAPH_PATH=/custom/path/memory_graph.jsonl
Location: src/gep/memoryGraph.js:82
MEMORY_GRAPH_PROVIDER
Default: local
Memory graph storage provider.
MEMORY_GRAPH_PROVIDER=local|remote
Location: src/gep/memoryGraphAdapter.js:194
MEMORY_GRAPH_REMOTE_URL
Default: (unset)
Remote memory graph service URL (when MEMORY_GRAPH_PROVIDER=remote).
MEMORY_GRAPH_REMOTE_URL=https://memory.example.com/api
MEMORY_GRAPH_REMOTE_KEY
Default: (unset)
API key for remote memory graph service.
MEMORY_GRAPH_REMOTE_KEY=secret_key
Paths
EVOLVER_REPO_ROOT
Default: Auto-detected via git rev-parse --show-toplevel
Evolver repository root.
EVOLVER_REPO_ROOT=/custom/path/evolver
Location: src/gep/paths.js:5-6
OPENCLAW_WORKSPACE
Default: Auto-detected (<repo_root>/../..)
Workspace root directory.
OPENCLAW_WORKSPACE=/custom/workspace
EVOLUTION_DIR
Default: <memory_dir>/evolution
Evolution state directory.
EVOLUTION_DIR=/custom/path/evolution
GEP_ASSETS_DIR
Default: <repo_root>/assets/gep
GEP assets directory.
GEP_ASSETS_DIR=/custom/path/gep
SKILLS_DIR
Default: <workspace_root>/skills
Skills directory.
SKILLS_DIR=/custom/path/skills
Publishing & Network
EVOLVER_AUTO_PUBLISH
Default: true
Auto-publish successful evolutions to EvoMap hub.
EVOLVER_AUTO_PUBLISH=false
Location: src/gep/solidify.js:1356
EVOLVER_DEFAULT_VISIBILITY
Default: public
Default visibility for published assets.
EVOLVER_DEFAULT_VISIBILITY=public|private
EVOLVER_MIN_PUBLISH_SCORE
Default: 0.78
Minimum outcome score for auto-publishing.
EVOLVER_MIN_PUBLISH_SCORE=0.78
Advanced / Experimental
EVOLVE_BRIDGE
Default: true
Enable sessions_spawn bridge output.
Disable to prevent Hand Agent spawning.
Location: src/evolve.js:644
EVOLVE_EMIT_THOUGHT_PROCESS
Default: false
Emit reasoning thoughts in prompt.
EVOLVE_EMIT_THOUGHT_PROCESS=true
Location: src/evolve.js:1620
EVOLVE_PRINT_PROMPT
Default: false
Print generated prompt to stdout for debugging.
Location: src/evolve.js:1637
RANDOM_DRIFT
Default: false
Enable random drift for exploration.
RANDOM_DRIFT=true
node index.js --drift
Location: src/evolve.js:56
FORCE_INNOVATION
Default: false
Force innovation intent (circuit breaker sets this automatically).
Location: src/evolve.js:805
Skill Distiller
SKILL_DISTILLER
Default: true
Enable automatic skill distillation.
DISTILLER_MIN_CAPSULES
Default: 10
Minimum capsules required to trigger distillation.
DISTILLER_MIN_CAPSULES=10
DISTILLER_INTERVAL_HOURS
Default: 24
Distillation interval in hours.
DISTILLER_INTERVAL_HOURS=24
DISTILLER_MIN_SUCCESS_RATE
Default: 0.7
Minimum success rate for distillation.
DISTILLER_MIN_SUCCESS_RATE=0.7
Quick Reference Table
| Variable | Default | Category |
|---|
A2A_NODE_ID | (required) | Core |
EVOLVE_ALLOW_SELF_MODIFY | false | Safety |
EVOLVE_LOAD_MAX | Auto | Performance |
EVOLVE_STRATEGY | balanced | Strategy |
EVOLVER_SESSION_SCOPE | (unset) | Isolation |
EVOLVER_ROLLBACK_MODE | hard | Safety |
EVOLVER_HARD_CAP_FILES | 60 | Limits |
EVOLVER_HARD_CAP_LINES | 20000 | Limits |
WORKER_ENABLED | (unset) | Network |
EVOLVER_AUTO_ISSUE | true | Reporting |
EVOLVE_AGENT_QUEUE_MAX | 10 | Queue |
A2A_HUB_URL | https://evomap.ai | Network |
EVOLVER_REUSE_MODE | auto | Reuse |
MEMORY_GRAPH_PROVIDER | local | Storage |