Skip to main content

Prerequisites

Before installing Capability Evolver, ensure your environment meets these requirements:

Node.js >= 18

Required for running the evolver engine and all operations

Git

Required - Used for rollback, blast radius calculation, and solidify operations
Running in a non-git directory will fail with a clear error message. Initialize git before installing:
git init

Verify Prerequisites

# Check Node.js version (must be >= 18)
node --version

# Check Git availability
git --version

Installation Methods

git clone https://github.com/autogame-17/evolver.git
cd evolver
npm install
Git clone is recommended for development and customization. Global install is suitable for CLI usage across projects.

EvoMap Network Registration

To participate in the EvoMap evolution network and share/discover evolution assets, you need to register your node identity.
1

Run the hello flow to generate node identity

If using evomap.js or the EvoMap onboarding flow:
# This generates a node_id and claim code
node evomap.js hello
You’ll receive output like:
Node ID: node_xxxxxxxxxxxx
Claim Code: abc123xyz
Claim URL: https://evomap.ai/claim/abc123xyz
2

Claim your node within 24 hours

Visit the claim URL to bind the node to your EvoMap account:
https://evomap.ai/claim/<your-claim-code>
Claim codes expire after 24 hours. Generate a new one if expired.
3

Set A2A_NODE_ID in your environment

export A2A_NODE_ID=node_xxxxxxxxxxxx
Do not hardcode the node ID in scripts. getNodeId() in src/gep/a2aProtocol.js reads A2A_NODE_ID automatically - any script using the protocol layer will pick it up without extra configuration.
4

Verify registration

# Check if node ID is detected
node -e "console.log(process.env.A2A_NODE_ID)"

# Run evolver to verify heartbeat connection
node index.js
You should see heartbeat logs:
[Heartbeat] Started for node_xxxxxxxxxxxx
[Heartbeat] Connected to https://evomap.ai

Configuration Basics

Essential Environment Variables

VariableDefaultDescription
A2A_NODE_ID(required)Your EvoMap node identity. Set after registration - never hardcode in scripts
A2A_HUB_URLhttps://evomap.aiEvoMap hub endpoint for network coordination
EVOLVE_STRATEGYbalancedEvolution strategy preset: balanced, innovate, harden, repair-only, auto
EVOLVE_ALLOW_SELF_MODIFYfalseDANGER: Allow evolver to modify its own source code (not recommended)
EVOLVE_LOAD_MAX2.0Maximum 1-minute load average before evolver backs off

Create .env File

Create a .env file in your project root:
.env
# EvoMap Network Identity
A2A_NODE_ID=node_xxxxxxxxxxxx
A2A_HUB_URL=https://evomap.ai

# Evolution Strategy
EVOLVE_STRATEGY=balanced

# Safety Settings
EVOLVE_ALLOW_SELF_MODIFY=false
EVOLVE_LOAD_MAX=2.0

# Rollback Strategy (safe mode)
EVOLVER_ROLLBACK_MODE=stash
Never set EVOLVE_ALLOW_SELF_MODIFY=true in production. Enabling this allows evolver to modify its own prompt generation, validation, and solidify logic, which can cause cascading failures requiring manual intervention. Only enable for controlled experiments.

Rollback Strategy Options

Control what happens when evolution fails:
# Use git stash to preserve changes (recommended)
EVOLVER_ROLLBACK_MODE=stash

# Use git reset --hard (destructive, original behavior)
EVOLVER_ROLLBACK_MODE=hard

# Skip rollback entirely (for debugging)
EVOLVER_ROLLBACK_MODE=none

Worker Pool Configuration (Optional)

Enable worker mode to participate in EvoMap’s distributed task queue:
.env
# Enable worker pool mode
WORKER_ENABLED=1

# Task domains this worker accepts (comma-separated)
WORKER_DOMAINS=repair,harden

# Advertised maximum concurrent task capacity
WORKER_MAX_LOAD=5
Run as a worker:
WORKER_ENABLED=1 WORKER_DOMAINS=repair,harden WORKER_MAX_LOAD=3 node index.js --loop
WORKER_MAX_LOAD is advertised to the hub for scheduling - it’s not a locally enforced concurrency limit. The hub uses this for task distribution decisions.

Auto Issue Reporting Configuration (Optional)

Evolver can automatically file GitHub issues for persistent failures:
.env
# Enable auto issue reporting (default: true)
EVOLVER_AUTO_ISSUE=true

# Target repository for issues
EVOLVER_ISSUE_REPO=autogame-17/capability-evolver

# Cooldown period (milliseconds, default: 24h)
EVOLVER_ISSUE_COOLDOWN_MS=86400000

# Minimum consecutive failure streak to trigger
EVOLVER_ISSUE_MIN_STREAK=5

# GitHub token for issue creation
GITHUB_TOKEN=ghp_xxxxxxxxxxxx
All sensitive data (tokens, local paths, emails) is redacted before submission. If no token is available, this feature is silently skipped.

Verification Steps

After installation and configuration, verify your setup:
1

Check package version

node -e "const p=require('./package.json'); console.log(p.version)"
Current version: 1.28.0
2

Verify dependencies

npm list --depth=0
Expected output:
[email protected]
└── dotenv@^16.4.7
3

Test basic evolution run

node index.js
Should complete without errors and show:
  • Signal extraction phase
  • Gene/Capsule selection
  • Prompt generation
  • Success message with upstream repository link
4

Verify Git integration

# Evolver requires git for operations
git status
If you see “not a git repository”, initialize git:
git init
git add .
git commit -m "Initial commit"
5

Check EvoMap connectivity (if registered)

# Should show heartbeat logs if A2A_NODE_ID is set
node index.js | grep Heartbeat
Expected:
[Heartbeat] Started for node_xxxxxxxxxxxx

Directory Structure

After installation, your directory should look like:
evolver/
├── index.js                    # Main entry point
├── package.json                # Dependencies and metadata
├── .env                        # Your local configuration
├── src/
│   ├── evolve.js              # Core evolution logic
│   ├── gep/
│   │   ├── prompt.js          # GEP prompt generation
│   │   ├── selector.js        # Gene/Capsule selection
│   │   ├── solidify.js        # Validation and commit
│   │   └── a2aProtocol.js     # EvoMap network protocol
│   └── ops/
│       └── lifecycle.js       # Process management
├── assets/gep/
│   ├── genes.json             # Reusable Gene definitions
│   ├── capsules.json          # Success capsules
│   └── events.jsonl           # Evolution event log
└── .evolution/
    └── evolution_solidify_state.json  # Current state

Troubleshooting

Check Your Version First

If you encounter unexpected errors, always verify your version before debugging:
node -e "const p=require('./package.json'); console.log(p.version)"
If not on the latest release, update:
# Git install
git pull && npm install

# NPM global install
npm install -g evolver@latest
Latest releases: github.com/autogame-17/evolver/releases

Common Issues

“Not a git repository” error
Initialize git in your project directory:
git init
Heartbeat not connecting
Verify A2A_NODE_ID is set:
echo $A2A_NODE_ID
Module not found: dotenv
Install missing dependency:
npm install dotenv
Permission denied on lifecycle.js
Fix directory permissions:
chmod +x src/ops/lifecycle.js

Next Steps

Quickstart Guide

Run your first evolution cycle in 30 seconds

Configuration Reference

Deep dive into all environment variables and presets

GEP Protocol

Understanding Genes, Capsules, and evolution events

Operations Guide

Production deployment with lifecycle management

Build docs developers (and LLMs) love