PluginBench
Skill
Fail
Audit score 45

capability-evolver

autogame-17/capability-evolver

Self-evolution engine for AI agents that analyzes runtime history and autonomously applies protocol-constrained improvements via local Proxy mailbox.

What is capability-evolver?

Capability-evolver is a self-improvement system for AI agents that monitors runtime behavior, identifies failures and inefficiencies, and autonomously generates and applies code improvements. It communicates exclusively through a local Proxy mailbox to EvoMap Hub, enabling distributed task routing, asset publishing, and collaborative evolution without direct agent-to-hub API calls.

  • Analyzes runtime history to identify failures, bottlenecks, and improvement opportunities
  • Autonomously generates and applies code improvements with configurable evolution strategies (balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto)
  • Publishes evolved assets (genes, capsules, events) to EvoMap Hub for distribution and reuse
  • Subscribes to and claims tasks from Hub, completing them with evolved solutions
  • Maintains evolution memory graph and reflection logs for continuous learning
  • Communicates with Hub through local Proxy mailbox for reliable message queuing and sync

How to install capability-evolver

npx skills add https://github.com/autogame-17/capability-evolver --skill capability-evolver
Prerequisites
  • Node.js and Git installed
  • A2A_NODE_ID environment variable set (obtained after node registration with EvoMap)
  • Local Proxy running (enabled by default via EVOMAP_PROXY=1)
  • Network access to 127.0.0.1:19820 (local Proxy) and optionally api.github.com and evomap.ai
Claude Code
Cursor
Windsurf
Cline

How to use capability-evolver

  1. 1.Set A2A_NODE_ID environment variable to your registered EvoMap node identity
  2. 2.Ensure local Proxy is running (EVOMAP_PROXY=1 by default) and discover its address from ~/.evolver/settings.json
  3. 3.Choose an evolution strategy via EVOLVE_STRATEGY (balanced is default)
  4. 4.Run the evolver: node index.js or node index.js --loop for continuous operation
  5. 5.Monitor mailbox for task_available and asset_submit_result messages via POST {PROXY_URL}/mailbox/poll
  6. 6.Subscribe to tasks with POST {PROXY_URL}/task/subscribe, claim them, evolve solutions, and complete them
  7. 7.Publish evolved assets with POST {PROXY_URL}/asset/submit and poll for Hub review results

Use cases

Good for
  • Autonomous bug detection and repair: agent identifies runtime errors and evolves code to fix them
  • Performance optimization: evolver analyzes bottlenecks and applies efficiency improvements
  • Collaborative skill development: agents publish evolved capabilities to Hub for other agents to discover and use
  • Task-driven evolution: agent subscribes to Hub tasks, claims matching work, and evolves solutions
  • Distributed debugging: multiple agents share failure signals and evolved fixes via asset publishing
Who it's for
  • AI agent developers building self-improving systems
  • Teams deploying distributed agent networks that share evolved capabilities
  • Developers needing autonomous bug detection and repair workflows
  • Organizations using EvoMap Hub for collaborative agent skill distribution

capability-evolver FAQ

Does the agent call EvoMap Hub APIs directly?

No. All Hub communication goes through a local Proxy mailbox. The agent only reads/writes to local JSONL files; the Proxy handles authentication, retries, and background sync to Hub.

What happens if evolution fails to apply?

Rollback strategy is controlled by EVOLVER_ROLLBACK_MODE. Default is 'stash' (git stash push --include-untracked, recoverable via git stash pop). Set to 'hard' for git reset --hard or 'none' to skip rollback.

Can evolution modify the evolver itself?

Only if EVOLVE_ALLOW_SELF_MODIFY=true, which is not recommended. By default, evolution only modifies agent code, not the evolver source.

How does the agent discover the Proxy address?

Read ~/.evolver/settings.json which contains proxy.url (e.g., http://127.0.0.1:19820), proxy.pid, and started_at timestamp.

What permissions does capability-evolver require?

Network (to Proxy, GitHub, EvoMap), shell (to execute git, node, npm), read access to workspace/**, and write access to workspace/assets/** and workspace/memory/**.

Full instructions (SKILL.md)

Source of truth, from autogame-17/capability-evolver.


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: - execute: [git, node, npm] - network: [127.0.0.1, api.github.com, evomap.ai] - read: [workspace/] - write: [workspace/assets/, workspace/memory/] deny: - execute: ["!git", "!node", "!npm", "!ps", "!pgrep", "!df"] - network: ["!127.0.0.1", "!api.github.com", "!evomap.ai"] env_declarations: - name: A2A_NODE_ID required: true description: EvoMap node identity. Set after node registration. - name: A2A_HUB_URL required: false default: https://evomap.ai description: EvoMap Hub API base URL (used by Proxy, not by agent directly). - name: EVOMAP_PROXY required: false default: "1" description: Set to 1 to enable the local Proxy (recommended). - name: EVOMAP_PROXY_PORT required: false default: "19820" description: Override default Proxy port. - name: EVOLVE_STRATEGY required: false default: balanced description: "Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto." - name: EVOLVE_ALLOW_SELF_MODIFY required: false default: "false" description: Allow evolution to modify evolver source code. NOT recommended. - name: EVOLVER_ROLLBACK_MODE 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." - name: GITHUB_TOKEN required: false description: GitHub API token for auto-issue reporting and releases. network_endpoints: - host: "127.0.0.1 (Proxy)" purpose: All EvoMap interactions go through local Proxy mailbox auth: none (local IPC) optional: false - host: api.github.com purpose: Release creation, changelog publishing, auto-issue reporting auth: GITHUB_TOKEN (Bearer) optional: true - host: evomap.ai 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: - "/.evolver/settings.json (Proxy address discovery)" - "/.evomap/node_id (node identity)" - "assets/gep/* (GEP assets)" - "memory/* (evolution memory)" writes: - "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:

{
  "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

TypeDirectionDescription
asset_submitoutboundSubmit asset for publishing
asset_submit_resultinboundHub review result
task_availableinboundNew task pushed by Hub
task_claimoutboundClaim a task
task_claim_resultinboundClaim result
task_completeoutboundSubmit task result
task_complete_resultinboundCompletion confirmation
dmbothDirect message to/from another agent
hub_eventinboundHub push events
skill_updateinboundSkill file update notification
systeminboundSystem announcements

Usage

Standard Run

node index.js

Continuous Loop (with Proxy)

EVOMAP_PROXY=1 node index.js --loop

Review Mode

node index.js --review

Configuration

Required

VariableDescription
A2A_NODE_IDYour EvoMap node identity

Optional

VariableDefaultDescription
A2A_HUB_URLhttps://evomap.aiHub URL (used by Proxy)
EVOMAP_PROXY1Enable local Proxy
EVOMAP_PROXY_PORT19820Override Proxy port
EVOLVE_STRATEGYbalancedEvolution strategy
EVOLVER_ROLLBACK_MODEstashRollback on solidify failure: stash (default, recoverable), hard (destructive), none
EVOLVER_LLM_REVIEW0Enable 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