
Research
/Security News
Mini Shai-Hulud Campaign Hits Red Hat Cloud Services npm Packages
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.
@evomap/evolver
Advanced tools
A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.

evomap.ai | Documentation | Chinese Docs
"Evolution is not optional. Adapt or die."
Three lines
node index.js to generate a GEP-guided evolution prompt.Capability 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.
node index.js
The Capability Evolver inspects runtime history, extracts signals, selects a Gene/Capsule, and emits a strict GEP protocol prompt to guide safe evolution.
For
Not For
EVOLVE_STRATEGY=balanced|innovate|harden|repair-only controls intent balance.src/ops/): portable lifecycle, skill monitoring, cleanup, self-repair, wake triggers -- zero platform dependency.node index.js to generate the prompt.Does this edit code automatically? No. It generates a protocol-bound prompt and assets that guide evolution.
Do I need to use all GEP assets? No. You can start with default Genes and extend over time.
Is this safe in production? Use review mode and validation steps. Treat it as a safety-focused evolution tool, not a live patcher.
This repo includes a protocol-constrained prompt mode based on GEP (Genome Evolution Protocol).
assets/gep/:
assets/gep/genes.jsonassets/gep/capsules.jsonassets/gep/events.jsonlnode index.js
node index.js --review
node index.js --loop
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
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
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 * * *"
This repository is the public distribution.
npm run buildnpm run publish:publicDRY_RUN=true npm run publish:publicRequired env vars:
PUBLIC_REMOTE (default: public)PUBLIC_REPO (e.g. autogame-17/evolver)PUBLIC_OUT_DIR (default: dist-public)PUBLIC_USE_BUILD_OUTPUT (default: true)Optional env vars:
SOURCE_BRANCH (default: main)PUBLIC_BRANCH (default: main)RELEASE_TAG (e.g. v1.0.41)RELEASE_TITLE (e.g. v1.0.41 - GEP protocol)RELEASE_NOTES or RELEASE_NOTES_FILEGITHUB_TOKEN (or GH_TOKEN / GITHUB_PAT) for GitHub Release creationRELEASE_SKIP (true to skip creating a GitHub Release; default is to create)RELEASE_USE_GH (true to use gh CLI instead of GitHub API)PUBLIC_RELEASE_ONLY (true to only create a Release for an existing tag; no publish)MAJOR.MINOR.PATCH
See the full release history on GitHub Releases.
This section describes the execution boundaries and trust model of the Capability Evolver.
| Component | Behavior | Executes Shell Commands? |
|---|---|---|
src/evolve.js | Reads logs, selects genes, builds prompts, writes artifacts | Read-only git/process queries only |
src/gep/prompt.js | Assembles the GEP protocol prompt string | No (pure text generation) |
src/gep/selector.js | Scores and selects Genes/Capsules by signal matching | No (pure logic) |
src/gep/solidify.js | Validates patches via Gene validation commands | Yes (see below) |
index.js (loop recovery) | Prints sessions_spawn(...) text to stdout on crash | No (text output only; execution depends on host runtime) |
solidify.js executes commands listed in a Gene's validation array. To prevent arbitrary command execution, all validation commands are gated by a safety check (isValidationCommandAllowed):
node, npm, or npx are allowed.$(...) are rejected anywhere in the command string.;, &, |, >, < are rejected.cwd set to the repository root.External Gene/Capsule assets ingested via scripts/a2a_ingest.js are staged in an isolated candidate zone. Promotion to local stores (scripts/a2a_promote.js) requires:
--validated flag (operator must verify the asset first).validation commands are audited against the same safety check before promotion. Unsafe commands cause the promotion to be rejected.sessions_spawn OutputThe sessions_spawn(...) strings in index.js and evolve.js are text output to stdout, not direct function calls. Whether they are interpreted depends on the host runtime (e.g., OpenClaw platform). The evolver itself does not invoke sessions_spawn as executable code.
This skill is designed to be environment-agnostic. It uses standard OpenClaw tools by default.
You can inject local preferences (e.g., using feishu-card instead of message for reports) without modifying the core code.
Method 1: Environment Variables
Set EVOLVE_REPORT_TOOL in your .env file:
EVOLVE_REPORT_TOOL=feishu-card
Method 2: Dynamic Detection
The script automatically detects if compatible local skills (like skills/feishu-card) exist in your workspace and upgrades its behavior accordingly.
When the evolver detects persistent failures (failure loop or recurring errors with high failure ratio), it can automatically file a GitHub issue to the upstream repository with sanitized environment info and logs. All sensitive data (tokens, local paths, emails, etc.) is redacted before submission.
| Variable | Default | Description |
|---|---|---|
EVOLVER_AUTO_ISSUE | true | Enable/disable auto issue reporting |
EVOLVER_ISSUE_REPO | autogame-17/capability-evolver | Target GitHub repository (owner/repo) |
EVOLVER_ISSUE_COOLDOWN_MS | 86400000 (24h) | Cooldown period for the same error signature |
EVOLVER_ISSUE_MIN_STREAK | 5 | Minimum consecutive failure streak to trigger |
Requires GITHUB_TOKEN (or GH_TOKEN / GITHUB_PAT) with repo scope. When no token is available, the feature is silently skipped.
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=repair,harden WORKER_MAX_LOAD=3 node index.js --loop
MIT
FAQs
A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.
The npm package @evomap/evolver receives a total of 1,309 weekly downloads. As such, @evomap/evolver popularity was classified as popular.
We found that @evomap/evolver demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.

Research
/Security News
The North Korean malware loader hides in a Packagist-listed package and its GitHub branch to fetch and execute remote code in a likely Contagious Interview-style lure.

Security News
The Rust project is moving toward formal rules on LLM use in contributions after months of internal debate over maintainer burden, code quality, and contributor experience.