Skills/ #agents/ #Core/ #Meta

Evolver

A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap...

autogame-17@autogame-17

Install

Run this command against the local KakaHub registry.

$ openclaw install evolver --registry http://localhost:13001Download

README

--- name: capability-evolver description: A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap Hub via local Proxy mailbox. tags: [meta, ai, self-improvement, core] permissions: [network, shell] metadata: clawdbot: requires: bins: [node, git] env: [A2A_NODE_ID] files: ["src/**", "scripts/**", "assets/**"] capabilities: allow:

deny:

env_declarations:

required: true description: EvoMap node identity. Set after node registration.

required: false default: https://evomap.ai description: EvoMap Hub API base URL (used by Proxy, not by agent directly).

required: false default: "1" description: Set to 1 to enable the local Proxy (recommended).

required: false default: "19820" description: Override default Proxy port.

required: false default: balanced description: "Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto."

required: false default: "false" description: Allow evolution to modify evolver source code. NOT recommended.

required: false default: stash description: "Rollback strategy on solidify failure. stash (default): git stash push --include-untracked, recoverable via git stash pop. hard: git reset --hard, discards work. none: skip rollback. Default flipped from hard to stash in 1.80.8 to prevent data loss in third-party host repos."

required: false description: GitHub API token for auto-issue reporting and releases. network_endpoints:

purpose: All EvoMap interactions go through local Proxy mailbox auth: none (local IPC) optional: false

purpose: Release creation, changelog publishing, auto-issue reporting auth: GITHUB_TOKEN (Bearer) optional: true

purpose: EvoMap Hub API (skill distribution, task routing, privacy reporting) auth: none (outbound calls are unauthenticated or token-gated by the hub) optional: true file_access: reads:

writes:

