Skip to main content
Kodelyth ECC
Changelog

Release history

Live-verified releases pulled from the kodelyth-ecc repo. Last 10 highlighted below, full history further down.

Latest 10 releases

v2.4.2 · SEO-massive documentation refresh

July 2026

Full documentation rewrite for website-ready SEO. Every doc now ships with YAML frontmatter (title, description, keywords, Open Graph, Twitter card, canonical URL, last_updated, version, category). Six new feature docs cover subsystems shipped since v2.0 that were undocumented until now.

Added — 8 new docs

  • docs/index.md — SEO-optimized hub page with keyword-rich intro, platform support table, quick reference
  • docs/getting-started.md — one-command install, verify, first agent invocation, CLI commands, filesystem layout
  • docs/rtk.md — RTK integration deep-dive (auto-install, CLI, per-target flags, dashboard, live proof numbers)
  • docs/terse-mode.md — output-compression skill, 4-level dial, memory-file compressor, byte-preservation rules, ledger, Caveman attribution
  • docs/codebase-graph.md — 158-language AST intelligence via DeusData/codebase-memory-mcp, query examples, edge types, performance table
  • docs/interactive-cli.md — arrow-key menu, update check details, background daemon, TTY-detection rules, env-var reference
  • docs/uninstall.md — full cleanup procedure, dry-run mode, what gets removed vs preserved, programmatic API
  • docs/intent-routing.md — 10-tier signal system + 8 new routing dimensions, output-format examples, live routing table
  • docs/sitemap.md — complete documentation index for site builds

Changed — SEO frontmatter on all 7 existing docs

Added YAML frontmatter with SEO metadata to:

  • docs/dashboard.md
  • docs/evolve.md
  • docs/mcp.md
  • docs/mcp-clients.md
  • docs/replay.md
  • docs/supply-chain.md
  • docs/swarm.md
Every frontmatter block includes: title, description, keywords[], og_title, og_description, og_image, og_type, twitter_card, canonical, last_updated, version, category. Format is SSG-agnostic — works with Astro, Next.js, Docusaurus, VitePress, Hugo without translation.

SVGs

18 files version-bumped v2.4.1 → v2.4.2.

Doc count

  • Before: 7 docs, no frontmatter, 1,553 lines total, 4 empty subdirs
  • After: 16 docs (9 new), full SEO frontmatter, ~2,500 lines, still 4 empty subdirs (reserved for future api/, architecture/, config/, guides/ expansion)

v2.4.1 · Intent routing v2

July 2026

Full design pass on rules/common/agent-intent-routing.md — the always-on rule that maps plain-language user intent to specialist agents. Deferred from 2.4.0.

Added — 8 new routing dimensions layered above the existing 10-tier signal tables

