
Product
Socket Firewall Now Blocks Malicious VS Code and Open VSX Extensions
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.
@evomap/evolver
Advanced tools
A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.
Private development repository for Evolver (source of truth). Public distribution: EvoMap/evolver.
Current version: see package.json.
index.js # CLI entry point
src/
evolve.js # Core evolution engine
proxy/ # EvoMap Proxy (HTTP server, sync, mailbox)
gep/ # GEP protocol (bridge, prompt, selector, solidify)
ops/ # Operations modules (lifecycle, repair, cleanup, monitoring)
assets/gep/ # Bundled starter GEP assets
.evolver/gep/ # Runtime Genes, Capsules, Events (ignored)
scripts/
build_public.js # Build dist-public/ from public.manifest.json
publish_public.js # Publish to GitHub + npm
test/ # Test suite (vitest)
docs/ # Private docs (excluded from public build)
memory/ # Runtime artifacts (excluded from public build)
# 1. Version bump
# Edit package.json version, commit:
git commit -am "chore(release): prepare vX.Y.Z"
# 2. Build public output
node scripts/build_public.js
# 3. Publish (GitHub Release + npm)
PUBLIC_REPO="EvoMap/evolver" node scripts/publish_public.js
cd dist-public && npm publish --access public
Both channels (GitHub Release, npm) must succeed.
| Channel | Target |
|---|---|
| GitHub Release | EvoMap/evolver |
| npm | @evomap/evolver |
The public-facing README lives in README.public.md. It is copied and renamed to dist-public/README.md during build. Do NOT edit README.public.md for private dev notes; edit this file instead.
| Variable | Default | Effect |
|---|---|---|
EVOMAP_ROUTER_ENABLED | unset (off) | Set to "1" to enable the Phase C multi-tier router on POST /v1/messages. The classifier rewrites model per turn (cheap / mid / expensive) and emits one router_decision JSON log line per request. Any other value (including "true", "0", empty) leaves the route in pass-through mode — the request body is forwarded to api.anthropic.com unmodified. |
EVOMAP_MODEL_CHEAP | global.anthropic.claude-opus-4-7 | Concrete model for the cheap tier (trivial lookups, post-tool synthesis hops). |
EVOMAP_MODEL_MID | global.anthropic.claude-opus-4-7 | Concrete model for the mid tier (default turn). |
EVOMAP_MODEL_EXPENSIVE | global.anthropic.claude-opus-4-7 | Concrete model for the expensive tier (planning, high tool-use density). |
EVOMAP_ANTHROPIC_BASE_URL | https://api.anthropic.com | Override upstream for testing or self-hosted gateways. |
EVOMAP_PROXY_PORT | 19820 | Initial port to bind; the proxy scans up to 100 consecutive ports if busy. |
EVOMAP_PROXY_MAX_BODY_BYTES | 1048576 (1 MiB) | Hard cap on inbound request body size. See GHSA-7xp7-m392-h92c. |
ANTHROPIC_API_KEY | unset | Token-mediation fallback. When a client sends a /v1/messages request without x-api-key, the proxy substitutes this value as the upstream x-api-key. |
ANTHROPIC_AUTH_TOKEN | unset | Token-mediation fallback (Bearer variant). Used only if ANTHROPIC_API_KEY is unset; substituted as upstream Authorization: Bearer <token>. |
The router flag is read at proxy startup; flipping it requires restarting the daemon. Per-tier model overrides and the two mediation env vars are read on every request via process.env, so they can be hot-swapped without a restart.
Tier defaults ship uniform. All three
EVOMAP_MODEL_*tiers default toopus-4-7, so enablingEVOMAP_ROUTER_ENABLED=1without setting per-tier overrides routes every turn to the same model — no cost saving, and a cost increase for anyone previously pinned to a cheaper model. This is deliberate while tier mapping is tuned (it keeps the no-downgrade guard inert and 5xx retries on a single model). To get tier-based cost saving, set the overrides explicitly, e.g.EVOMAP_MODEL_CHEAP=global.anthropic.claude-haiku-4-5-20251001-v1:0andEVOMAP_MODEL_MID=global.anthropic.claude-sonnet-4-6. When the router is enabled and all tiers resolve to one model, the proxy emits a one-timerouter_degenerate_tiersWARN at startup.
Some clients (notably Claude Code) put the upstream credential in Authorization: Bearer, which collides with the proxy's own self-auth header. To route such a client through the proxy:
ANTHROPIC_API_KEY=sk-ant-... (or ANTHROPIC_AUTH_TOKEN=...).ANTHROPIC_BASE_URL=http://127.0.0.1:19820ANTHROPIC_AUTH_TOKEN=<proxy_token from ~/.evolver/settings.json>The proxy then validates Authorization: Bearer <proxy_token> for self-auth, strips it, and substitutes its own env credential when forwarding to api.anthropic.com. The client never sees the real upstream key.
For the internal Claude Code / Codex / Cursor rollout, see docs/internal-proxy-rollout.md. Use scripts/internal-proxy-env.sh to export local client env from ~/.evolver/settings.json without copying tokens into shell history.
| Variable | Default | Effect |
|---|---|---|
EVOLVER_WORKSPACE_KEYCHAIN | auto | Backs the per-workspace workspace-id secret with the OS keychain (@napi-rs/keyring). auto tries the keychain and falls back to <workspace>/.evolver/workspace-id (mode 0600) on any failure; force requires the keychain and throws if it is unavailable (use in CI to assert it loaded); off skips the keychain and uses the FS file only. |
EVOLVER_WORKSPACE_ID | unset | Explicit override; wins over both keychain and FS resolution. |
The keychain closes a same-uid readability gap: with the FS fallback, any
process under the same uid can read workspace-id off disk. @napi-rs/keyring
is an optional dependency — on npm 7+ a default npm install -g installs
it (optional deps are opt-out via --omit=optional, not opt-in), so the
protection is active wherever an OS keychain backend (macOS Keychain Services /
Linux libsecret / Windows Credential Manager) is reachable. On headless Linux
without libsecret, under --omit=optional, or in the standalone bun binary
(where the addon is not yet sideloaded), auto falls back to the FS secret and
the same-uid gap remains open. See SECURITY.md for the full posture.
# Run tests
npx vitest run
# Single evolution run (sanity check)
node index.js
# Continuous loop
node index.js --loop
public.manifest.json controls what goes into dist-public/:
README.public.md -> README.md)Files in docs/, memory/, and dist-public/ are never included in public builds.
FAQs
A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.
The npm package @evomap/evolver receives a total of 1,998 weekly downloads. As such, @evomap/evolver popularity was classified as popular.
We found that @evomap/evolver demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.

Research
More than 140 Mastra npm packages were compromised in a supply chain attack that used a typosquatted dependency to deliver a cross-platform infostealer during installation.

Research
/Security News
A new npm package tests AI malware scanners with prompt injection, safety-triggering comments, context flooding, and obfuscated JavaScript.