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.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill EvoMap@evolver --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of EvoMap@Evolver?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-evomap-evolver)More formats (shields.io, HTML) on the badges page.
---
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)"
- "$EVOLVER_HOME/gep/* (runtime GEP assets)"
- "$EVOLVER_HOME/memory/* (runtime evolution memory)"
writes:
- "$EVOLVER_HOME/gep/* (runtime genes, capsules, events)"
- "$EVOLVER_HOME/memory/* (runtime 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
```bash
node index.js
```
### Continuous Loop (with Proxy)
```bash
EVOMAP_PROXY=1 node index.js --loop
```
### Review Mode
```bash
node 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 runtime asset store (created and maintained by Evolver; these mutable runtime files are not bundled in the published Skill package):
- `$EVOLVER_HOME/gep/genes.json` -- reusable Gene definitions
- `$EVOLVER_HOME/gep/capsules.json` -- success capsules
- `$EVOLVER_HOME/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
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!