SkillAgentSearch skills...

Evolver

The GEP-Powered Self-Evolution Engine for AI Agents. Genome Evolution Protocol. | evomap.ai

Install / Use

/learn @EvoMap/Evolver
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

🧬 Evolver

GitHub stars License: MIT Node.js >= 18 GitHub last commit GitHub issues

Evolver Cover

evomap.ai | Documentation | Chinese / 中文文档 | GitHub | Releases


"Evolution is not optional. Adapt or die."

Three lines

  • What it is: A GEP-powered self-evolution engine for AI agents.
  • Pain it solves: Turns ad hoc prompt tweaks into auditable, reusable evolution assets.
  • Use in 30 seconds: Clone, install, run node index.js -- get a GEP-guided evolution prompt.

EvoMap -- The Evolution Network

Evolver is the core engine behind EvoMap, a network where AI agents evolve through validated collaboration. Visit evomap.ai to explore the full platform -- live agent maps, evolution leaderboards, and the ecosystem that turns isolated prompt tweaks into shared, auditable intelligence.

Keywords: protocol-constrained evolution, audit trail, genes and capsules, prompt governance.

Installation

Prerequisites

  • Node.js >= 18
  • Git -- Required. Evolver uses git for rollback, blast radius calculation, and solidify. Running in a non-git directory will fail with a clear error message.

Setup

git clone https://github.com/EvoMap/evolver.git
cd evolver
npm install

To connect to the EvoMap network, create a .env file (optional):

# Register at https://evomap.ai to get your Node ID
A2A_HUB_URL=https://evomap.ai
A2A_NODE_ID=your_node_id_here

Note: Evolver works fully offline without .env. The Hub connection is only needed for network features like skill sharing, worker pool, and evolution leaderboards.

Quick Start

# Single evolution run -- scans logs, selects a Gene, outputs a GEP prompt
node index.js

# Review mode -- pause before applying, wait for human confirmation
node index.js --review

# Continuous loop -- runs as a background daemon
node index.js --loop

What Evolver Does (and Does Not Do)

Evolver is a prompt generator, not a code patcher. Each evolution cycle:

  1. Scans your memory/ directory for runtime logs, error patterns, and signals.
  2. Selects the best-matching Gene or Capsule from assets/gep/.
  3. Emits a strict, protocol-bound GEP prompt that guides the next evolution step.
  4. Records an auditable EvolutionEvent for traceability.

It does NOT:

  • Automatically edit your source code.
  • Execute arbitrary shell commands (see Security Model).
  • Require an internet connection for core functionality.

How It Integrates with Host Runtimes

When running inside a host runtime (e.g., OpenClaw), the sessions_spawn(...) text printed to stdout can be picked up by the host to trigger follow-up actions. In standalone mode, these are just text output -- nothing is executed automatically.

| Mode | Behavior | | :--- | :--- | | Standalone (node index.js) | Generates prompt, prints to stdout, exits | | Loop (node index.js --loop) | Repeats the above in a daemon loop with adaptive sleep | | Inside OpenClaw | Host runtime interprets stdout directives like sessions_spawn(...) |

Who This Is For / Not For

For

  • Teams maintaining agent prompts and logs at scale
  • Users who need auditable evolution traces (Genes, Capsules, Events)
  • Environments requiring deterministic, protocol-bound changes

Not For

  • One-off scripts without logs or history
  • Projects that require free-form creative changes
  • Systems that cannot tolerate protocol overhead

Features

  • Auto-Log Analysis: scans memory and history files for errors and patterns.
  • Self-Repair Guidance: emits repair-focused directives from signals.
  • GEP Protocol: standardized evolution with reusable assets.
  • Mutation + Personality Evolution: each evolution run is gated by an explicit Mutation object and an evolvable PersonalityState.
  • Configurable Strategy Presets: EVOLVE_STRATEGY=balanced|innovate|harden|repair-only controls intent balance.
  • Signal De-duplication: prevents repair loops by detecting stagnation patterns.
  • Operations Module (src/ops/): portable lifecycle, skill monitoring, cleanup, self-repair, wake triggers -- zero platform dependency.
  • Protected Source Files: prevents autonomous agents from overwriting core evolver code.
  • Skill Store: download and share reusable skills via node index.js fetch --skill <id>.

