On this page
Pick Serena for symbol-level edits with nothing to index, Graphify for a graph your team can open and share, CodeGraph for the fastest local call graph, and repowise when agents also need git history, ownership, docs and health from the same index. All four give a coding agent a better view of a codebase than grep and file reads, and in our benchmark all four were leaner than a bare agent on some measure.
Disclosure: we build repowise. Every measured number below comes from one public benchmark run on the same repositories in August 2026 (CodeGraph 1.5.0, Graphify 0.9.31, Serena 1.6.2.dev0). Tool facts are as of October 2026, from each project's own repository.
We build repowise, so weigh our entry accordingly. The measurements we publish about it, with their methods, are on the benchmarks page.
Serena vs Graphify vs CodeGraph vs repowise at a glance
| Serena | Graphify | CodeGraph | repowise | |
|---|---|---|---|---|
| What it builds | No stored index; queries live language servers | Knowledge graph from tree-sitter ASTs, plus docs, configs and PDFs | Symbol and call graph in local SQLite | Call graph, git history, generated docs, decisions, health, embeddings |
| Best at | Precise symbol reads, edits and refactors | A browsable graph and report for people and agents | Cheap, fast structural answers | Questions about history, ownership and risk as well as structure |
| Agent surface | Symbol tools over MCP | Skill plus optional MCP server | One main tool, codegraph_explore | ten MCP tools |
| Languages | 40+ via language servers or the JetBrains plugin | Code via tree-sitter, plus docs and PDFs | 30+ | 28 parsed to a full AST, 15 at the Full tier |
| License | GPL-3.0-or-later (MIT for SolidLSP) | Apache-2.0 and MIT | MIT | AGPL-3.0 |
Scroll the table sideways to see every column.
Sources: Serena, Graphify, CodeGraph.
What each tool does well
Serena gives the agent the engines your editor uses for go-to-definition and rename. Because it stores no index, nothing goes stale, and its tools (find symbol, find references, replace symbol body) suit agents that edit a lot. Broad questions take many small lookups, so it made more tool calls than a bare agent in our run.
Graphify parses code with tree-sitter, with no model calls for code, and can add Markdown, PDFs and images through your assistant's model. It writes graph.html, GRAPH_REPORT.md and graph.json, so the graph is something a team browses as well as something an agent queries. It is the most-starred of the four (about 126,000 GitHub stars, against Serena's 30,000).
CodeGraph keeps a symbol and call graph in SQLite, with a file watcher to stay current, and exposes essentially one tool. That keeps its schema small and its answers cheap, and it was the second most-called tool in our Claude Code runs.
What repowise adds
repowise builds the same kind of call graph, then mines git history (hotspots, owners, files that change together), writes a page per module, extracts architectural decisions, scores code health and builds search embeddings. Agents reach all of it through ten tools such as get_overview, get_context, get_risk, get_why and get_answer.

