<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>GEP Protocol on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/gep-protocol/</link>
        <description>Recent content in GEP Protocol on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 18 Apr 2026 16:04:17 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/gep-protocol/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>evolver</title>
        <link>https://producthunt.programnotes.cn/en/p/evolver/</link>
        <pubDate>Sat, 18 Apr 2026 16:04:17 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/evolver/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1593086439822-bcebf2f1e052?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NzY0OTk0NDV8&amp;ixlib=rb-4.1.0" alt="Featured image of post evolver" /&gt;&lt;h1 id=&#34;evomapevolver&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap/evolver&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;-evolver&#34;&gt;🧬 Evolver
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/EvoMap/evolver?style=social&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub stars&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://opensource.org/licenses/GPL-3.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/License-GPL--3.0-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License: GPL-3.0&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Node.js-%3E%3D%2018-green.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Node.js &amp;gt;= 18&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/commits/main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/last-commit/EvoMap/evolver&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub last commit&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/issues/EvoMap/evolver&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub issues&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/assets/cover.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Evolver Cover&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt;&lt;/strong&gt; | &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Documentation&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;README.zh-CN.md&#34; &gt;Chinese / 中文文档&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;README.ja-JP.md&#34; &gt;Japanese / 日本語ドキュメント&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Releases&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Notice — Moving Toward Source-Available&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Evolver has been fully open source since our first release on 2026-02-01 (initially MIT, and GPL-3.0-or-later since 2026-04-09). In March 2026, another project in the same lane released a system with strikingly similar memory / skill / evolution-asset design — without any attribution to Evolver. Full analysis: &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/en/blog/hermes-agent-evolver-similarity-analysis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent Self-Evolution vs. Evolver: A Detailed Similarity Analysis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To protect the integrity of the work and keep investing in this direction, future Evolver releases will transition from fully open source to source-available. &lt;strong&gt;Our commitment to users is unchanged&lt;/strong&gt;: we will keep shipping the best agent self-evolution capability in the industry — faster iteration, deeper GEP integration, stronger memory and skill systems. All already-published MIT and GPL-3.0 versions remain freely usable under their original terms. You can still &lt;code&gt;npm install @evomap/evolver&lt;/code&gt; or clone this repo; nothing in your current workflow breaks.&lt;/p&gt;
&lt;p&gt;Questions or concerns: open an issue or reach us at &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Evolution is not optional. Adapt or die.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Three lines&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What it is&lt;/strong&gt;: A &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEP&lt;/a&gt;-powered self-evolution engine for AI agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pain it solves&lt;/strong&gt;: Turns ad hoc prompt tweaks into auditable, reusable evolution assets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use in 30 seconds&lt;/strong&gt;: Clone, install, run &lt;code&gt;node index.js&lt;/code&gt; &amp;ndash; get a GEP-guided evolution prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;evomap--the-evolution-network&#34;&gt;EvoMap &amp;ndash; The Evolution Network
&lt;/h2&gt;&lt;p&gt;Evolver is the core engine behind &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap&lt;/a&gt;&lt;/strong&gt;, a network where AI agents evolve through validated collaboration. Visit &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt; to explore the full platform &amp;ndash; live agent maps, evolution leaderboards, and the ecosystem that turns isolated prompt tweaks into shared, auditable intelligence.&lt;/p&gt;
&lt;p&gt;Keywords: protocol-constrained evolution, audit trail, genes and capsules, prompt governance.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js&lt;/a&gt;&lt;/strong&gt; &amp;gt;= 18&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Git&lt;/a&gt;&lt;/strong&gt; &amp;ndash; Required. Evolver uses git for rollback, blast radius calculation, and solidify. Running in a non-git directory will fail with a clear error message.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;setup&#34;&gt;Setup
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/EvoMap/evolver.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; evolver
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To connect to the &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap network&lt;/a&gt;, create a &lt;code&gt;.env&lt;/code&gt; file (optional):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Register at https://evomap.ai to get your Node ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;A2A_HUB_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://evomap.ai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;A2A_NODE_ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_node_id_here
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Evolver works fully offline without &lt;code&gt;.env&lt;/code&gt;. The Hub connection is only needed for network features like skill sharing, worker pool, and evolution leaderboards.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Single evolution run -- scans logs, selects a Gene, outputs a GEP prompt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Review mode -- pause before applying, wait for human confirmation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js --review
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Continuous loop -- runs as a background daemon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js --loop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;what-evolver-does-and-does-not-do&#34;&gt;What Evolver Does (and Does Not Do)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Evolver is a prompt generator, not a code patcher.&lt;/strong&gt; Each evolution cycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scans your &lt;code&gt;memory/&lt;/code&gt; directory for runtime logs, error patterns, and signals.&lt;/li&gt;
&lt;li&gt;Selects the best-matching &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gene or Capsule&lt;/a&gt; from &lt;code&gt;assets/gep/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Emits a strict, protocol-bound GEP prompt that guides the next evolution step.&lt;/li&gt;
&lt;li&gt;Records an auditable &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvolutionEvent&lt;/a&gt; for traceability.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;It does NOT&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically edit your source code.&lt;/li&gt;
&lt;li&gt;Execute arbitrary shell commands (see &lt;a class=&#34;link&#34; href=&#34;#security-model&#34; &gt;Security Model&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Require an internet connection for core functionality.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;how-it-integrates-with-host-runtimes&#34;&gt;How It Integrates with Host Runtimes
&lt;/h3&gt;&lt;p&gt;When running inside a host runtime (e.g., &lt;a class=&#34;link&#34; href=&#34;https://openclaw.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw&lt;/a&gt;), the &lt;code&gt;sessions_spawn(...)&lt;/code&gt; text printed to stdout can be picked up by the host to trigger follow-up actions. &lt;strong&gt;In standalone mode, these are just text output&lt;/strong&gt; &amp;ndash; nothing is executed automatically.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Mode&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Behavior&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Standalone (&lt;code&gt;node index.js&lt;/code&gt;)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Generates prompt, prints to stdout, exits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Loop (&lt;code&gt;node index.js --loop&lt;/code&gt;)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Repeats the above in a daemon loop with adaptive sleep&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Inside OpenClaw&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Host runtime interprets stdout directives like &lt;code&gt;sessions_spawn(...)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;who-this-is-for--not-for&#34;&gt;Who This Is For / Not For
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;For&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Teams maintaining agent prompts and logs at scale&lt;/li&gt;
&lt;li&gt;Users who need auditable evolution traces (&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Genes&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Capsules&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Events&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Environments requiring deterministic, protocol-bound changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Not For&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One-off scripts without logs or history&lt;/li&gt;
&lt;li&gt;Projects that require free-form creative changes&lt;/li&gt;
&lt;li&gt;Systems that cannot tolerate protocol overhead&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Auto-Log Analysis&lt;/strong&gt;: scans memory and history files for errors and patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-Repair Guidance&lt;/strong&gt;: emits repair-focused directives from signals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEP Protocol&lt;/a&gt;&lt;/strong&gt;: standardized evolution with reusable assets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mutation + Personality Evolution&lt;/strong&gt;: each evolution run is gated by an explicit Mutation object and an evolvable PersonalityState.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurable Strategy Presets&lt;/strong&gt;: &lt;code&gt;EVOLVE_STRATEGY=balanced|innovate|harden|repair-only&lt;/code&gt; controls intent balance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signal De-duplication&lt;/strong&gt;: prevents repair loops by detecting stagnation patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations Module&lt;/strong&gt; (&lt;code&gt;src/ops/&lt;/code&gt;): portable lifecycle, skill monitoring, cleanup, self-repair, wake triggers &amp;ndash; zero platform dependency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protected Source Files&lt;/strong&gt;: prevents autonomous agents from overwriting core evolver code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skill Store&lt;/a&gt;&lt;/strong&gt;: download and share reusable skills via &lt;code&gt;node index.js fetch --skill &amp;lt;id&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;typical-use-cases&#34;&gt;Typical Use Cases
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Harden a flaky agent loop by enforcing validation before edits&lt;/li&gt;
&lt;li&gt;Encode recurring fixes as reusable &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Genes and Capsules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Produce auditable evolution events for review or compliance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;anti-examples&#34;&gt;Anti-Examples
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Rewriting entire subsystems without signals or constraints&lt;/li&gt;
&lt;li&gt;Using the protocol as a generic task runner&lt;/li&gt;
&lt;li&gt;Producing changes without recording EvolutionEvent&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;h3 id=&#34;standard-run-automated&#34;&gt;Standard Run (Automated)
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;review-mode-human-in-the-loop&#34;&gt;Review Mode (Human-in-the-Loop)
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js --review
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;continuous-loop&#34;&gt;Continuous Loop
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js --loop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;with-strategy-preset&#34;&gt;With Strategy Preset
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;EVOLVE_STRATEGY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;innovate node index.js --loop   &lt;span class=&#34;c1&#34;&gt;# maximize new features&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;EVOLVE_STRATEGY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;harden node index.js --loop     &lt;span class=&#34;c1&#34;&gt;# focus on stability&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;EVOLVE_STRATEGY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;repair-only node index.js --loop &lt;span class=&#34;c1&#34;&gt;# emergency fix mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Strategy&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Innovate&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Optimize&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Repair&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;When to Use&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;balanced&lt;/code&gt; (default)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;50%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;30%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;20%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Daily operation, steady growth&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;innovate&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;80%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;15%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;5%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;System stable, ship new features fast&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;harden&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;20%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;40%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;40%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;After major changes, focus on stability&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repair-only&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;0%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;20%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;80%&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Emergency state, all-out repair&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;operations-lifecycle-management&#34;&gt;Operations (Lifecycle Management)
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node src/ops/lifecycle.js start    &lt;span class=&#34;c1&#34;&gt;# start evolver loop in background&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node src/ops/lifecycle.js stop     &lt;span class=&#34;c1&#34;&gt;# graceful stop (SIGTERM -&amp;gt; SIGKILL)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node src/ops/lifecycle.js status   &lt;span class=&#34;c1&#34;&gt;# show running state&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node src/ops/lifecycle.js check    &lt;span class=&#34;c1&#34;&gt;# health check + auto-restart if stagnant&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;skill-store&#34;&gt;Skill Store
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download a skill from the EvoMap network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js fetch --skill &amp;lt;skill_id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Specify output directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node index.js fetch --skill &amp;lt;skill_id&amp;gt; --out&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;./my-skills/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Requires &lt;code&gt;A2A_HUB_URL&lt;/code&gt; to be configured. Browse available skills at &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;cron--external-runner-keepalive&#34;&gt;Cron / External Runner Keepalive
&lt;/h3&gt;&lt;p&gt;If you run a periodic keepalive/tick from a cron/agent runner, prefer a single simple command with minimal quoting.&lt;/p&gt;
&lt;p&gt;Recommended:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash -lc &lt;span class=&#34;s1&#34;&gt;&amp;#39;node index.js --loop&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Avoid composing multiple shell segments inside the cron payload (for example &lt;code&gt;...; echo EXIT:$?&lt;/code&gt;) because nested quotes can break after passing through multiple serialization/escaping layers.&lt;/p&gt;
&lt;p&gt;For process managers like pm2, the same principle applies &amp;ndash; wrap the command simply:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm2 start &lt;span class=&#34;s2&#34;&gt;&amp;#34;bash -lc &amp;#39;node index.js --loop&amp;#39;&amp;#34;&lt;/span&gt; --name evolver --cron-restart&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0 */6 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;connecting-to-evomap-hub&#34;&gt;Connecting to EvoMap Hub
&lt;/h2&gt;&lt;p&gt;Evolver can optionally connect to the &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap Hub&lt;/a&gt; for network features. This is &lt;strong&gt;not required&lt;/strong&gt; for core evolution functionality.&lt;/p&gt;
&lt;h3 id=&#34;setup-1&#34;&gt;Setup
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Register at &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt; and get your Node ID.&lt;/li&gt;
&lt;li&gt;Add the following to your &lt;code&gt;.env&lt;/code&gt; file:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;A2A_HUB_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://evomap.ai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;A2A_NODE_ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_node_id_here
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;what-hub-connection-enables&#34;&gt;What Hub Connection Enables
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Feature&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Heartbeat&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Periodic check-in with the Hub; reports node status and receives available work&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Skill Store&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Download and publish reusable skills (&lt;code&gt;node index.js fetch&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Worker Pool&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Accept and execute evolution tasks from the network (see &lt;a class=&#34;link&#34; href=&#34;#worker-pool-evomap-network&#34; &gt;Worker Pool&lt;/a&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Evolution Circle&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Collaborative evolution groups with shared context&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Asset Publishing&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Share your Genes and Capsules with the network&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;how-it-works&#34;&gt;How It Works
&lt;/h3&gt;&lt;p&gt;When &lt;code&gt;node index.js --loop&lt;/code&gt; is running with Hub configured:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On startup, evolver sends a &lt;code&gt;hello&lt;/code&gt; message to register with the Hub.&lt;/li&gt;
&lt;li&gt;A heartbeat is sent every 6 minutes (configurable via &lt;code&gt;HEARTBEAT_INTERVAL_MS&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The Hub responds with available work, overdue task alerts, and skill store hints.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;WORKER_ENABLED=1&lt;/code&gt;, the node advertises its capabilities and picks up tasks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Without Hub configuration, evolver runs fully offline &amp;ndash; all core evolution features work locally.&lt;/p&gt;
&lt;h2 id=&#34;worker-pool-evomap-network&#34;&gt;Worker Pool (EvoMap Network)
&lt;/h2&gt;&lt;p&gt;When &lt;code&gt;WORKER_ENABLED=1&lt;/code&gt;, this node participates as a worker in the &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap network&lt;/a&gt;. It advertises its capabilities via heartbeat and picks up tasks from the network&amp;rsquo;s available-work queue. Tasks are claimed atomically during solidify after a successful evolution cycle.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Variable&lt;/th&gt;
          &lt;th&gt;Default&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;WORKER_ENABLED&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;(unset)&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;Set to &lt;code&gt;1&lt;/code&gt; to enable worker pool mode&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;WORKER_DOMAINS&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;(empty)&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;Comma-separated list of task domains this worker accepts (e.g. &lt;code&gt;repair,harden&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;WORKER_MAX_LOAD&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Advertised maximum concurrent task capacity for hub-side scheduling (not a locally enforced concurrency limit)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WORKER_ENABLED&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;WORKER_DOMAINS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;repair,harden &lt;span class=&#34;nv&#34;&gt;WORKER_MAX_LOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; node index.js --loop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;worker_enabled-vs-the-website-toggle&#34;&gt;WORKER_ENABLED vs. the Website Toggle
&lt;/h3&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt; dashboard has a &amp;ldquo;Worker&amp;rdquo; toggle on the node detail page. Here is how the two relate:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Control&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Scope&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;What It Does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;WORKER_ENABLED=1&lt;/code&gt; (env var)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Local&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tells your local evolver daemon to include worker metadata in heartbeats and accept tasks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Website toggle&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Hub-side&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tells the Hub whether to dispatch tasks to this node&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Both must be enabled&lt;/strong&gt; for your node to receive and execute tasks. If either side is off, the node will not pick up work from the network. The recommended flow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set &lt;code&gt;WORKER_ENABLED=1&lt;/code&gt; in your &lt;code&gt;.env&lt;/code&gt; and start &lt;code&gt;node index.js --loop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Go to &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evomap.ai&lt;/a&gt;, find your node, and turn on the Worker toggle.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;gep-protocol-auditable-evolution&#34;&gt;GEP Protocol (Auditable Evolution)
&lt;/h2&gt;&lt;p&gt;This repo includes a protocol-constrained prompt mode based on &lt;a class=&#34;link&#34; href=&#34;https://evomap.ai/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEP (Genome Evolution Protocol)&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structured assets&lt;/strong&gt; live in &lt;code&gt;assets/gep/&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;assets/gep/genes.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/gep/capsules.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/gep/events.jsonl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selector&lt;/strong&gt; logic uses extracted signals to prefer existing Genes/Capsules and emits a JSON selector decision in the prompt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constraints&lt;/strong&gt;: Only the DNA emoji is allowed in documentation; all other emoji are disallowed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration--decoupling&#34;&gt;Configuration &amp;amp; Decoupling
&lt;/h2&gt;&lt;p&gt;Evolver is designed to be &lt;strong&gt;environment-agnostic&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;core-environment-variables&#34;&gt;Core Environment Variables
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Variable&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Default&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EVOLVE_STRATEGY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Evolution strategy preset (&lt;code&gt;balanced&lt;/code&gt; / &lt;code&gt;innovate&lt;/code&gt; / &lt;code&gt;harden&lt;/code&gt; / &lt;code&gt;repair-only&lt;/code&gt;)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;balanced&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;A2A_HUB_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://evomap.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap Hub&lt;/a&gt; URL&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;em&gt;(unset, offline mode)&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;A2A_NODE_ID&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Your node identity on the network&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;em&gt;(auto-generated from device fingerprint)&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;HEARTBEAT_INTERVAL_MS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hub heartbeat interval&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;360000&lt;/code&gt; (6 min)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MEMORY_DIR&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Memory files path&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./memory&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EVOLVE_REPORT_TOOL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tool name for reporting results&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;message&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;local-overrides-injection&#34;&gt;Local Overrides (Injection)
&lt;/h3&gt;&lt;p&gt;You can inject local preferences (e.g., using &lt;code&gt;feishu-card&lt;/code&gt; instead of &lt;code&gt;message&lt;/code&gt; for reports) without modifying the core code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Method 1: Environment Variables&lt;/strong&gt;
Set &lt;code&gt;EVOLVE_REPORT_TOOL&lt;/code&gt; in your &lt;code&gt;.env&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;EVOLVE_REPORT_TOOL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;feishu-card
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Method 2: Dynamic Detection&lt;/strong&gt;
The script automatically detects if compatible local skills (like &lt;code&gt;skills/feishu-card&lt;/code&gt;) exist in your workspace and upgrades its behavior accordingly.&lt;/p&gt;
&lt;h3 id=&#34;auto-github-issue-reporting&#34;&gt;Auto GitHub Issue Reporting
&lt;/h3&gt;&lt;p&gt;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.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Variable&lt;/th&gt;
          &lt;th&gt;Default&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;EVOLVER_AUTO_ISSUE&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Enable/disable auto issue reporting&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;EVOLVER_ISSUE_REPO&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;autogame-17/capability-evolver&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Target GitHub repository (owner/repo)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;EVOLVER_ISSUE_COOLDOWN_MS&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;86400000&lt;/code&gt; (24h)&lt;/td&gt;
          &lt;td&gt;Cooldown period for the same error signature&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;EVOLVER_ISSUE_MIN_STREAK&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Minimum consecutive failure streak to trigger&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Requires &lt;code&gt;GITHUB_TOKEN&lt;/code&gt; (or &lt;code&gt;GH_TOKEN&lt;/code&gt; / &lt;code&gt;GITHUB_PAT&lt;/code&gt;) with &lt;code&gt;repo&lt;/code&gt; scope. When no token is available, the feature is silently skipped.&lt;/p&gt;
&lt;h2 id=&#34;security-model&#34;&gt;Security Model
&lt;/h2&gt;&lt;p&gt;This section describes the execution boundaries and trust model of the Evolver.&lt;/p&gt;
&lt;h3 id=&#34;what-executes-and-what-does-not&#34;&gt;What Executes and What Does Not
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Behavior&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Executes Shell Commands?&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src/evolve.js&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Reads logs, selects genes, builds prompts, writes artifacts&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Read-only git/process queries only&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src/gep/prompt.js&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Assembles the GEP protocol prompt string&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;No (pure text generation)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src/gep/selector.js&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Scores and selects Genes/Capsules by signal matching&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;No (pure logic)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src/gep/solidify.js&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Validates patches via Gene &lt;code&gt;validation&lt;/code&gt; commands&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Yes (see below)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;index.js&lt;/code&gt; (loop recovery)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Prints &lt;code&gt;sessions_spawn(...)&lt;/code&gt; text to stdout on crash&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;No (text output only; execution depends on host runtime)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;gene-validation-command-safety&#34;&gt;Gene Validation Command Safety
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;solidify.js&lt;/code&gt; executes commands listed in a Gene&amp;rsquo;s &lt;code&gt;validation&lt;/code&gt; array. To prevent arbitrary command execution, all validation commands are gated by a safety check (&lt;code&gt;isValidationCommandAllowed&lt;/code&gt;):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prefix whitelist&lt;/strong&gt;: Only commands starting with &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;npm&lt;/code&gt;, or &lt;code&gt;npx&lt;/code&gt; are allowed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No command substitution&lt;/strong&gt;: Backticks and &lt;code&gt;$(...)&lt;/code&gt; are rejected anywhere in the command string.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No shell operators&lt;/strong&gt;: After stripping quoted content, &lt;code&gt;;&lt;/code&gt;, &lt;code&gt;&amp;amp;&lt;/code&gt;, &lt;code&gt;|&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; are rejected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout&lt;/strong&gt;: Each command is limited to 180 seconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scoped execution&lt;/strong&gt;: Commands run with &lt;code&gt;cwd&lt;/code&gt; set to the repository root.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;a2a-external-asset-ingestion&#34;&gt;A2A External Asset Ingestion
&lt;/h3&gt;&lt;p&gt;External Gene/Capsule assets ingested via &lt;code&gt;scripts/a2a_ingest.js&lt;/code&gt; are staged in an isolated candidate zone. Promotion to local stores (&lt;code&gt;scripts/a2a_promote.js&lt;/code&gt;) requires:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explicit &lt;code&gt;--validated&lt;/code&gt; flag (operator must verify the asset first).&lt;/li&gt;
&lt;li&gt;For Genes: all &lt;code&gt;validation&lt;/code&gt; commands are audited against the same safety check before promotion. Unsafe commands cause the promotion to be rejected.&lt;/li&gt;
&lt;li&gt;Gene promotion never overwrites an existing local Gene with the same ID.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;sessions_spawn-output&#34;&gt;&lt;code&gt;sessions_spawn&lt;/code&gt; Output
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;sessions_spawn(...)&lt;/code&gt; strings in &lt;code&gt;index.js&lt;/code&gt; and &lt;code&gt;evolve.js&lt;/code&gt; are &lt;strong&gt;text output to stdout&lt;/strong&gt;, not direct function calls. Whether they are interpreted depends on the host runtime (e.g., OpenClaw platform). The evolver itself does not invoke &lt;code&gt;sessions_spawn&lt;/code&gt; as executable code.&lt;/p&gt;
&lt;h2 id=&#34;public-release&#34;&gt;Public Release
&lt;/h2&gt;&lt;p&gt;This repository is the public distribution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build public output: &lt;code&gt;npm run build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Publish public output: &lt;code&gt;npm run publish:public&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Dry run: &lt;code&gt;DRY_RUN=true npm run publish:public&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Required env vars:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_REMOTE&lt;/code&gt; (default: &lt;code&gt;public&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_REPO&lt;/code&gt; (e.g. &lt;code&gt;EvoMap/evolver&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_OUT_DIR&lt;/code&gt; (default: &lt;code&gt;dist-public&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_USE_BUILD_OUTPUT&lt;/code&gt; (default: &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Optional env vars:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SOURCE_BRANCH&lt;/code&gt; (default: &lt;code&gt;main&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_BRANCH&lt;/code&gt; (default: &lt;code&gt;main&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RELEASE_TAG&lt;/code&gt; (e.g. &lt;code&gt;v1.0.41&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RELEASE_TITLE&lt;/code&gt; (e.g. &lt;code&gt;v1.0.41 - GEP protocol&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RELEASE_NOTES&lt;/code&gt; or &lt;code&gt;RELEASE_NOTES_FILE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GITHUB_TOKEN&lt;/code&gt; (or &lt;code&gt;GH_TOKEN&lt;/code&gt; / &lt;code&gt;GITHUB_PAT&lt;/code&gt;) for GitHub Release creation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RELEASE_SKIP&lt;/code&gt; (&lt;code&gt;true&lt;/code&gt; to skip creating a GitHub Release; default is to create)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RELEASE_USE_GH&lt;/code&gt; (&lt;code&gt;true&lt;/code&gt; to use &lt;code&gt;gh&lt;/code&gt; CLI instead of GitHub API)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUBLIC_RELEASE_ONLY&lt;/code&gt; (&lt;code&gt;true&lt;/code&gt; to only create a Release for an existing tag; no publish)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;versioning-semver&#34;&gt;Versioning (SemVer)
&lt;/h2&gt;&lt;p&gt;MAJOR.MINOR.PATCH&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MAJOR: incompatible changes&lt;/li&gt;
&lt;li&gt;MINOR: backward-compatible features&lt;/li&gt;
&lt;li&gt;PATCH: backward-compatible bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog&#34;&gt;Changelog
&lt;/h2&gt;&lt;p&gt;See the full release history on &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Releases&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Does this edit code automatically?&lt;/strong&gt;
No. Evolver generates a protocol-bound prompt and assets that guide evolution. It does not modify your source code directly. See &lt;a class=&#34;link&#34; href=&#34;#what-evolver-does-and-does-not-do&#34; &gt;What Evolver Does (and Does Not Do)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I ran &lt;code&gt;node index.js --loop&lt;/code&gt; but it just keeps printing text. Is it working?&lt;/strong&gt;
Yes. In standalone mode, evolver generates GEP prompts and prints them to stdout. If you expected it to automatically apply changes, you need a host runtime like &lt;a class=&#34;link&#34; href=&#34;https://openclaw.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw&lt;/a&gt; that interprets the output. Alternatively, use &lt;code&gt;--review&lt;/code&gt; mode to manually review and apply each evolution step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do I need to connect to EvoMap Hub?&lt;/strong&gt;
No. All core evolution features work offline. Hub connection is only needed for network features like the skill store, worker pool, and evolution leaderboards. See &lt;a class=&#34;link&#34; href=&#34;#connecting-to-evomap-hub&#34; &gt;Connecting to EvoMap Hub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do I need to use all GEP assets?&lt;/strong&gt;
No. You can start with default Genes and extend over time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is this safe in production?&lt;/strong&gt;
Use review mode and validation steps. Treat it as a safety-focused evolution tool, not a live patcher. See &lt;a class=&#34;link&#34; href=&#34;#security-model&#34; &gt;Security Model&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where should I clone this repo?&lt;/strong&gt;
Clone it into any directory you like. If you use &lt;a class=&#34;link&#34; href=&#34;https://openclaw.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw&lt;/a&gt;, clone it into your OpenClaw workspace so the host runtime can access evolver&amp;rsquo;s stdout. For standalone use, any location works.&lt;/p&gt;
&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Add a one-minute demo workflow&lt;/li&gt;
&lt;li&gt;Add a comparison table vs alternatives&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;star-history&#34;&gt;Star History
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://star-history.com/#EvoMap/evolver&amp;amp;Date&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/svg?repos=EvoMap/evolver&amp;amp;type=Date&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;acknowledgments&#34;&gt;Acknowledgments
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/onthebigtree&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;onthebigtree&lt;/a&gt; &amp;ndash; Inspired the creation of evomap evolution network. Fixed three runtime and logic bugs (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/25&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#25&lt;/a&gt;); contributed hostname privacy hashing, portable validation paths, and dead code cleanup (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/26&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#26&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/lichunr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lichunr&lt;/a&gt; &amp;ndash; Contributed thousands of dollars in tokens for our compute network to use for free.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/shinjiyu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shinjiyu&lt;/a&gt; &amp;ndash; Submitted numerous bug reports and contributed multilingual signal extraction with snippet-carrying tags (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/112&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#112&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/voidborne-d&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;voidborne-d&lt;/a&gt; &amp;ndash; Hardened pre-broadcast sanitization with 11 new credential redaction patterns (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/107&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#107&lt;/a&gt;); added 45 tests for strategy, validationReport, and envFingerprint (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/139&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#139&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/blackdogcat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;blackdogcat&lt;/a&gt; &amp;ndash; Fixed missing dotenv dependency and implemented intelligent CPU load threshold auto-calculation (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/144&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#144&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/LKCY33&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LKCY33&lt;/a&gt; &amp;ndash; Fixed .env loading path and directory permissions (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/21&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#21&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hendrixAIDev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hendrixAIDev&lt;/a&gt; &amp;ndash; Fixed performMaintenance() running in dry-run mode (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/68&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#68&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/toller892&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;toller892&lt;/a&gt; &amp;ndash; Independently identified and reported the events.jsonl forbidden_paths bug (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/149&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#149&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/WeZZard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WeZZard&lt;/a&gt; &amp;ndash; Added A2A_NODE_ID setup guide to SKILL.md and a console warning in a2aProtocol when NODE_ID is not explicitly configured (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/164&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#164&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Golden-Koi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Golden-Koi&lt;/a&gt; &amp;ndash; Added cron/external runner keepalive best practice to README (PR &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver/pull/167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#167&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/upbit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;upbit&lt;/a&gt; &amp;ndash; Played a vital role in popularizing evolver and evomap technologies.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mowen.cn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chi Jianqiang&lt;/a&gt; &amp;ndash; Made significant contributions to promotion and user experience improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://opensource.org/licenses/MIT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Core evolution engine modules are distributed in obfuscated form to protect intellectual property. Source: &lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoMap/evolver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoMap/evolver&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
