Use Sverklo when relationships matter.
Your agent needs callers, dependencies, tests, diff risk, or prior repo decisions before editing. Start with the no-write proof command before installing MCP config.
Same task, same coding agent, better repo evidence. Sverklo gives Claude Code, Cursor, Windsurf, and Codex-style agents your repo's files, symbols, callers, tests, dependencies, diffs, and git-pinned decisions before they edit.
Inspect the public 180-task benchmark, then run a receipt on a real repo. MIT, local by default, telemetry off by default; an explicitly configured remote embedding provider may receive code chunks. Caveat: grep still wins exact strings.
Run the copied command from a real repo, follow the proof guide, then paste the markdown receipt into the proof thread. No project files or MCP config are written; first run may cache the local ONNX model/index under ~/.sverklo.
Your agent needs callers, dependencies, tests, diff risk, or prior repo decisions before editing. Start with the no-write proof command before installing MCP config.
If the repo is tiny, the change is one file, or you know the exact string, grep is the sharper first move. Use the project test runner to verify behavior.
The comparison is intentionally plain: ask the same coding agent to change an auth helper. Baseline tools make it search and guess. Sverklo hands it the repo relationships before the edit.
Change an auth helper signature without breaking callers, tests, or prior project decisions.
The agent greps likely names, reads a few files, and may miss indirect callers or stale decisions after context compaction.
impact, refs, test_map, and recall show real callers, covered tests, dependencies, and git-pinned decisions.
Files, symbols, callers, tests, dependencies, diffs, and decisions appear before the model writes code.
Fewer blind edits on relationship-heavy tasks. If you already know the exact string or the repo is tiny, grep is still the sharper first move.
Proof source: public 180-task retrieval benchmark plus maintainer-seeded receipts. External same-task receipts are still the top proof gap.
/* 90-second walkthrough — terminal then live Claude Code MCP integration */
sverklo prove --markdown prints a shareable receipt from the current repo: central files, one real symbol, real callers, and the exact prompt to paste into your coding agent.
These examples are maintainer-seeded so you can inspect the shape before installing. They are not third-party validation; external receipts and corrections are the current ask.
TypeScript MCP server, CLI, benchmark harness, telemetry worker, and site worktree in one receipt.
Middleware-heavy JavaScript repo: real entry points, core symbols, and caller relationships.
Large Node framework with plugin and route structure that rewards graph-aware retrieval.
TypeScript validation library where symbol precision matters more than keyword matching.
Compact state library showing whether the proof remains useful when the repo is not huge.
/* what happened when we published the bench */
"the bigger opportunity here is the potential genesis of an 'MCP Server Arena' on par with what the leading AI/LLM/Chatbot arenas provide…"
— Jake Gravelle, jcodemunch-mcp maintainer, on r/mcp
impact)Sverklo is the right tool when you don't know exactly what to search for. When you do know, grep is fine.
src/auth/session.ts
78
src/api/billing.ts
52
src/lib/jwt.ts
34
src/utils/clock.ts
12
Every changed file gets a 0–100 score combining untested status, security-sensitive paths, importer fan-in, caller count, dangling references, and churn. Reasons are explicit — no black box.
test_map walks the diff, the import graph, and filename conventions to flag changed code without matching tests — ranked by risk.
Every removed symbol is checked against the symbol-reference graph. If a caller still exists, the merge is blocked with file:line evidence.
Five workflows: /sverklo:review-changes, /sverklo:pre-merge, /sverklo:onboard, /sverklo:architecture-map, /sverklo:debug-issue.
benchmark/ — reproducible.
impact render on React's most-called symbol. Sub-millisecond on every repo we tested — it's an indexed SQL join, not a 200-grep-match scan.
BM25 for precision, semantic embeddings for recall, PageRank for structural importance — fused via RRF. Built for relationship-heavy questions; use grep/ripgrep for exact strings or tiny repos.
all-MiniLM-L6-v2 via ONNX runtime. 384-dimensional vectors generated on your machine. No API calls, no data leaves your laptop.
Files that are imported by many others rank higher. Your agent finds the actually-important code first, not just keyword matches.
Save decisions, patterns, and preferences with git-state linking. Stale memories flagged automatically when referenced files change.
One MCP server serves all your repos via a global registry. Trace how a change ripples across dependent repos. No per-project config needed — sverklo init in any repo, done.
Drop a .sverklo.yaml in your project root to tune PageRank weights, boost or penalize paths, and customize ranking to match your codebase's shape.
File watcher updates the index on every save. Dependency graph and PageRank recompute in real time. Always fresh.
TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, Ruby, PHP, Vue.
remember scope:"workspace" writes once, surfaces across every repo in the workspace.
sverklo init imports your existing project knowledge:
CLAUDE.md (12).cursorrules (3)docs/adr/001-prisma.mddocs/adr/002-auth.mdCONTRIBUTING.md (1)sverklo memory export pushes them to markdown / Notion / JSON.
Auto-imports memories from CLAUDE.md, .cursorrules, AGENTS.md, CONTRIBUTING.md, and ADRs on init. Your existing project knowledge becomes semantically searchable instantly.
Every memory has valid_from_sha and valid_until_sha. Memories are never deleted, only superseded — so you can query "what we believed at commit X" and see when code drift made that advice stale.
If a memory references a file that no longer exists, it's flagged as stale. No more advice based on deleted code.
Memories are embedded and searched the same way as code. Ask "what did we decide about auth?" and get the relevant memory.
An MCP resource surfaces top memories to Claude before you type anything. Your decisions travel across sessions automatically.
| Tool | Code-native | Local-first | MCP drop-in | Git-aware memory | Symbol graph | Bi-temporal | Cross-repo |
|---|---|---|---|---|---|---|---|
| ▸sverklo | ● | ● | ● | ● | ● | ● | ● |
| mempalace | — | ● | ● | — | — | ● | — |
| claude-mem | — | ● | CC only | — | — | — | — |
| Mem0 | — | crippled | SDK | — | — | — | — |
| Zep / Graphiti | — | Neo4j | ● | — | — | ● | — |
| Augment Code | ● | cloud | ● | — | ● | — | — |
| Greptile | ● | cloud | 3rd party | — | ● | — | — |
| Aider repo-map | ● | ● | — | — | — | — | — |
| Zilliz claude-context | ● | Milvus | ● | — | — | — | — |
| XRAY MCP | ● | ● | ● | — | partial | — | — |
Claude Code hallucinates function names because it generates from training-data patterns rather than your actual symbol graph. It will write getUserByEmail() when your code uses findByEmail(), invent imports for packages you don't depend on, and forget yesterday's design decision because context was compacted. Sverklo solves this with a 37-tool MCP retrieval layer the agent calls before writing code: lookup resolves a name to its definition with file:line, refs proves whether a symbol exists with caller context, verify lets the agent re-check that a quoted span is still present at the cited git SHA. Run npm exec --yes --package=sverklo@latest -- sverklo prove --no-write --guided --markdown to see central files and a real caller graph before writing MCP config. The bundled ONNX provider is local and needs no API key; an explicitly configured remote embedding provider may receive code chunks.
Most MCP servers are single-purpose wrappers around an API. Sverklo is local-first code intelligence: hybrid search (BM25 + embeddings + PageRank), symbol-level impact analysis, diff-aware PR review, and bi-temporal memory. The default bundled ONNX provider runs on your laptop with no API key. If you explicitly configure a remote embedding provider, code chunks may be sent to that provider. It works with Claude Code, Cursor, Windsurf, Zed, VS Code, JetBrains, and Google Antigravity, so if you already have an MCP client, sverklo just appears as 37 new tools alongside whatever else you run.
Cursor's @codebase indexing is cloud-based and tied to the Cursor editor. Claude Context (Zilliz) requires a Milvus database. Sverklo defaults to embedded SQLite and bundled local ONNX embeddings, works across every major AI coding agent via the MCP protocol, and adds symbol-level impact analysis and bi-temporal memory that neither offers. A remote embedding provider is optional and must be explicitly configured.
Yes, when you use the default bundled ONNX provider. After the first-run model download (~90MB, cached locally), indexing, search, embeddings, memory, and the dashboard can run offline. An explicitly configured remote embedding provider requires its endpoint and may receive code chunks. Telemetry is opt-in and off by default.
Sverklo works with any AI coding agent that speaks the Model Context Protocol (MCP): Claude Code, Cursor, Windsurf, Zed, VS Code, JetBrains, and Google Antigravity. The sverklo init command auto-detects which clients you have installed and writes the right config files.
Yes. The current server is MIT licensed. All 37 tools in the current OSS server have no usage limits and opt-in telemetry is off by default (see /security). A future Sverklo Pro tier may add smart auto-capture and larger embedding models, and Sverklo Team may add shared team memory; current OSS functionality should not be gated by those tiers.
Run npm exec --yes --package=sverklo@latest -- sverklo prove --no-write --guided --markdown from your project first. It prints a real repo-memory receipt without writing project files or MCP config. It may cache the local model/index under ~/.sverklo, but it does not mutate your project. If the proof looks useful, run npm install -g sverklo, sverklo init --dry-run, then sverklo init. Restart Claude Code and the sverklo tools appear in the /mcp list.
24 languages total. 10 first-class with structural parsing: TypeScript/TSX, JavaScript, Python, Go, Rust, C# (tree-sitter), plus Vue (SFC), Markdown, and Jupyter notebooks (custom parsers). 14 more via regex fallback: Java, C, C++, Ruby, PHP, Kotlin, Scala, Swift, Dart, Elixir, Lua, Zig, Haskell, Clojure, OCaml. Hybrid search works across all 24; symbol-level impact analysis is sharpest on the first-class 10.
Sverklo is the right tool when you don't know exactly what string to search for. When you do know the literal string, plain grep is faster and more reliable. On a 30-file repo, you don't need Sverklo. It earns its place on large interconnected codebases where AI coding agents waste thousands of tokens reading the wrong files.
Run the receipt, inspect the callers/tests/decisions it finds, and share the part that is wrong or useful. The bundled provider is local; an explicitly configured remote embedding provider may receive code chunks. Telemetry is off by default.