Capability Evolver
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.
- Skill ID
- evomap/evolver/capability-evolver
- Publisher
- evomap
- Repository
- evolver
- Installs
- 0
- Files
- 470
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
evomap/evolver/capability-evolverInstalls these files- .github/ISSUE_TEMPLATE/good_first_issue.md
- .github/pull_request_template.md
- .github/workflows/test.yml
- .gitignore
- .npmignore
- CONTRIBUTING.md
- LICENSE
- README.ja-JP.md
- README.ko-KR.md
- README.md
- README.zh-CN.md
- SKILL.md
- assets/gep/genes.seed.json
- assets/logo.png
- cli-options.js
- conformance/savings-core/constants.json
- conformance/savings-core/golden-vectors.json
- examples/atp-consumer-quickstart.md
- examples/hello-world.md
- examples/recipe.manifest.json
- index.js
- package-lock.json
- package.json
- scripts/a2a_export.js
- scripts/a2a_ingest.js
- scripts/a2a_promote.js
- scripts/analyze_by_skill.js
- scripts/build_binaries.js
- scripts/check-changelog.js
- scripts/extract_log.js
- scripts/generate_history.js
- scripts/gep_append_event.js
- scripts/gep_personality_report.js
- scripts/harness-governance-check.js
- scripts/human_report.js
- scripts/internal-proxy-env.ps1
- scripts/internal-proxy-env.sh
- scripts/recall-verify-report.js
- scripts/recover_loop.js
- scripts/refresh_stars_badge.js
- scripts/seed-merchants.js
- scripts/skill2recipes.js
- scripts/suggest_version.js
- scripts/validate-modules.js
- scripts/validate-suite.js
- src/adapters/claudeCode.js
- src/adapters/codex.js
- src/adapters/cursor.js
- src/adapters/hookAdapter.js
- src/adapters/kiro.js
- src/adapters/opencode.js
- src/adapters/scripts/_lockPaths.js
- src/adapters/scripts/_memoryFiltering.js
- src/adapters/scripts/_runtimePaths.js
- src/adapters/scripts/evolver-session-end.js
- src/adapters/scripts/evolver-session-start.js
- src/adapters/scripts/evolver-signal-detect.js
- src/adapters/scripts/evolver-task-recall.js
- src/atp/atpExecute.js
- src/atp/atpTaskPickup.js
- src/atp/autoBuyer.js
- src/atp/autoDeliver.js
- src/atp/cli.js
- src/atp/cliAutobuyPrompt.js
- src/atp/consumerAgent.js
- src/atp/defaultHandler.js
- src/atp/heartbeatSignalsHandler.js
- src/atp/hubClient.js
- src/atp/index.js
- src/atp/merchantAgent.js
- src/atp/protocol.js
- src/atp/questionComposer.js
- src/atp/serviceHelper.js
- src/canary.js
- src/canonicalIdentityLock.js
- src/config.js
- src/evolve.js
- src/evolve/guards.js
- src/evolve/pipeline/collect.js
- src/evolve/pipeline/dispatch.js
- src/evolve/pipeline/enrich.js
- src/evolve/pipeline/hub.js
- src/evolve/pipeline/select.js
- src/evolve/pipeline/signals.js
- src/evolve/utils.js
- src/experiment/agentRunner.js
- src/experiment/cli.js
- src/experiment/comparison.js
- src/experiment/metrics.js
- src/experiment/triggerShift.js
- src/forceUpdate.js
- src/gep/a2a.js
- src/gep/a2aProtocol.js
- src/gep/analyzer.js
- src/gep/antiAbuseTelemetry.js
- src/gep/assetCallLog.js
- src/gep/assetStore.js
- src/gep/assets.js
- src/gep/autoDistillConv.js
- src/gep/autoDistillLlm.js
- src/gep/bridge.js
- src/gep/candidateEval.js
- src/gep/candidates.js
- src/gep/claimNudge.js
- src/gep/cliContracts.js
- src/gep/contentHash.js
- src/gep/contextRoutingGene.js
- src/gep/conversationDistiller.js
- src/gep/conversationSniffer.js
- src/gep/crypto.js
- src/gep/curriculum.js
- src/gep/deviceId.js
- src/gep/directoryClient.js
- src/gep/envFingerprint.js
- src/gep/epigenetics.js
- src/gep/execBridge.js
- src/gep/executionTrace.js
- src/gep/explore.js
- src/gep/featureFlags.js
- src/gep/feedbackEnvelope.js
- src/gep/gitOps.js
- src/gep/hash.js
- src/gep/hostErrorClassifier.js
- src/gep/hubFetch.js
- src/gep/hubReview.js
- src/gep/hubSearch.js
- src/gep/hubVerify.js
- src/gep/idleScheduler.js
- src/gep/issueReporter.js
- src/gep/learningSignals.js
- src/gep/llmReview.js
- src/gep/localStateAwareness.js
- src/gep/mailboxTransport.js
- src/gep/memoryGraph.js
- src/gep/memoryGraphAdapter.js
- src/gep/mutation.js
- src/gep/narrativeMemory.js
- src/gep/oauthLogin.js
- src/gep/openPRRegistry.js
- src/gep/paths.js
- src/gep/personality.js
- src/gep/policyCheck.js
- src/gep/portable.js
- src/gep/privacyClient.js
- src/gep/prompt.js
- src/gep/questionGenerator.js
- src/gep/recallInject.js
- src/gep/recallVerifier.js
- src/gep/reflection.js
- src/gep/sanitize.js
- src/gep/savingsCore.js
- src/gep/schemas/capsule.js
- src/gep/schemas/gene.js
- src/gep/schemas/index.js
- src/gep/schemas/protocol.js
- src/gep/schemas/task.js
- src/gep/selector.js
- src/gep/selfPR.js
- src/gep/signals.js
- src/gep/skill2gep.js
- src/gep/skill2gepAudit.js
- src/gep/skill2recipes.js
- src/gep/skillDistiller.js
- src/gep/skillInstallSuccess.js
- src/gep/skillPublisher.js
- src/gep/solidify.js
- src/gep/strategy.js
- src/gep/syncAsset.js
- src/gep/taskReceiver.js
- src/gep/tokenSavings.js
- src/gep/trajectoryExport.js
- src/gep/validationReport.js
- src/gep/validator/index.js
- src/gep/validator/reporter.js
- src/gep/validator/sandboxExecutor.js
- src/gep/validator/stakeBootstrap.js
- src/gep/workspaceKeychain.js
- src/ops/cleanup.js
- src/ops/commentary.js
- src/ops/health_check.js
- src/ops/index.js
- src/ops/innovation.js
- src/ops/lifecycle.js
- src/ops/self_repair.js
- src/ops/skills_monitor.js
- src/ops/trigger.js
- src/proxy/clientSettings.js
- src/proxy/envelope.js
- src/proxy/extensions/dmHandler.js
- src/proxy/extensions/sessionHandler.js
- src/proxy/extensions/skillUpdater.js
- src/proxy/extensions/traceControl.js
- src/proxy/index.js
- src/proxy/inject.js
- src/proxy/lifecycle/manager.js
- src/proxy/mailbox/state.js
- src/proxy/mailbox/store.js
- src/proxy/router/cache_passthrough.js
- src/proxy/router/features.js
- src/proxy/router/gemini_route.js
- src/proxy/router/messages_route.js
- src/proxy/router/model_router.js
- src/proxy/router/models_route.js
- src/proxy/router/ollama_route.js
- src/proxy/router/responses_route.js
- src/proxy/router/vertex_route.js
- src/proxy/server/http.js
- src/proxy/server/routes.js
- src/proxy/server/settings.js
- src/proxy/sync/engine.js
- src/proxy/sync/inbound.js
- src/proxy/sync/outbound.js
- src/proxy/task/monitor.js
- src/proxy/trace/extractor.js
- src/proxy/trace/usage.js
- src/solo/breaker.js
- src/solo/gitGuard.js
- src/webui/client/clientJs/assets.js
- src/webui/client/clientJs/bootstrap.js
- src/webui/client/clientJs/common.js
- src/webui/client/clientJs/github.js
- src/webui/client/clientJs/i18n.js
- src/webui/client/clientJs/index.js
- src/webui/client/clientJs/interactions.js
- src/webui/client/clientJs/overview.js
- src/webui/client/clientJs/personality.js
- src/webui/client/clientJs/pipelines.js
- src/webui/client/indexHtml.js
- src/webui/client/static.js
- src/webui/client/stylesCss.js
- src/webui/client/vendor/README.md
- src/webui/client/vendor/echarts.min.js
- src/webui/index.js
- src/webui/observer/assets.js
- src/webui/observer/github.js
- src/webui/observer/index.js
- src/webui/observer/interactions.js
- src/webui/observer/jsonl.js
- src/webui/observer/paths.js
- src/webui/observer/personality.js
- src/webui/observer/pipelineEvents.js
- src/webui/observer/redact.js
- src/webui/observer/runs.js
- src/webui/observer/safety.js
- src/webui/observer/skills.js
- src/webui/observer/status.js
- src/webui/server/http.js
- src/webui/server/routes.js
- test/a2aProtocol.test.js
- test/a2aProtocolHeartbeatLoop.test.js
- test/a2aProtocol_trace_guard.test.js
- test/adapters.kiro.test.js
- test/adapters.opencode.test.js
- test/adapters.test.js
- test/adaptersSyntax.test.js
- test/analyzer.test.js
- test/antiAbuseTelemetry.test.js
- test/assetCallLog.test.js
- test/assetStore.filelock.test.js
- test/assetStore.test.js
- test/atp-default.test.js
- test/atpAutoBuyer.test.js
- test/atpAutoDeliver.test.js
- test/atpCliBuy.test.js
- test/atpExecute.test.js
- test/atpHeartbeatSignalsHandler.test.js
- test/atpProxyRouting.test.js
- test/atpTaskPickup.test.js
- test/autoDistillConv.test.js
- test/bench.test.js
- test/bridge.test.js
- test/cachePassthrough.test.js
- test/candidates.test.js
- test/canonicalIdentityLock.test.js
- test/capsuleExecutionTrace.test.js
- test/checkChangelog.test.js
- test/claimNudge.test.js
- test/cliAutobuyPrompt.test.js
- test/cliContracts.test.js
- test/config.test.js
- test/contentHash.test.js
- test/contextSchemaRoutingGene.test.js
- test/conversationDistiller.test.js
- test/conversationSniffer.test.js
- test/crypto.test.js
- test/curriculum.test.js
- test/cycleHardTimeout.test.js
- test/cycleProgressFile.test.js
- test/dotenvLoadOrder.test.js
- test/envFingerprint.test.js
- test/eventDeliveryDynamicIdentity.test.js
- test/evolveCollect.test.js
- test/evolveDispatch.test.js
- test/evolveEnrich.test.js
- test/evolveGuards.test.js
- test/evolveGuardsCooperativeYield.test.js
- test/evolveHub.test.js
- test/evolvePolicy.test.js
- test/evolveSelect.test.js
- test/evolveSessionsDir.test.js
- test/evolveSignals.test.js
- test/execBridgeSpawnNpmShim.test.js
- test/experimentAgentRunner.test.js
- test/experimentComparison.test.js
- test/extensions.test.js
- test/extractTranscriptCwd.test.js
- test/featureFlags.test.js
- test/feedbackEnvelope.test.js
- test/fetchSecurity.test.js
- test/forceUpdateConcurrencyGuard.test.js
- test/forceUpdateFailureCodes.test.js
- test/forceUpdateHeartbeat.test.js
- test/forceUpdateIdempotent.test.js
- test/forceUpdateKeepList.test.js
- test/forceUpdateLastUpdateReport.test.js
- test/forceUpdateMidCopyWedge.test.js
- test/harnessGovernanceCheck.test.js
- test/heartbeatResilienceRound3.test.js
- test/heartbeatResilienceRound4.test.js
- test/heartbeatResilienceRound5.test.js
- test/heartbeatResilienceRound6.test.js
- test/heartbeatResilienceRound8.test.js
- test/heartbeatResilienceRound9.test.js
- test/helpers/symlink.js
- test/hostClientErrorSignals.test.js
- test/hubEgressCoverage.test.js
- test/hubEvents.test.js
- test/hubFetch.test.js
- test/hubUrlResolution.test.js
- test/hubUrlTlsEnforcementConsistency.test.js
- test/hubVerify.test.js
- test/hubVerifyOfflinePermitRace.test.js
- test/identityTupleSync.test.js
- test/idleGating.test.js
- test/idleScheduler.test.js
- test/idleSchedulerLinuxFallbacks.test.js
- test/issue562InertGeneBan.test.js
- test/issue562ValidateModulesSkip.test.js
- test/issue600EventSourceFallback.test.js
- test/issueReporter.test.js
- test/leakCheckDefault.test.js
- test/learningSignals.test.js
- test/lifecycleForceUpdateTrigger.test.js
- test/lifecycleHeartbeatLoopResilience.test.js
- test/lifecycleLastUpdateAck.test.js
- test/lifecycleNodeIdLegacyFallback.test.js
- test/lifecycleNodeIdUnification.test.js
- test/lifecycleProxyHealth.test.js
- test/lifecycleRateLimit.test.js
- test/lifecycleReauthHubUnreachable.test.js
- test/lifecycleStaleNodeSecret.test.js
- test/llmReview.test.js
- test/loadBackoff.test.js
- test/localStateAwareness.test.js
- test/lockPaths.test.js
- test/loopMode.test.js
- test/mailboxStore.test.js
- test/memoryFiltering.test.js
- test/memoryGraph.test.js
- test/memoryGraphRotation.test.js
- test/mutation.test.js
- test/narrativeMemory.test.js
- test/nodeIdResolution.test.js
- test/oauthLogin.test.js
- test/openPRRegistry.test.js
- test/ops.test.js
- test/paths.test.js
- test/portable.test.js
- test/prompt.test.js
- test/promptOpenPRHint.test.js
- test/proxyAnthropic.test.js
- test/proxyAssetSearchPlan.test.js
- test/proxyAssetSearchRelief.test.js
- test/proxyBedrock.test.js
- test/proxyChatCompletionsE2E.test.js
- test/proxyCliOptions.test.js
- test/proxyClientsE2E.test.js
- test/proxyEnvelope.test.js
- test/proxyEventDelivery.test.js
- test/proxyEventDeliveryBridge.test.js
- test/proxyGeminiE2E.test.js
- test/proxyGeminiUpstream.test.js
- test/proxyHubFetchRouting.test.js
- test/proxyHubUrlDefault.test.js
- test/proxyModelsE2E.test.js
- test/proxyOllamaE2E.test.js
- test/proxyOpenAIResponses.test.js
- test/proxyOutboundSync.test.js
- test/proxyPublishValidation.test.js
- test/proxyServer.test.js
- test/proxySettings.test.js
- test/proxyStreaming.test.js
- test/proxyTokenReuse.test.js
- test/proxyTraceIntegration.test.js
- test/proxyTracePlatformInstall.test.js
- test/proxyVertexE2E.test.js
- test/questionComposer.test.js
- test/questionGenerator.test.js
- test/recallInject.test.js
- test/recallVerifier.test.js
- test/recallVerifyReport.test.js
- test/recipeHub.test.js
- test/refreshStarsBadge.test.js
- test/resetLocalSecret.test.js
- test/resolveProjectDir.test.js
- test/resolveWorkspaceId.test.js
- test/reuseAttribution.test.js
- test/rollbackSafety.test.js
- test/routerCanonicalizeBedrock.test.js
- test/routerDegenerateTiers.test.js
- test/routerFeatureFlag.test.js
- test/routerFeatures.test.js
- test/routerNoDowngrade.test.js
- test/runtimePaths.test.js
- test/sandboxExecutor.security.test.js
- test/sanitize.test.js
- test/savingsCoreConformance.test.js
- test/schemaCapsule.test.js
- test/schemaGene.test.js
- test/schemaPromptConsistency.test.js
- test/schemaTask.test.js
- test/selector.test.js
- test/sessionEndHook.test.js
- test/sessionFormat.test.js
- test/sessionSourceDiagnostic.test.js
- test/sessionStartScope.test.js
- test/signalDetect.test.js
- test/signals.test.js
- test/skill2gep.test.js
- test/skill2gepParser.test.js
- test/skill2recipes.test.js
- test/skillDistiller.test.js
- test/skillInstallSuccess.test.js
- test/skillPublisher.test.js
- test/solidify-helpers.test.js
- test/solidifyIntegration.test.js
- test/solidifyLearning.test.js
- test/soloMode.test.js
- test/spawnReplacementProcess.test.js
- test/ssePlannedClose.test.js
- test/stakeBootstrap.test.js
- test/strategy.test.js
- test/sync-dedup.test.js
- test/syncAsset.test.js
- test/syncEngineLoopResilience.test.js
- test/syncOAuthDryRun.test.js
- test/taskMonitor.test.js
- test/taskReceiver.test.js
- test/tokenSavings.test.js
- test/traceThinkingEffort.test.js
- test/traceUsage.test.js
- test/traceUserIdHash.test.js
- test/trajectoryCursorVscdb.test.js
- test/trajectoryExport.test.js
- test/trajectoryGeminiCli.test.js
- test/trajectoryGeminiGateway.test.js
- test/trajectoryKimiWire.test.js
- test/trajectoryMarkedSessionGate.test.js
- test/trajectoryRuntimeMetadata.test.js
- test/triggerShift.test.js
- test/tttInspired.test.js
- test/v1Messages.test.js
- test/v1Responses.test.js
- test/validateSuite.test.js
- test/validationReport.test.js
- test/validatorDaemon.test.js
- test/webuiGithubObserver.test.js
- test/webuiObserver.test.js
- test/webuiServer.test.js
- test/workspaceKeychain.test.js
What this skill tells the agent
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
| 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
node index.jsContinuous Loop (with Proxy)
EVOMAP_PROXY=1 node index.js --loopReview Mode
node index.js --reviewConfiguration
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:
--reviewfor 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
Use this skill in a project
Open any RiverX project, search the Skills panel for evomap/evolver/capability-evolver, and install it in one click.
