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.
sverklo_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.
sverklo_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. Faster and more accurate than grep.
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.
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, Kotlin, Scala, Swift, Dart, Elixir, Lua, Zig, Haskell, Clojure, OCaml.
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". Zep does this for conversations; sverklo is the only one doing it for code.
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 |
|---|---|---|---|---|---|---|
| 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 | — |
Sverklo is a local-first MCP server that combines hybrid code search (BM25 + ONNX embeddings + PageRank), symbol-level impact analysis, diff-aware MR review, and bi-temporal memory in one tool. It runs entirely on your laptop with no API keys and works with Claude Code, Cursor, Windsurf, VS Code, JetBrains, and Google Antigravity.
Cursor's @codebase indexing is cloud-based and tied to the Cursor editor. Claude Context (Zilliz) requires a Milvus database. Sverklo runs entirely on your laptop with SQLite and 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.
Yes. The only network call Sverklo ever makes is downloading the ONNX embedding model on first run (~90MB, cached locally). After that you can disconnect from the internet and everything continues to work — indexing, search, embeddings, memory, dashboard. No telemetry. No cloud calls. Your code never leaves your laptop.
Sverklo works with any AI coding agent that speaks the Model Context Protocol (MCP): Claude Code, Cursor, Windsurf, VS Code's MCP integration, JetBrains MCP, and Google Antigravity. The sverklo init command auto-detects which clients you have installed and writes the right config files.
Yes. MIT licensed and free forever. All 20 tools have no limits and no telemetry. A future Sverklo Pro tier will add smart auto-capture and larger embedding models, and Sverklo Team will add shared team memory — but the rule is "Pro adds new things, never gates current things." Anything in the OSS server today stays in the OSS server forever.
Run npm install -g sverklo, then cd to your project and run sverklo init. That writes .mcp.json at your project root, appends sverklo instructions to your CLAUDE.md, and runs sverklo doctor to verify the MCP handshake. Restart Claude Code and the 20 sverklo tools appear in the /mcp list.
10 languages via tree-sitter: TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, Ruby, and PHP. Hybrid search and symbol-level impact analysis work across all of them. The dependency graph and PageRank ranking work on any codebase that mixes these languages.
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.