The architecture map repowise builds from the call graph, shown for the repowise repository: modules as clusters, import weight as edge width.
Agent loop: tokens and tool calls
We ran each tool against the same django questions with a freshly built index on one pinned commit and byte-identical prompts, plus a bare agent as the control. On Codex every tool was called on every question, so the comparison is like for like. repowise cut output tokens by 31.6% and CodeGraph by 24.4%; more than one tool in this group works well.
Every question in django's question set, six arms, byte-identical prompts, each tool's full advertised surface, and a freshly built index on the same pinned commit. Every tool was called on every question, so this is like for like.
| Tool | Agent used it | Output tokens | vs bare agent | Tool calls | Leaner on | p |
|---|---|---|---|---|---|---|
| repowise | 44 / 44 | 1,250 | -31.6% | 3.8 | 37 of 44 | <0.0001 |
| CodeGraph | 44 / 44 | 1,383 | -24.4% | 4.0 | 37 of 44 | <0.0001 |
| Serena | 43 / 43 | 1,550 | -14.8% | 10.1 | 35 of 43 | <0.0001 |
| Graphify | 43 / 43 | 1,658 | -8.9% | 7.4 | 31 of 43 | 0.003 |
| code-review-graph | 43 / 43 | 1,710 | -6.0% | 7.2 | 26 of 43 | 0.046 |
| bare agent (control) | 0 / 44 | 1,828 | baseline | 7.2 | n/a | n/a |
Scroll the table sideways to see every column.
Codex (gpt-5.6-sol) on django/django at one pinned commit. Correcting for testing five tools at once, three reductions are solid and two are marginal. 5 of the 48 questions are missing from every arm equally because the run hit an API usage cap, so the figures are over the 43 questions all six arms completed; because all arms lost the same 5, the paired comparisons are unaffected.
On Claude Code the result depends on whether the agent chooses to call the tool at all. Output tokens fell 15.9% for repowise, and adoption varied from day to day (15 of 15, then 4 of 15, then 3 of 15 across three identical runs). Treat any adoption number as a fact about one harness on one day, and add a line to CLAUDE.md saying when to use the tool.
Retrieval: finding the right files
Graphify, CodeGraph and repowise were also tested on ContextBench: a real GitHub issue goes in, and the score is how many of the files the actual fix touched come back. Grading is deterministic, with no model as judge. Serena was not run because it stores nothing to retrieve from.
repowise get_answer reached 0.876 coverage on 42 instances sealed before any work began, and search_codebase reached 0.742 with 8.2 files per question. Head to head against CodeGraph, get_answer went 19 wins, 1 loss, 22 ties.
File coverage on 42 ContextBench instances pinned before any of this work started and kept sealed until the final measurement. Grading is deterministic and no LLM judge is involved.
| Tool | File coverage | Precision | Files served |
|---|---|---|---|
| repowise (get_answer) | 0.876 | 0.087 | 19.2 |
| repowise (search_codebase) | 0.742 | 0.168 | 8.2 |
| CodeGraph | 0.610 | 0.093 | 14.0 |
| Graphify | 0.546 | 0.033 | 34.5 |
| code-review-graph | 0.445 | 0.240 | 5.4 |
| cocoindex | 0.361 | 0.092 | 7.1 |
Scroll the table sideways to see every column.
n = 42 sealed instances (41 for cocoindex, measured 2026-08-09 on the same instances and grading; one instance never answered and is excluded, not scored zero). Head to head against CodeGraph, get_answer wins 19, loses 1, ties 22, sign test p = 0.00004. The pooled 112-instance figure would be 0.835 and is deliberately not quoted: averaging the halves loses the only number that matters, which is how the tool does on instances it has never seen.
Coverage alone rewards returning more files, so read the files-served column beside it. Our first run of this benchmark scored 0.228; the cause was query-time shortcuts that returned early, which we fixed in ordinary releases. The full account is in we benchmarked ourselves and came last.
Call-graph accuracy
A call graph is only useful if its edges are real. We graded each tool's call edges against compiler-produced graphs, as precision (how many edges are correct) and recall (how many real edges were found). Serena is absent because it asks language servers at query time and stores no graph to grade.
Precision / recall against call graphs generated by the Go and TypeScript toolchains. Both numbers must be read together.
| Oracle cell | Repowise | CodeGraph | codebase-memory | Graphify | code-review-graph |
|---|---|---|---|---|---|
| cobra / tests | 0.972 / 0.684 | 0.929 / 0.763 | 0.912 / 0.743 | 0.971 / 0.433 | 0.997 / 0.174 |
| gitleaks / no tests | 0.976 / 0.955 | 0.972 / 0.920 | 0.934 / 0.967 | 0.997 / 0.886 | 0.759 / 0.026 |
| gitleaks / tests | 0.974 / 0.914 | 0.971 / 0.895 | 0.922 / 0.945 | 0.995 / 0.832 | 0.800 / 0.032 |
| syft / no tests | 0.943 / 0.513 | 0.872 / 0.508 | 0.635 / 0.542 | 0.771 / 0.447 | 0.968 / 0.201 |
| syft / tests | 0.950 / 0.322 | 0.864 / 0.338 | 0.673 / 0.361 | 0.802 / 0.273 | 0.966 / 0.086 |
| zod / no tests | 0.992 / 0.703 | 0.729 / 0.373 | 0.987 / 0.694 | 0.825 / 0.248 | 0.932 / 0.652 |
| hono / no tests | 0.977 / 0.731 | 0.805 / 0.684 | 0.949 / 0.686 | 0.980 / 0.688 | 0.966 / 0.691 |
Scroll the table sideways to see every column.
Precision / recall in every cell. Five tools, seven cells, 37,853 oracle edges. No tool that finds as much of the graph as Repowise gets more of it right in any cell. Repowise does not lead recall in the five Go cells and is most precise outright in only one cell.
Build cost
CodeGraph builds a call graph in seconds. repowise indexes django in 366.8s because the same pass also mines git history, extracts decisions and scores health, which makes it 22x CodeGraph's time like for like. Graph-only construction across 35 repositories:
Graph construction only across the same 35 repositories. Three timed runs per cell after a discarded warmup; 175 cells and no failures.
| Tool | Median build | Median peak memory | Fastest on |
|---|---|---|---|
| repowise | 2.77s | 75 MB | 14 of 35 |
| CodeGraph | 3.65s | 757 MB | 16 of 35 |
| codebase-memory-mcp | 6.21s | 1,113 MB | 5 of 35 |
| code-review-graph | 9.97s | 361 MB | 0 |
| Graphify | 12.23s | 860 MB | 0 |
Scroll the table sideways to see every column.
Memory is a clean sweep: Repowise is lowest on 35 of 35 repositories. Speed is level, not a win; CodeGraph is fastest on 16 repositories and Repowise on 14. Repowise builds this arm in memory without serialization, while CodeGraph writes SQLite.
All three indexers update after edits: CodeGraph with a file watcher, Graphify with a git hook or --watch, and repowise incrementally.
Which one to pick
- Pick Serena if your agent edits a lot of code and you want IDE-grade symbol operations with nothing to rebuild.
- Pick Graphify if you want a graph you can open, explore and share, with docs and PDFs in the same graph.
- Pick CodeGraph if a fast local call graph and a build measured in seconds is what you need.
- Pick repowise if agent questions are about history and risk as much as structure (who owns this, what changes with it, why is it built this way, what is safe to delete), or if you want one index in Claude.ai, ChatGPT, Cursor and Claude Code over hosted MCP.
- Use two together when edits and broad questions both matter: Serena for edits, one graph tool for orientation.
Our compare pages go through each pairing: CodeGraph, Serena and Graphify.
Try it on your own repo
pip install repowise
cd your-repo
repowise init
Point your agent at repowise, ask one structural question and one history question, and run the same two through the tool you use today. Raw data from our runs, including invalidated ones, is on the benchmarks page.
How we measured
Agent loop: django/django at one pinned commit, Codex on the questions all arms completed, Claude Code on a smaller set. Retrieval: ContextBench, 42 sealed Python and Go instances. Call graph: compiler output as ground truth. Index time: django on one machine. Each competitor was set up from its own docs; Serena needs explicit project activation, which we did. The agent loop covers one repository and short questions, retrieval measures finding the right files rather than writing a better fix, and all four projects ship often.
FAQ
- What is the difference between Serena and Graphify?
- Serena has no stored index: it queries language servers live and gives the agent symbol-level read and edit tools. Graphify builds a knowledge graph ahead of time from tree-sitter parsing, optionally including docs and PDFs, and produces files people can browse.
- What are the best Graphify alternatives?
- CodeGraph for a fast local call graph with one simple tool, Serena for live symbol editing, and repowise if you also want git history, ownership, generated docs and health in the same index. In our Codex run on django, CodeGraph and repowise both reduced output tokens more than Graphify did.
- What are the best CodeGraph alternatives?
- Serena suits symbol-level editing with no index to build, Graphify suits teams that want a shareable graph view, and repowise suits agents that need history and risk context. If index speed matters most, CodeGraph is hard to beat.
- Is there a Serena alternative that does not need language servers?
- Yes. CodeGraph, Graphify and repowise parse code with tree-sitter and store the result, so they need no language server per language. A stored index must be updated after edits, which all three do incrementally or with a watcher or git hook.
- Can I use more than one of these together?
- Yes. A common pairing is Serena for edits plus one graph tool for broad questions. Every tool's schema loads into the prompt, so check how often the agent calls each server and tell it in
CLAUDE.mdwhich to use for which question.



