DSH Hub
dsh-krouter cover

398894496-arch/KRouter

dsh-krouter

BundleWorkflow47 GitHub stars· updated 2026-10-20

Your coding agents remember what you decided — and what you changed. Plain-Markdown memory in Obsidian, shared by Claude Code, Codex and Cursor over MCP. Every answer cites its page; when the vault does not know, it says so. Imports your past sessions on install.

Install

npx @deepseek-ai/dsh plugin --profile web add github:398894496-arch/KRouter

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-krouter DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/krouter.svg)](https://dshhub.dev/plugins/krouter)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from 398894496-arch/KRouter, cleaned of badges and images.

KRouter

Your coding agents remember what you decided — and what you changed your mind about.

Claude Code, Codex, Cursor and DeepSeek Harness share one memory: a folder of plain Markdown in Obsidian that you can read and edit. Ask "how did we decide to ship?" and the agent answers with the page it came from. A correction replaces the old answer instead of competing with it. When the vault does not know, the agent is told so, rather than handed something close.

Measured, not claimed. On 200 held-out questions in English and Chinese that it was never tuned on, at default settings, KRouter cites a wrong page 26% of the time; claude-mem 64%, basic-memory 78%. Of 80 questions the vault cannot answer, KRouter refuses 47; the other two refuse none. Of 60 questions about a decision that was later changed, it gets 50 right; they get 34 and 16. Neither of them can refuse or knows a page was replaced, so part of that gap is by construction: plain full-text search given KRouter's two rules is level with it. What KRouter adds is having those rules on by default, plus receipts and a vault you can edit. How it was measured · rerun it in one second

Install

curl -fsSL https://raw.githubusercontent.com/398894496-arch/KRouter/main/scripts/bootstrap.sh | sh

Windows (PowerShell): irm https://raw.githubusercontent.com/398894496-arch/KRouter/main/scripts/bootstrap.ps1 | iex · Claude Code plugin: /plugin install krouter --marketplace 398894496-arch/KRouter (Claude Code 2.1.275 or later; from a shell, claude plugin install krouter --marketplace 398894496-arch/KRouter needs 2.1.292). Third-party marketplaces do not auto-update: run claude plugin update krouter@krouter, or turn it on in /plugin → Marketplaces → krouter → Enable auto-update.

Rather look first? Nothing below changes your machine until the last line:

git clone https://github.com/398894496-arch/KRouter.git && cd KRouter
./scripts/first_run.sh                      # a receipt on the bundled sample vault
python3 scripts/bootstrap.py --dry-run      # every change the install would make, made nowhere
python3 scripts/bootstrap.py --vault ~/notes --no-timer   # install against your vault, nightly job off

Python 3 is the only requirement. The installer makes a vault (or uses yours with --vault, overwriting nothing), connects Claude Code and Codex to it through MCP, and stops there: lookup only, no questions, nothing leaves the machine. When you want it to start remembering, run the line it prints last (bootstrap.py --ask), which asks two questions.

Five minutes later

  1. Ask your agent: "what did we decide about X last week?" It answers from the vault, names the page, and says plainly when the vault has nothing on it.
  2. "Import the agent sessions already on this machine?" (with --ask) On a yes, the last 7 days of Claude Code, Codex and Cursor agent sessions become pages, one per session: your questions and each turn's closing answer. Key-shaped text is redacted first, and nothing leaves the machine.
  3. "Have your model pull out what was decided?" On a yes, the model you already use (a logged-in CLI or an API key) writes "what was decided, what changed" at the top of each recent session's page. The installer tells you how many characters that sends before it sends anything.

…

Related plugins