1. Confidence tiers — high (route silently), medium (route + "not X? say so" tail), low (name 2 candidates, ask), none (answer directly, don't announce) 2. Session-state awareness — once routed to an agent, stay in its voice for follow-ups. Do NOT re-announce the same routing. Only re-route when the user's message contains a stronger signal for a different agent 3. Anti-routing whitelist — 6 situations where routing MUST be skipped (under 5 words with no code, one-line factual questions, explicit use X, "don't route", mid-workflow, ECC-itself bug reports) 4. New signal families for v2.4+ — routes for /terse, /terse-compress, codebase-memory-mcp queries, kodelythecc uninstall, kodelythecc dashboard, IDE install 5. Compound intent → parallel commands — when 2 tables match at once, fire the parallel command instead of both agents sequentially (security+review → /security-audit, bug+multi-layer → /debug-blitz, etc.) 6. Announcement style adapts to terse mode — if /terse is active this session, drop the tip line and use one-token announcement → debug-detective instead of the full form 7. Cultural / multi-language cues — read emotional markers in any language, strip filler like "bro"/"yaar"/"man", respond in the user's this-turn language, never translate code/errors/commands 8. Evolve integration — routing misses feed ~/.kodelythecc/evolve/routing-misses.jsonl so the evolve pipeline can propose new triggers later

Added — 5 new output-format examples

  • Default (verbose)
  • Terse mode active — one-token announcement
  • Medium-confidence single match — with "wrong?" tail
  • Low-confidence, two candidates — asks user to pick
  • Sticky routing continuation — no re-announcement
  • Compound intent → parallel command

Verified

  • All 21 tests pass
  • Rule file grew from 707 → 832 lines (net +125 lines of new dimensions), 69 sections total
  • The 10-tier priority signal tables (unchanged) remain the workhorse; the 8 new dimensions layer above them

v2.4.0 · MCP auto-register + full uninstall

July 2026

Real bugs surfaced by live user testing on a fresh Mac install.

Fixed

  • ECC's own MCP server was never registered anywhere on install. Result: Claude Desktop showed "1 setup issue: MCP", the Codebase / MCP status views showed nothing, and no tool got to talk to our own MCP. scripts/mcp/register-self.js now writes kodelyth-ecc under mcpServers in both ~/.claude.json (Claude Code) and ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop). Idempotent — no duplicates on re-run.
  • Codebase Architecture snapshot was empty on the dashboard when no active session graph existed. Dashboard now falls back to a per-project list (project name + nodes + edges) via list_projects, so users can see the 8 projects codebase-memory-mcp has indexed even before opening one in-session.
  • mcp-register subcommand was swallowed by the mcp-* catch-all (like mcp-status was earlier). Excluded properly.

Added

MCP self-registration

  • kodelythecc mcp-register — write ECC's MCP entry into Claude Code + Desktop configs
  • kodelythecc mcp-register --status — show which configs already have it
  • kodelythecc mcp-register --unregister — remove ECC's entry
  • Auto-runs in post-install — after --target claude-code succeeds, ECC registers itself in both configs and prints a summary. Opt out with --no-mcp-register
Full uninstall (scripts/cli/uninstall.js)
  • New menu row: Uninstall ECC completely
  • CLI: kodelythecc uninstall --dry-run | --yes | --yes --keep-memory
  • Removes only files that were shipped by ECC (checks against the package's own agents/skills/commands/hooks/rules/scripts/ — safe for user-authored siblings)
  • Unwires RTK (rtk init -g --uninstall)
  • Removes codebase-memory-mcp agent configs (codebase-memory-mcp uninstall)
  • Removes ECC's MCP entry from Claude Code + Desktop
  • Removes ~/.kodelythecc/ (memory + ledgers + cache)
  • Removes legacy .kodelyth.backup-* dirs
  • Dry-run mode identifies 759 ECC files across 6 subdirs on a fresh install

Verified live end-to-end on this Mac

  • mcp-register --status (before): both configs empty
  • mcp-register writes both:
``json "kodelyth-ecc": { "command": "kodelythecc", "args": ["mcp"], "env": {} } `
  • ~/.claude.json now has mcpServers.kodelyth-ecc + existing mcpServers.codebase-memory-mcp (co-existing, no clobber)
  • uninstall --dry-run` correctly counts 70 agents + 301 skills + 99 commands + 12 hooks + 104 rules + 173 scripts = 759 files, plus 1 backup dir
  • Nothing removed on dry-run — verified

v2.3.0 · Interactive arrow-key CLI menu

July 2026

Run kodelythecc (or kodelyth-ecc) with no args in a real terminal and an arrow-key menu opens.

Added

Interactive menu (scripts/cli/menu.js — zero dependencies)

  • Arrow-key up/down navigation, Enter to select, q / esc / Ctrl+C to quit
  • Vim-style j/k also work
  • Options:
- Update to vX.Y.Z — only shown when a newer version exists on npm (24h-cached check) - Open Dashboard — boot localhost dashboard (RTK + Terse + Codebase + Memory, all real data) - Install ECC for another IDE — inline picker across 13 IDE targets, runs --target X non-interactively - RTK / Terse / Codebase status — inline kodelyth-ecc status runs, then returns to menu on Enter - Run in background — daemonises the dashboard, writes PID to ~/.kodelythecc/dashboard-daemon.pid, log to ~/.kodelythecc/dashboard-daemon.log, prints stop command - Exit

Update checker (scripts/cli/update-check.js)

  • Polls https://registry.npmjs.org/kodelyth-ecc/latest with 2.5s timeout
  • Result cached to ~/.kodelythecc/update-check.json for 24 hours to avoid nagging or spam
  • Menu shows up to date / latest: vX.Y.Z / update available: vX.Y.Z (yellow) as appropriate
  • Non-blocking: menu renders in <1s even if npm is slow

Behaviour

  • Menu opens only when interactive — real TTY on both stdin and stdout, no CI env, no KODELYTH_NO_MENU=1 env
  • Piped stdin / CI runs the installer — same as before, no menu, no breakage
  • Passing any flag or subcommand — skips the menu entirely
  • Background daemon — the dashboard child is detach()ed and unref()ed, survives the parent shell exit. Stop with kill $(cat ~/.kodelythecc/dashboard-daemon.pid)

Verified live on this Mac

  • node bin/kodelyth-ecc.js in a TTY → menu opens, arrow keys navigate
  • echo | node bin/kodelyth-ecc.js → menu correctly skips, installer runs as before
  • require('./scripts/cli/update-check.js').check({current: '2.2.2'}) → live npm hit, returns {latest: '2.2.2', updateAvailable: false, cached: false} — real data, no fake fallback

v2.2.0 · Codebase graph integration + self-documenting CLI

July 2026

ECC now stacks three complementary memory + savings layers, all local, all real:

| Layer | What | Source | |---|---|---| | BM25 session memory | Problems + solutions you've solved before | ECC (built-in) | | RTK | Input-token compression on shell output | rtk-ai/rtk | | Terse mode | Output-token compression on AI replies | ECC (inspired by Caveman) | | Codebase graph | AST-parsed code graph, 158 languages, structural queries | DeusData/codebase-memory-mcp |

Together: ~99% token reduction on structural code queries (their number), 55-65% on typical LLM turns (ours). No cloud, no telemetry, no API keys.

Added

Codebase graph MCP integration (scripts/codebase/index.js)

  • Wraps DeusData/codebase-memory-mcp — MIT, single static binary, tree-sitter across 158 languages
  • Auto-install path: their official curl script → binary lands at ~/.local/bin/codebase-memory-mcp
  • Their install command auto-registers MCP entries in every installed AI-coding agent
  • After install, users say "Index this project" in their AI tool — done
CLI (kodelyth-ecc codebase )
  • install — install binary + auto-register with all agents
  • status [--json] — version, indexed projects, cache dir
  • register — re-run their auto-configure step
  • query [json] — pass-through to codebase-memory-mcp cli (real graph queries)
Post-install auto-wire
  • Opt-in on --codebase-graph or --all flag (off by default to avoid surprise binaries)
  • Idempotent — reuses existing install if present
Dashboard
  • New Codebase tab: binary version, indexed project count, graph nodes/edges, languages, entry points — all real data, zero fallbacks
  • Renamed RTK Savings tab → Token Savings (RTK input + Terse output on one tab)
Self-documenting CLI
  • kodelyth-ecc rtk --help
  • kodelyth-ecc terse --help
  • kodelyth-ecc codebase --help
  • kodelyth-ecc mcp --help
  • kodelyth-ecc dashboard --help
No more "read the README" — every subcommand has focused inline help.

Verified live on this Mac

  • MCP server boot: [kodelyth-mcp] ready · 2.2.0 · 16 tools · 6 prompts · 381 resources in <1s
  • BM25 memory hooks confirmed wired: UserPromptSubmit (recall, sync, 3s timeout) + Stop (capture, async, 10s timeout)
  • Codebase status: codebase-memory-mcp 0.8.1 · 8 indexed projects · cache at ~/.cache/codebase-memory-mcp
  • Dashboard /api/codebase returns real snapshot, zero hardcoded values

Attribution

  • DeusData/codebase-memory-mcp — MIT. Their binary, their curl script, we wrap. If upstream disappears, we fork + vendor (MIT permits).
  • rtk-ai/rtk — Apache-2.0. Wrapped since v1.9.0.
  • JuliusBrussee/caveman — MIT. Design inspiration for terse-mode (independent implementation).

Compatibility

  • Backwards-compatible with v2.1.x
  • Codebase graph OFF by default (opt-in via --codebase-graph on install or kodelyth-ecc codebase install)
  • BM25 memory unchanged
  • RTK + Terse unchanged
  • Dashboard adds a tab; existing tabs preserved

v2.1.2 · Install-flow fixes caught by live user testing

July 2026

Ran the actual npx kodelyth-ecc --target claude-code flow as a user would, end-to-end. Three real bugs surfaced and got fixed.

Fixed

  • --target claude-code was rejected with "Unknown target." install.sh only knew claude-home, but every doc, README, and CHANGELOG example uses claude-code. install.sh now accepts both (claude-home|claude-code) case)
  • Post-install RTK block silently skipped on the (correct) --target claude-code because TARGET_MAP was keyed on claude-home. Added normalizeTarget() and both the RTK and terse post-install blocks now normalise the target before lookup. gemini-cligemini-home, cursorcursor-project also normalised
  • install.sh /dev/tty read failed on piped/CI shells even though the guard tested -e /dev/tty. Guard now also tests -r /dev/tty and honours KODELYTH_NONINTERACTIVE=1 env (Windows PowerShell path already set this)
  • install.sh footer showed stale v1.8.1 from a leftover VERSION file. Bumped to current

Verified end-to-end on this Mac

`` $ npm i -g kodelyth-ecc && kodelyth-ecc --target claude-code ... ━ RTK token savings ───────────────────────────── ✓ RTK 0.42.4 — wired for claude-home ✓ Restart your AI tool to activate. 60-90% token savings on shell commands.

━ Terse mode ──────────────────────────────────── ✓ /terse and /terse-compress installed for claude-home · Activate any time: type /terse in your AI tool (dormant until you do) `

Files land at ~/.claude/skills/terse-mode/SKILL.md and ~/.claude/commands/terse.md. Discoverable by the AI on next session.

Added

  • scripts/rtk/index.jsnormalizeTarget(target) exported. Accepts claude-code, gemini-cli, cursor and returns the canonical install.sh target names. roocode and kimi also added to TARGET_MAP`

v2.0.0 · Terse mode: output-token compressor + memory compressor

July 2026

RTK saves input tokens. Terse mode now saves output tokens. Together — on a typical coding session — ECC cuts ~55-65% of total token cost while keeping code, commands, and errors byte-exact.

Inspired by Caveman (MIT, by Julius Brussee). Our implementation is independent: our own prompt, own compressor, own ledger, own dashboard tile. Credit to Julius for the core insight — "make the mouth smaller, not the brain smaller."

Added

Terse mode skill + slash commands (works across every ECC-installed IDE)

  • skills/terse-mode/SKILL.md — 4-level dial (lite / full / ultra / off), byte-preserves code/commands/URLs/paths
  • commands/terse.md/terse [lite|full|ultra|off] sticks for the session
  • commands/terse-compress.md — one-shot memory-file compression via LLM
Deterministic memory compressor (scriptable, no LLM required)
  • scripts/terse/compress.js — zero-dep markdown compressor. Strips 40+ filler patterns, merges wrapped prose, byte-preserves fenced code / inline code / URLs / paths / YAML frontmatter. Idempotent, safe to re-run
  • kodelyth-ecc terse compress [--dry-run] [--no-backup] — CLI wrapper
  • On real prose-heavy content: ~30% byte reduction, 100% code/URL/path integrity
Output-token savings ledger + dashboard tile
  • scripts/terse/ledger.js — JSONL ledger at ~/.kodelythecc/terse/ledger.jsonl. Per-turn record: level, actual output tokens, estimated baseline, saved
  • /api/terse dashboard endpoint
  • New "Output savings (Terse mode)" section on the RTK Savings tab: totals, level breakdown, 30-day daily bar chart
  • Renamed the tab's implicit RTK header to "Input savings (RTK)" so both axes read cleanly
CLI
  • kodelyth-ecc terse status — shipped/installed/ledger paths
  • kodelyth-ecc terse stats [--json] — turns tracked, tokens saved, savings %, level breakdown
  • kodelyth-ecc terse enable [--target X | --all] — installs skill + commands into one or every ECC-detected IDE
Auto-install on ECC install
  • After the base installer succeeds, terse-mode files are copied into the target IDE's skills/ and commands/ directories automatically. Dormant until user types /terse — respects "no forced verbosity change"
Phase C — bake-in to existing agents
  • agents/code-reviewer.md — opt-in terse section: one-line PR comments when /terse active
  • agents/release-captain.md — opt-in terse section: Conventional Commit ≤50-char subjects, terse changelog rows, rollback plan stays complete

Changed

  • Major version bump: adds a new user-visible mode (terse) that changes AI output style. Breaking only in the sense of "your AI now has a new toggle." No existing behavior removed
  • Dashboard RTK Savings tab now shows both input (RTK) and output (Terse) savings side by side

Compatibility

  • Fully backwards-compatible with v1.9.x installs
  • Terse mode never auto-activates — user opts in per session
  • RTK integration unchanged
  • Memory paths (~/.kodelythecc/) unchanged
  • Zero-dep: terse mode ships as a prompt + a plain-JS compressor. No extra npm dependencies

Honest math

  • Combined RTK + Terse on a typical coding session: 55-65% total token reduction
  • On explain-heavy or review sessions: closer to 65-70%
  • Terse mode adds ~800-1200 input tokens per turn (the skill prompt) — net-negative on turns with <2k output tokens
  • Memory compressor: one-time rewrite of CLAUDE.md / lessons.md — cuts ~30-46% every session forever

v1.9.1 · Smoothness pass on RTK integration

July 2026

Follow-up polish on 1.9.0. Cleaner output, agents now say the right paths, one-shot multi-IDE RTK setup.

Fixed

  • rtk init --codex/--gemini/--opencode/--agent X rejected --auto-patch and silently failed. enableFor() now only passes --auto-patch to the default Claude Code hook flow, where RTK accepts it. Multi-IDE enable now succeeds 3/3 instead of 2/3
  • 24 memory-path references across 11 agent/skill/rule/command markdown files still said ~/.kodelyth/ — agents were teaching users the wrong path. Now all say ~/.kodelythecc/ (matches the 1.8.6 runtime rename)

Added

  • kodelyth-ecc rtk enable --all — auto-detects every IDE ECC has been installed for on this machine (checks ~/.claude/agents, ~/.cursor/rules, ~/.codeium/windsurf, ~/.antigravity, ~/.codex, ~/.config/opencode, ~/.gemini) and wires RTK into all of them in one command
  • scripts/rtk/index.jsdetectInstalledTargets() export

Changed

  • Post-install output: replaced the raw JSON dumps with a tight 3-line summary (RTK version, target IDE, next step)
  • kodelyth-ecc rtk status: human-readable by default (was JSON); use --json for machine output. Now also lists detected ECC-installed IDEs so you can see which ones --all will wire

v1.9.0 · RTK integration + revived dashboard

July 2026

ECC now auto-installs RTK (Rust Token Killer) and wires its transparent command filter into whichever IDE ECC was installed for. Real token savings (60-90% on shell commands) show up in the dashboard, pulled straight from RTK's own ledger — no synthetic numbers.

Added

  • scripts/rtk/index.js — RTK integration module: install(), enableFor(target), disableFor(target), status(), savings()
  • kodelyth-ecc rtk — CLI subcommands to manage RTK from ECC
  • Post-install auto-hook: after npx kodelyth-ecc --target succeeds, ECC auto-installs the RTK binary (Homebrew on macOS, curl script elsewhere) and runs rtk init for the target IDE. Opt out with --no-rtk
  • Target map covers 10 install targets: claude-code, cursor, cursor-project, windsurf-home, windsurf-project, antigravity, codex-home, opencode, cline, gemini-cli
  • /api/rtk + /api/rtk/status dashboard endpoints — surface RTK's live ledger
  • New RTK Savings tab in the dashboard: total tokens saved, raw tokens seen, avg reduction %, active IDE integrations, 30-day daily bar chart

Changed

  • Dashboard nav order: Overview → RTK Savings → Memory → Evolve → Catalog → Sessions

Notes

  • Windows auto-install is skipped (RTK requires manual .zip download on native Windows); WSL follows the Linux path
  • RTK setup is best-effort — if brew/curl aren't available, install fails gracefully with a hint to run kodelyth-ecc rtk install later
  • Existing RTK installs are detected and reused; no double-install

v1.8.6 · Memory path rename + auto-migration

July 2026

Renamed the on-disk memory root from ~/.kodelyth/ to ~/.kodelythecc/ across every runtime path. Existing installs auto-migrate on first CLI invocation or hook fire — idempotent, non-destructive, keeps a dated backup of the old directory.

Changed

  • All 20 runtime JS files: memory, hooks, dashboard, evolve, MCP, router, tests now point at ~/.kodelythecc/ (42 replacements total)
  • scripts/memory/store.js — default MEMORY_DIR now ~/.kodelythecc/memory/; runs migration on require
  • bin/kodelyth-ecc.js — runs migration on every CLI invocation (no-op after first run)
  • KODELYTH_MEMORY_DIR and related env vars kept unchanged for backwards compat

Added

  • scripts/migrate-legacy.js — one-shot migrator: merges memories, copies sibling files (index, patterns, projects/, evolve/, safety/, mcp-clients.json), renames old dir to ~/.kodelyth.backup-YYYY-MM-DD, drops .migrated-from-kodelyth marker so it never runs twice

Behavior

  • New users: get ~/.kodelythecc/ from the start
  • Existing users (have ~/.kodelyth/): data migrated on next CLI run or hook fire; original preserved as backup