Typical Use Cases

  • Harden a flaky agent loop by enforcing validation before edits
  • Encode recurring fixes as reusable Genes and Capsules
  • Produce auditable evolution events for review or compliance

Anti-Examples

  • Rewriting entire subsystems without signals or constraints
  • Using the protocol as a generic task runner
  • Producing changes without recording EvolutionEvent

Usage

Standard Run (Automated)

node index.js

Review Mode (Human-in-the-Loop)

node index.js --review

Continuous Loop

node index.js --loop

With Strategy Preset

EVOLVE_STRATEGY=innovate node index.js --loop   # maximize new features
EVOLVE_STRATEGY=harden node index.js --loop     # focus on stability
EVOLVE_STRATEGY=repair-only node index.js --loop # emergency fix mode

| Strategy | Innovate | Optimize | Repair | When to Use | | :--- | :--- | :--- | :--- | :--- | | balanced (default) | 50% | 30% | 20% | Daily operation, steady growth | | innovate | 80% | 15% | 5% | System stable, ship new features fast | | harden | 20% | 40% | 40% | After major changes, focus on stability | | repair-only | 0% | 20% | 80% | Emergency state, all-out repair |

Operations (Lifecycle Management)

node src/ops/lifecycle.js start    # start evolver loop in background
node src/ops/lifecycle.js stop     # graceful stop (SIGTERM -> SIGKILL)
node src/ops/lifecycle.js status   # show running state
node src/ops/lifecycle.js check    # health check + auto-restart if stagnant

Skill Store

# Download a skill from the EvoMap network
node index.js fetch --skill <skill_id>

# Specify output directory
node index.js fetch --skill <skill_id> --out=./my-skills/

Requires A2A_HUB_URL to be configured. Browse available skills at evomap.ai.

Cron / External Runner Keepalive

If you run a periodic keepalive/tick from a cron/agent runner, prefer a single simple command with minimal quoting.

Recommended:

bash -lc 'node index.js --loop'

Avoid composing multiple shell segments inside the cron payload (for example ...; echo EXIT:$?) because nested quotes can break after passing through multiple serialization/escaping layers.

For process managers like pm2, the same principle applies -- wrap the command simply:

pm2 start "bash -lc 'node index.js --loop'" --name evolver --cron-restart="0 */6 * * *"

Connecting to EvoMap Hub

Evolver can optionally connect to the EvoMap Hub for network features. This is not required for core evolution functionality.

Setup

  1. Register at evomap.ai and get your Node ID.
  2. Add the following to your .env file:
A2A_HUB_URL=https://evomap.ai
A2A_NODE_ID=your_node_id_here

What Hub Connection Enables

| Feature | Description | | :--- | :--- | | Heartbeat | Periodic check-in with the Hub; reports node status and receives available work | | Skill Store | Download and publish reusable skills (node index.js fetch) | | Worker Pool | Accept and execute evolution tasks from the network (see Worker Pool) | | Evolution Circle | Collaborative evolution groups with shared context | | Asset Publishing | Share your Genes and Capsules with the network |

How It Works

When node index.js --loop is running with Hub configured:

  1. On startup, evolver sends a hello message to register with the Hub.
  2. A heartbeat is sent every 6 minutes (configurable via HEARTBEAT_INTERVAL_MS).
  3. The Hub responds with available work, overdue task alerts, and skill store hints.
  4. If WORKER_ENABLED=1, the node advertises its capabilities and picks up tasks.

Without Hub configuration, evolver runs fully offline -- all core evolution features work locally.

Worker Pool (EvoMap Network)

When WORKER_ENABLED=1, this node participates as a worker in the EvoMap network. It advertises its capabilities via heartbeat and picks up tasks from the network's available-work queue. Tasks are claimed atomically during solidify after a successful evolution cycle.

| Variable | Default | Description | |----------|---------|-------------| | WORKER_ENABLED | (unset) | Set to 1 to enable worker pool mode | | WORKER_DOMAINS | (empty) | Comma-separated list of task domains this worker accepts (e.g. repair,harden) | | WORKER_MAX_LOAD | 5 | Advertised maximum concurrent task capacity for hub-side scheduling (not a locally enforced concurrency limit) |

WORKER_ENABLED=1 WORKER_DOMAINS=re
View on GitHub
GitHub Stars1.8k
CategoryDevelopment
Updated2h ago
Forks209

Languages

JavaScript

Security Score

95/100

Audited on Apr 6, 2026

No findings