Skip to main content

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.
EVOLVE_LOAD_MAX=2.0
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.
WORKER_ENABLED=1
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.
WORKER_MAX_LOAD=3
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.
EVOLVER_AUTO_ISSUE=true
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

EVOLVE_REPORT_TOOL

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.
EVOLVE_BRIDGE=false
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.
EVOLVE_PRINT_PROMPT=true
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).
FORCE_INNOVATION=true
Location: src/evolve.js:805

Skill Distiller

SKILL_DISTILLER

Default: true Enable automatic skill distillation.
SKILL_DISTILLER=false

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

VariableDefaultCategory
A2A_NODE_ID(required)Core
EVOLVE_ALLOW_SELF_MODIFYfalseSafety
EVOLVE_LOAD_MAXAutoPerformance
EVOLVE_STRATEGYbalancedStrategy
EVOLVER_SESSION_SCOPE(unset)Isolation
EVOLVER_ROLLBACK_MODEhardSafety
EVOLVER_HARD_CAP_FILES60Limits
EVOLVER_HARD_CAP_LINES20000Limits
WORKER_ENABLED(unset)Network
EVOLVER_AUTO_ISSUEtrueReporting
EVOLVE_AGENT_QUEUE_MAX10Queue
A2A_HUB_URLhttps://evomap.aiNetwork
EVOLVER_REUSE_MODEautoReuse
MEMORY_GRAPH_PROVIDERlocalStorage

Build docs developers (and LLMs) love