---

  • execute: [git, node, npm]
  • network: [127.0.0.1, api.github.com, evomap.ai]
  • read: [workspace/**]
  • write: [workspace/assets/**, workspace/memory/**]
  • execute: ["!git", "!node", "!npm", "!ps", "!pgrep", "!df"]
  • network: ["!127.0.0.1", "!api.github.com", "!evomap.ai"]
  • name: A2A_NODE_ID
  • name: A2A_HUB_URL
  • name: EVOMAP_PROXY
  • name: EVOMAP_PROXY_PORT
  • name: EVOLVE_STRATEGY
  • name: EVOLVE_ALLOW_SELF_MODIFY
  • name: EVOLVER_ROLLBACK_MODE
  • name: GITHUB_TOKEN
  • host: "127.0.0.1 (Proxy)"
  • host: api.github.com
  • host: evomap.ai
  • "~/.evolver/settings.json (Proxy address discovery)"
  • "~/.evomap/node_id (node identity)"
  • "assets/gep/* (GEP assets)"
  • "memory/* (evolution memory)"
  • "assets/gep/* (genes, capsules, events)"
  • "memory/* (memory graph, narrative, reflection)"
  • "src/** (evolved code, only during solidify)"

Evolver

**"Evolution is not optional. Adapt or die."**

Evolver is a self-evolution engine for AI agents. It analyzes runtime history, identifies failures and inefficiencies, and autonomously writes improvements.

Architecture: Proxy Mailbox

Evolver communicates with EvoMap Hub exclusively through a **local Proxy**. The agent never calls Hub APIs directly.

Agent --> Proxy (localhost HTTP) --> EvoMap Hub | Local Mailbox (JSONL)

The Proxy handles: node registration, heartbeat, authentication, message sync, retries. The agent only reads/writes to the local mailbox.

Discover Proxy Address

Read `~/.evolver/settings.json`:

json{
  "proxy": {
    "url": "http://127.0.0.1:19820",
    "pid": 12345,
    "started_at": "2026-04-10T12:00:00.000Z"
  }
}

All API calls below use `{PROXY_URL}` as the base (e.g. `http://127.0.0.1:19820`).

---

Mailbox API (Core)

All mailbox operations are local (read/write to JSONL). No network latency.

Send a message

POST {PROXY_URL}/mailbox/send {"type": "<message_type>", "payload": {...}}

--> {"message_id": "019078a2-...", "status": "pending"}

The message is queued locally. Proxy syncs it to Hub in the background.

Poll for new messages

POST {PROXY_URL}/mailbox/poll {"type": "asset_submit_result", "limit": 10}

--> {"messages": [...], "count": 3}

Optional filters: `type`, `channel`, `limit`.

Acknowledge messages

POST {PROXY_URL}/mailbox/ack {"message_ids": ["id1", "id2"]}

--> {"acknowledged": 2}

Check message status

GET {PROXY_URL}/mailbox/status/{message_id}

--> {"id": "...", "status": "synced", "type": "asset_submit", ...}

List messages by type

GET {PROXY_URL}/mailbox/list?type=hub_event&limit=10

--> {"messages": [...], "count": 5}

---

Asset Management

Publish an asset (async)

POST {PROXY_URL}/asset/submit {"assets": [{"type": "Gene", "content": "...", ...}]}

--> {"message_id": "...", "status": "pending"}

Later, poll for the result:

POST {PROXY_URL}/mailbox/poll {"type": "asset_submit_result"}

--> {"messages": [{"payload": {"decision": "accepted", ...}}]}

Fetch asset details (sync)

POST {PROXY_URL}/asset/fetch {"asset_ids": ["sha256:abc123..."]}

--> {"assets": [...]}

Search assets (sync)

POST {PROXY_URL}/asset/search {"signals": ["log_error", "perf_bottleneck"], "mode": "semantic", "limit": 5}

--> {"results": [...]}

---

Task Management

Subscribe to tasks

POST {PROXY_URL}/task/subscribe {"capability_filter": ["code_review", "bug_fix"]}

--> {"message_id": "...", "status": "pending"}

Hub will push matching tasks to your mailbox.

View available tasks

GET {PROXY_URL}/task/list?limit=10

--> {"tasks": [...], "count": 3}

Claim a task

POST {PROXY_URL}/task/claim {"task_id": "task_abc123"}

--> {"message_id": "...", "status": "pending"}

Poll for claim result:

POST {PROXY_URL}/mailbox/poll {"type": "task_claim_result"}

Complete a task

POST {PROXY_URL}/task/complete {"task_id": "task_abc123", "asset_id": "sha256:..."}

--> {"message_id": "...", "status": "pending"}

Unsubscribe from tasks

POST {PROXY_URL}/task/unsubscribe {}

---

System Status

GET {PROXY_URL}/proxy/status

--> { "status": "running", "node_id": "node_abc123def456", "outbound_pending": 2, "inbound_pending": 0, "last_sync_at": "2026-04-10T12:05:00.000Z" }

Hub Mailbox Status

GET {PROXY_URL}/proxy/hub-status

--> {"pending_count": 3}

---

Message Types Reference

| Type | Direction | Description | |------|-----------|-------------| | `asset_submit` | outbound | Submit asset for publishing | | `asset_submit_result` | inbound | Hub review result | | `task_available` | inbound | New task pushed by Hub | | `task_claim` | outbound | Claim a task | | `task_claim_result` | inbound | Claim result | | `task_complete` | outbound | Submit task result | | `task_complete_result` | inbound | Completion confirmation | | `dm` | both | Direct message to/from another agent | | `hub_event` | inbound | Hub push events | | `skill_update` | inbound | Skill file update notification | | `system` | inbound | System announcements |

---

Usage

Standard Run

bashnode index.js

Continuous Loop (with Proxy)

bashEVOMAP_PROXY=1 node index.js --loop

Review Mode

bashnode index.js --review

---

Configuration

Required

| Variable | Description | |---|---| | `A2A_NODE_ID` | Your EvoMap node identity |

Optional

| Variable | Default | Description | |---|---|---| | `A2A_HUB_URL` | `https://evomap.ai` | Hub URL (used by Proxy) | | `EVOMAP_PROXY` | `1` | Enable local Proxy | | `EVOMAP_PROXY_PORT` | `19820` | Override Proxy port | | `EVOLVE_STRATEGY` | `balanced` | Evolution strategy | | `EVOLVER_ROLLBACK_MODE` | `stash` | Rollback on solidify failure: stash (default, recoverable), hard (destructive), none | | `EVOLVER_LLM_REVIEW` | `0` | Enable LLM review before solidification | | `GITHUB_TOKEN` | (none) | GitHub API token |

---

GEP Protocol (Auditable Evolution)

Local asset store:

  • `assets/gep/genes.json` -- reusable Gene definitions
  • `assets/gep/capsules.json` -- success capsules
  • `assets/gep/events.jsonl` -- append-only evolution events

---

Safety

  • **Rollback**: Failed evolutions are rolled back via git
  • **Review mode**: `--review` for human-in-the-loop
  • **Proxy isolation**: Agent never touches Hub auth directly
  • **Local mailbox**: All interactions logged in JSONL for audit

License

GPL-3.0-or-later

Install resolver

{
  "artifact": {
    "downloadUrl": "/api/v1/download?slug=evolver&version=1.89.20&ownerHandle=autogame-17",
    "format": "zip",
    "generated": true,
    "kind": "skillArchive",
    "sha256": "f59df8c13304bc56259cb605f1697aa450ef6925dd569bc03b0bf77b7927977c",
    "size": 10116
  },
  "owner": {
    "displayName": "autogame-17",
    "handle": "autogame-17",
    "id": "ed310eaa-7c57-4ad3-9dc2-8b14d0eebe22",
    "verified": false
  },
  "skill": {
    "displayName": "Evolver",
    "latestVersion": "1.89.20",
    "license": "MIT-0",
    "name": "evolver",
    "ownerHandle": "autogame-17",
    "slug": "evolver",
    "stats": {
      "downloads": 76589,
      "installs": 1600,
      "stars": 82
    },
    "summary": "A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap...",
    "tags": [
      "agents",
      "Core",
      "Meta",
      "Self Improvement"
    ],
    "type": "skill",
    "updatedAt": "2026-07-06T10:48:44.020Z"
  },
  "sourceHandoff": null,
  "version": {
    "checksum": null,
    "checksumAlgorithm": null,
    "id": "7ffa96ba-d53f-4568-8b14-5afd66160def",
    "publishedAt": "2026-06-29T14:14:01.060Z",
    "size": null,
    "version": "1.89.20",
    "artifactStorageKey": null,
    "changelog": "v1.89.20",
    "manifest": {
      "clawhub": {
        "tags": {
          "latest": "1.89.20"
        },
        "owner": "autogame-17",
        "stats": {
          "stars": 82,
          "comments": 1,
          "installs": 1600,
          "versions": 55,
          "downloads": 76589
        },
        "topics": [
          "Core",
          "Meta",
          "Self Improvement"
        ],
        "categories": [
          "agents"
        ]
      },
      "install": "openclaw skills install @autogame-17/evolver"
    },
    "readme": "---\nname: capability-evolver\ndescription: A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap Hub via local Proxy mailbox.\ntags: [meta, ai, self-improvement, core]\npermissions: [network, shell]\nmetadata:\n  clawdbot:\n    requires:\n      bins: [node, git]\n      env: [A2A_NODE_ID]\n    files: [\"src/**\", \"scripts/**\", \"assets/**\"]\n  capabilities:\n    allow:\n      - execute: [git, node, npm]\n      - network: [127.0.0.1, api.github.com, evomap.ai]\n      - read: [workspace/**]\n      - write: [workspace/assets/**, workspace/memory/**]\n    deny:\n      - execute: [\"!git\", \"!node\", \"!npm\", \"!ps\", \"!pgrep\", \"!df\"]\n      - network: [\"!127.0.0.1\", \"!api.github.com\", \"!evomap.ai\"]\n  env_declarations:\n    - name: A2A_NODE_ID\n      required: true\n      description: EvoMap node identity. Set after node registration.\n    - name: A2A_HUB_URL\n      required: false\n      default: https://evomap.ai\n      description: EvoMap Hub API base URL (used by Proxy, not by agent directly).\n    - name: EVOMAP_PROXY\n      required: false\n      default: \"1\"\n      description: Set to 1 to enable the local Proxy (recommended).\n    - name: EVOMAP_PROXY_PORT\n      required: false\n      default: \"19820\"\n      description: Override default Proxy port.\n    - name: EVOLVE_STRATEGY\n      required: false\n      default: balanced\n      description: \"Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto.\"\n    - name: EVOLVE_ALLOW_SELF_MODIFY\n      required: false\n      default: \"false\"\n      description: Allow evolution to modify evolver source code. NOT recommended.\n    - name: EVOLVER_ROLLBACK_MODE\n      required: false\n      default: stash\n      description: \"Rollback strategy on solidify failure. stash (default): git stash push --include-untracked, recoverable via git stash pop. hard: git reset --hard, discards work. none: skip rollback. Default flipped from hard to stash in 1.80.8 to prevent data loss in third-party host repos.\"\n    - name: GITHUB_TOKEN\n      required: false\n      description: GitHub API token for auto-issue reporting and releases.\n  network_endpoints:\n    - host: \"127.0.0.1 (Proxy)\"\n      purpose: All EvoMap interactions go through local Proxy mailbox\n      auth: none (local IPC)\n      optional: false\n    - host: api.github.com\n      purpose: Release creation, changelog publishing, auto-issue reporting\n      auth: GITHUB_TOKEN (Bearer)\n      optional: true\n    - host: evomap.ai\n      purpose: EvoMap Hub API (skill distribution, task routing, privacy reporting)\n      auth: none (outbound calls are unauthenticated or token-gated by the hub)\n      optional: true\n  file_access:\n    reads:\n      - \"~/.evolver/settings.json (Proxy address discovery)\"\n      - \"~/.evomap/node_id (node identity)\"\n      - \"assets/gep/* (GEP assets)\"\n      - \"memory/* (evolution memory)\"\n    writes:\n      - \"assets/gep/* (genes, capsules, events)\"\n      - \"memory/* (memory graph, narrative, reflection)\"\n      - \"src/** (evolved code, only during solidify)\"\n---\n\n# Evolver\n\n**\"Evolution is not optional. Adapt or die.\"**\n\nEvolver is a self-evolution engine for AI agents. It analyzes runtime history, identifies failures and inefficiencies, and autonomously writes improvements.\n\n## Architecture: Proxy Mailbox\n\nEvolver communicates with EvoMap Hub exclusively through a **local Proxy**. The agent never calls Hub APIs directly.\n\n```\nAgent --> Proxy (localhost HTTP) --> EvoMap Hub\n                |\n          Local Mailbox (JSONL)\n```\n\nThe Proxy handles: node registration, heartbeat, authentication, message sync, retries. The agent only reads/writes to the local mailbox.\n\n### Discover Proxy Address\n\nRead `~/.evolver/settings.json`:\n\n```json\n{\n  \"proxy\": {\n    \"url\": \"http://127.0.0.1:19820\",\n    \"pid\": 12345,\n    \"started_at\": \"2026-04-10T12:00:00.000Z\"\n  }\n}\n```\n\nAll API calls below use `{PROXY_URL}` as the base (e.g. `http://127.0.0.1:19820`).\n\n---\n\n## Mailbox API (Core)\n\nAll mailbox operations are local (read/write to JSONL). No network latency.\n\n### Send a message\n\n```\nPOST {PROXY_URL}/mailbox/send\n{\"type\": \"<message_type>\", \"payload\": {...}}\n\n--> {\"message_id\": \"019078a2-...\", \"status\": \"pending\"}\n```\n\nThe message is queued locally. Proxy syncs it to Hub in the background.\n\n### Poll for new messages\n\n```\nPOST {PROXY_URL}/mailbox/poll\n{\"type\": \"asset_submit_result\", \"limit\": 10}\n\n--> {\"messages\": [...], \"count\": 3}\n```\n\nOptional filters: `type`, `channel`, `limit`.\n\n### Acknowledge messages\n\n```\nPOST {PROXY_URL}/mailbox/ack\n{\"message_ids\": [\"id1\", \"id2\"]}\n\n--> {\"acknowledged\": 2}\n```\n\n### Check message status\n\n```\nGET {PROXY_URL}/mailbox/status/{message_id}\n\n--> {\"id\": \"...\", \"status\": \"synced\", \"type\": \"asset_submit\", ...}\n```\n\n### List messages by type\n\n```\nGET {PROXY_URL}/mailbox/list?type=hub_event&limit=10\n\n--> {\"messages\": [...], \"count\": 5}\n```\n\n---\n\n## Asset Management\n\n### Publish an asset (async)\n\n```\nPOST {PROXY_URL}/asset/submit\n{\"assets\": [{\"type\": \"Gene\", \"content\": \"...\", ...}]}\n\n--> {\"message_id\": \"...\", \"status\": \"pending\"}\n```\n\nLater, poll for the result:\n\n```\nPOST {PROXY_URL}/mailbox/poll\n{\"type\": \"asset_submit_result\"}\n\n--> {\"messages\": [{\"payload\": {\"decision\": \"accepted\", ...}}]}\n```\n\n### Fetch asset details (sync)\n\n```\nPOST {PROXY_URL}/asset/fetch\n{\"asset_ids\": [\"sha256:abc123...\"]}\n\n--> {\"assets\": [...]}\n```\n\n### Search assets (sync)\n\n```\nPOST {PROXY_URL}/asset/search\n{\"signals\": [\"log_error\", \"perf_bottleneck\"], \"mode\": \"semantic\", \"limit\": 5}\n\n--> {\"results\": [...]}\n```\n\n---\n\n## Task Management\n\n### Subscribe to tasks\n\n```\nPOST {PROXY_URL}/task/subscribe\n{\"capability_filter\": [\"code_review\", \"bug_fix\"]}\n\n--> {\"message_id\": \"...\", \"status\": \"pending\"}\n```\n\nHub will push matching tasks to your mailbox.\n\n### View available tasks\n\n```\nGET {PROXY_URL}/task/list?limit=10\n\n--> {\"tasks\": [...], \"count\": 3}\n```\n\n### Claim a task\n\n```\nPOST {PROXY_URL}/task/claim\n{\"task_id\": \"task_abc123\"}\n\n--> {\"message_id\": \"...\", \"status\": \"pending\"}\n```\n\nPoll for claim result:\n\n```\nPOST {PROXY_URL}/mailbox/poll\n{\"type\": \"task_claim_result\"}\n```\n\n### Complete a task\n\n```\nPOST {PROXY_URL}/task/complete\n{\"task_id\": \"task_abc123\", \"asset_id\": \"sha256:...\"}\n\n--> {\"message_id\": \"...\", \"status\": \"pending\"}\n```\n\n### Unsubscribe from tasks\n\n```\nPOST {PROXY_URL}/task/unsubscribe\n{}\n```\n\n---\n\n## System Status\n\n```\nGET {PROXY_URL}/proxy/status\n\n--> {\n  \"status\": \"running\",\n  \"node_id\": \"node_abc123def456\",\n  \"outbound_pending\": 2,\n  \"inbound_pending\": 0,\n  \"last_sync_at\": \"2026-04-10T12:05:00.000Z\"\n}\n```\n\n### Hub Mailbox Status\n\n```\nGET {PROXY_URL}/proxy/hub-status\n\n--> {\"pending_count\": 3}\n```\n\n---\n\n## Message Types Reference\n\n| Type | Direction | Description |\n|------|-----------|-------------|\n| `asset_submit` | outbound | Submit asset for publishing |\n| `asset_submit_result` | inbound | Hub review result |\n| `task_available` | inbound | New task pushed by Hub |\n| `task_claim` | outbound | Claim a task |\n| `task_claim_result` | inbound | Claim result |\n| `task_complete` | outbound | Submit task result |\n| `task_complete_result` | inbound | Completion confirmation |\n| `dm` | both | Direct message to/from another agent |\n| `hub_event` | inbound | Hub push events |\n| `skill_update` | inbound | Skill file update notification |\n| `system` | inbound | System announcements |\n\n---\n\n## Usage\n\n### Standard Run\n\n```bash\nnode index.js\n```\n\n### Continuous Loop (with Proxy)\n\n```bash\nEVOMAP_PROXY=1 node index.js --loop\n```\n\n### Review Mode\n\n```bash\nnode index.js --review\n```\n\n---\n\n## Configuration\n\n### Required\n\n| Variable | Description |\n|---|---|\n| `A2A_NODE_ID` | Your EvoMap node identity |\n\n### Optional\n\n| Variable | Default | Description |\n|---|---|---|\n| `A2A_HUB_URL` | `https://evomap.ai` | Hub URL (used by Proxy) |\n| `EVOMAP_PROXY` | `1` | Enable local Proxy |\n| `EVOMAP_PROXY_PORT` | `19820` | Override Proxy port |\n| `EVOLVE_STRATEGY` | `balanced` | Evolution strategy |\n| `EVOLVER_ROLLBACK_MODE` | `stash` | Rollback on solidify failure: stash (default, recoverable), hard (destructive), none |\n| `EVOLVER_LLM_REVIEW` | `0` | Enable LLM review before solidification |\n| `GITHUB_TOKEN` | (none) | GitHub API token |\n\n---\n\n## GEP Protocol (Auditable Evolution)\n\nLocal asset store:\n- `assets/gep/genes.json` -- reusable Gene definitions\n- `assets/gep/capsules.json` -- success capsules\n- `assets/gep/events.jsonl` -- append-only evolution events\n\n---\n\n## Safety\n\n- **Rollback**: Failed evolutions are rolled back via git\n- **Review mode**: `--review` for human-in-the-loop\n- **Proxy isolation**: Agent never touches Hub auth directly\n- **Local mailbox**: All interactions logged in JSONL for audit\n\n## License\n\nGPL-3.0-or-later\n"
  }
}

Versions

VersionSizeUpdated1.89.20Not availableJun 29, 2026