Benchmarks · Public data · Pinned commits

Measured,
not claimed.

Every number on this page was measured on public repositories at pinned commits, against answer keys we do not control, and ships with its sample size and conditions. The harnesses and every raw run are open, so you can check any of it.

of the files each fix needed, found
0.876of the files each fix needed, found0.610 for the next tool

n = 42 · p = 0.00004 · Aug 2026

fewer agent output tokens
31.6%fewer agent output tokensagainst a bare agent, on Codex

n = 43 · p = <0.0001 · Aug 2026

the defects CodeScene surfaces
2.3xthe defects CodeScene surfacessame files, same review budget

n = 2,770 · p = 0.003 · Aug 2026

of call edges correct, hand-graded
85.7%of call edges correct, hand-graded58.6% for CodeGraph, 9 languages

n = 280 · Aug 2026

01Retrieval

The right files, first time.

On 42 ContextBench instances sealed from all development, get_answer found 0.876 of the files each fix needed. The next tool found 0.610. Graded deterministically, with no LLM judge.

contextbench · file coverage · sealed split
  • repowise (get_answer)0.876
  • repowise (search_codebase)0.742
  • CodeGraph0.610
  • Graphify0.546
  • code-review-graph0.445
  • cocoindex0.361

The split was fixed before any work began. Repowise scores higher on the sealed half than on the half it was developed against.

sealed 0.876 · development 0.810 · n = 42 · p = 0.00004 · Aug 2026

0.876

File coverage, get_answer, on 42 sealed instances

n = 42 · p = 0.00004 · Aug 2026

0.742

search_codebase coverage, from 8.2 files per question: the most coverage per file served

n = 42 · p = 0.021 · Aug 2026

02Agent efficiency

A third less work for your agent.

Across 43 django questions on Codex, agents with Repowise wrote 31.6% fewer output tokens than a bare agent and reached answers in 3.8 tool calls instead of 7.2. Same prompt, fresh index, six arms.

django · output tokens per question · codex
  • repowise1,250
  • CodeGraph1,383
  • Serena1,550
  • Graphify1,658
  • code-review-graph1,710
  • bare agent (control)1,828

n = 43 · p = <0.0001 · Aug 2026 · lower is leaner

Codex

31.6%

n = 43 · p = <0.0001

Claude Code

15.9%

n = 15 · p = 0.035

Local qwen3:8b

47.9%

n = 15 · p = 0.00006

Fewer output tokens on every agent harness measured.

3.8

Tool calls to reach an answer, against a bare agent's 7.2

n = 43 · Aug 2026

37 of 44

Questions where the loop was leaner than the bare agent's

n = 44 · p = <0.0001 · Aug 2026

34.3%

Saved on the harder half of the questions: the more exploring a task needs, the more Repowise saves

n = 22 · Aug 2026

03The code graph

A call graph you can build on.

Checked against the Go and TypeScript compilers' own answer keys, Repowise call edges are 0.976 to 0.995 precise. In 7 of 7 cells, no tool that finds as much of the graph gets more of it right.

call edges · graded by hand · 9 languages
Correct call edges
  • repowise85.7%
  • CodeGraph 1.5.058.6%
Test links, inferred with no coverage run
  • tests that reach a file95.7%
  • tests to run for a change97.5%

n = 280 · Aug 2026 per tool · 560 rows, every verdict published

0.976 to 0.995

Repowise call-edge precision against the Go and TypeScript compilers

n = 7 · Oct 2026

7 of 7

Compiler-graded cells where no tool beats both our precision and recall

n = 7 · Aug 2026

97.5%

Precision of the inferred list of tests to run for a change

n = 47 · Aug 2026

04Code health

Health scores that find tomorrow's bugs.

Scored at a historical commit and checked against the next six months of bug fixes, Repowise health reaches ROC AUC 0.74 across 21 repositories, 9 languages. Under the same review budget it surfaces 2.3x the defective files CodeScene does.

health vs codescene · paired · same files, same labels
Recall at a 20%-of-lines review budget
  • repowise0.173
  • CodeScene0.074
Effort-aware ranking (Popt)
  • repowise0.607
  • CodeScene0.462
Defect density, size-normalized
  • repowise2.18x
  • CodeScene0.56x

n = 2,770 · p = 0.003 · Aug 2026 · same leakage-free commit

0.74

ROC AUC predicting which files get bug-fixed over the next six months

n = 2,826 · Aug 2026

2.3x

Defects surfaced under a fixed 20%-of-lines review budget, against CodeScene

n = 2,770 · p = 0.003 · Aug 2026

+0.10 AUC

Margin over ranking by recent churn

n = 2,826 · p = <1e-9 · Aug 2026

05Command output

Noisy output, distilled.

repowise distill puts errors first, keeps the exit code, and makes every omission recoverable. A pytest run with 11 failures shrinks by 61% with every failure line kept.

terminal · tokens the agent reads
$ repowise distill pytest -q (11 failures)61% saved
distilledraw output
$ repowise distill git log -5089% saved
distilledraw output

errors first · exit code preserved · every omission recoverable by marker

06Speed and memory

Light enough for a laptop and CI.

Building the call graph, Repowise used the least memory on 35 of 35 repositories: a median of 75 MB against 757 MB for CodeGraph. It has indexed repositories of up to 58,924 files on a single laptop.

call graph build · median peak memory · 35 repos
  • repowise75 MB
  • code-review-graph361 MB
  • CodeGraph757 MB
  • Graphify860 MB
  • codebase-memory-mcp1,113 MB

n = 35 · Aug 2026 · 175 cells · three timed runs each · lower is better

35 of 35

Repositories where Repowise used the least memory to build the graph

n = 35 · Aug 2026

58,924 files

Largest repository indexed end to end on one laptop (dotnet/runtime)

n = 1 · Oct 2026

Method

Built to survive a rerun.

When JetBrains reran two token-saving tools on real agent work, an advertised 65% saving measured 8.5% and another came out 7.6% more expensive. Numbers in this category hold up when the method ships with them, so ours does.

  1. 01

    Pre-register

    Each question and its expected test is committed before a scored run spends anything.

  2. 02

    Seal a split

    Held-out instances stay untouched until the final measurement, then run once.

  3. 03

    Prove every arm is live

    Each tool is shown answering before its score counts, so a misconfigured server never reads as a result.

  4. 04

    Publish every row

    Sample size, conditions and raw output ship with each number, for every tool in the field.

Tokens, not dollars

Prompt caching ties dollar cost to run order: an arm's position correlated -0.487 with dollar cost. Output tokens are never cached and correlated +0.010, so they are the figure we report.

What it took

471 agent runs for the agent-loop tables and 748 index builds for retrieval, each arm on its own fresh index at the instance's own commit.

Reproduce it

$ git clone https://github.com/repowise-dev/repowise-bench

Harnesses, pre-registrations with their commit timestamps, statistical tests and every raw run, kept permanently.

Reproduction guide

Measured against: CodeGraph 1.5.0 · Graphify 0.9.31 · Serena 1.6.2.dev0 · code-review-graph 2.3.7 · codebase-memory-mcp 0.10.8 · cocoindex 2026-08-09

The complete record

Every row we ran.

Every row we ran, including the ones another tool leads, is in the full record below, scoped to the test and the field that produced it. A full Repowise index also builds history, documentation, decisions and health in one pass, so the ledger lists its build time beside graph-only tools too.

Every benchmark result, with its measured field and verdict
QuestionMeasured againstResultVerdict
Finding the right filesCodeGraph, Graphify, code-review-graph, cocoindex0.876 sealed-set coverage; 19 wins, 1 loss, 22 ties head to headRepowise leads
Work saved in a real agent loopFour competing tools and a bare-agent control31.6% fewer Codex output tokens; fewest tool calls in the fieldRepowise leads
Call-graph correctnessFive tools; compiler oracles on Go and TypeScriptNo measured tool that finds as much of the graph gets more of it right, in 7 of 7 cells; 85.7% correct in a nine-language hand audit against CodeGraphRepowise leads
How much of the call graph we findCodeGraph, codebase-memory-mcp, Graphify, code-review-graphTwo tools draw a larger graph on the Go cells; Repowise leads recall on both TypeScript cellsAnother tool leads
Code health predicts defectsCodeScene on the same files and future bug labelsRepowise leads recall and effort-aware ranking; CodeScene keeps a shorter review list and its business-impact axisTrade-off
Memory to build the call graphCodeGraph, codebase-memory-mcp, Graphify, code-review-graphLeast memory on 35 of 35 repositories; build speed level with CodeGraphRepowise leads
Full index build timeCodeGraph, Graphify, code-review-graphA graph-only tool indexes 22x faster; Repowise builds history, docs, decisions and health in the same pass, and updates incrementally afterAnother tool leads
Documentation and PR reviewDeepWiki, Swimm, CodeRabbit, GreptileShipped capabilities, with no controlled head-to-head published yetNot yet measured

Full tables · 9

Finding the right files

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.

ToolFile coveragePrecisionFiles served
repowise (get_answer)0.8760.08719.2
repowise (search_codebase)0.7420.1688.2
CodeGraph0.6100.09314.0
Graphify0.5460.03334.5
code-review-graph0.4450.2405.4
cocoindex0.3610.0927.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.

What changes in a real agent loop, on Codex

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.

ToolAgent used itOutput tokensvs bare agentTool callsLeaner onp
repowise44 / 441,250-31.6%3.837 of 44<0.0001
CodeGraph44 / 441,383-24.4%4.037 of 44<0.0001
Serena43 / 431,550-14.8%10.135 of 43<0.0001
Graphify43 / 431,658-8.9%7.431 of 430.003
code-review-graph43 / 431,710-6.0%7.226 of 430.046
bare agent (control)0 / 441,828baseline7.2n/an/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.

The second proof point, on Claude Code

The same six arms, the same servers and the same indexes, on a different agent harness. The result depends on the harness as much as on the tools.

ToolTools advertisedSchema cost (chars)Agent used itOutput tokensvs bare agentLeaner onp
repowise1017,56115 / 152,420-15.9%12 of 150.035
CodeGraph11,56713 / 152,540-11.7%10 of 150.302
Serena2929,0504 / 152,551-11.3%8 of 151.000
code-review-graph3028,1180 / 152,768-3.8%10 of 150.302
Graphify105,4823 / 152,8780.0%7 of 151.000
bare agent (control)00n/a2,877baselinen/an/a

Scroll the table sideways to see every column.

Claude Code (claude-sonnet-5), 15 questions. Treat the "agent used it" column as unstable, including our own 15 of 15: rerunning the same setup on later days returned 4 of 15 and then 3 of 15 for us, and 2 of 14 for CodeGraph. It is a property of the pairing of tool and harness on a given day, not of the tool. The same 15 questions on Opus called repowise on 7, inside the band fixed in advance as inconclusive, and that run's token column failed its own control, so no token figure is quoted from it. No quality or cost figure may be compared across the two harnesses, which were graded by different judges.

The third harness, a local model

The same 15 questions and seed on qwen3:8b under Ollama via opencode, where inference is free and the saving shows up as time. Every cell called its tool.

RowAgent used itOutput tokensvs bare agentLeaner onpWall clockvs bare agent
repowise, full surface15 / 151,319-40.8%15 of 150.00006117s-27.5%
repowise, local-only tools15 / 151,172-47.9%15 of 150.0000696s-41.5%
bare agent (control)0 / 152,336baselinen/an/a171sbaseline

Scroll the table sideways to see every column.

Two repowise rows, never combined. get_answer writes its answer with a hosted model, so the second row switches it off and leaves only tools that run against the local index; instructed directly to call get_answer, that agent could not reach it in any of its 15 cells. Only repowise and the control were run on this harness. The local-only row's answer quality is a null against the bare agent, so the claim is about as good an answer in roughly half the wall clock.

Compiler-graded call-graph quality

Precision / recall against call graphs generated by the Go and TypeScript toolchains. Both numbers must be read together.

Oracle cellRepowiseCodeGraphcodebase-memoryGraphifycode-review-graph
cobra / tests0.972 / 0.6840.929 / 0.7630.912 / 0.7430.971 / 0.4330.997 / 0.174
gitleaks / no tests0.976 / 0.9550.972 / 0.9200.934 / 0.9670.997 / 0.8860.759 / 0.026
gitleaks / tests0.974 / 0.9140.971 / 0.8950.922 / 0.9450.995 / 0.8320.800 / 0.032
syft / no tests0.943 / 0.5130.872 / 0.5080.635 / 0.5420.771 / 0.4470.968 / 0.201
syft / tests0.950 / 0.3220.864 / 0.3380.673 / 0.3610.802 / 0.2730.966 / 0.086
zod / no tests0.992 / 0.7030.729 / 0.3730.987 / 0.6940.825 / 0.2480.932 / 0.652
hono / no tests0.977 / 0.7310.805 / 0.6840.949 / 0.6860.980 / 0.6880.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.

Source audit across nine languages

Thirty stratified call edges per language per tool (forty for Java), read from source with imports and enclosing scope open.

ToolCorrect / n95% CI
repowise240 / 280 = 85.7%81.1–89.3
CodeGraph 1.5.0164 / 280 = 58.6%52.7–64.2

Scroll the table sideways to see every column.

560 rows across nine languages; Java is read at 40 rows per side. Four language cells separate and five are ties. This comparison covers Repowise and CodeGraph only; the compiler-oracle table above covers the five-tool field on Go and TypeScript.

Code health against CodeScene

Both tools scored the same 2,770 files at the same leakage-free commit against the same defect labels. Paired tests throughout.

Paired testrepowiseCodeScenep
Recall at a 20%-of-lines review budget0.1730.0740.003
Effort-aware ranking (Popt)0.6070.4620.003
Defect density, size-normalized (below 4.0 : 8.0 and above)2.18x0.56x0.003
Discrimination (ROC AUC)0.7310.7050.054, marginal
Precision at a 20%-of-lines review budget0.5800.6360.64, a tie

Scroll the table sideways to see every column.

CodeScene's precision lead is not statistically significant, but the behaviour behind it is worth having: it flags about 27 files where we flag 132. That is a more conservative threshold, trading recall for a short list a team will actually work through, and it is a deliberate design choice, not a weaker model. Our AUC edge is marginal, not significant at 0.05.

Call-graph construction cost

Graph construction only across the same 35 repositories. Three timed runs per cell after a discarded warmup; 175 cells and no failures.

ToolMedian buildMedian peak memoryFastest on
repowise2.77s75 MB14 of 35
CodeGraph3.65s757 MB16 of 35
codebase-memory-mcp6.21s1,113 MB5 of 35
code-review-graph9.97s361 MB0
Graphify12.23s860 MB0

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.

Full index build time

We are the slowest indexer in the field, on every repo we measured, and it is not close. Measured on django/django.

ToolIndex timeWhat it builds
CodeGraph16.4scall graph
code-review-graph44.8scall graph
Graphify141.5scall graph, communities
repowise (--no-prose)366.8sgraph, git history, decisions, code health
repowise (default, prose on)1,058sall of the above plus generated documentation

Scroll the table sideways to see every column.

22x CodeGraph like for like, and 135x with prose on, which is what a default repowise init actually costs you. Both numbers ship. The reason is not an optimisation we forgot: in that same run repowise built 36,485 graph nodes, mined history across 2,630 files, rendered and embedded 3,392 documentation pages, extracted decision records and produced 5,317 health findings. It is also a one-time cost, since updates after the first index are incremental.

FREQUENTLY ASKED

Questions, answered

Did you tune against this benchmark and then publish the result?

The 42 sealed ContextBench instances were split off by instance id, pinned and committed before any of the work started, and were touched once, at publication. Repowise scores 0.876 on that sealed half and 0.810 on the half it was developed against. CodeGraph, which nobody tuned against, scores 0.6093 and 0.6095 on the two halves, so they are equally hard.

Why do you report output tokens instead of dollars per question?

Because dollars measure the run schedule, not the tool. Prompt caching ties dollar cost to the order arms run in: in our harness that correlation was -0.487. Output tokens are never cached, and their correlation with run order is +0.010, so they measure the work the agent actually did.

Does Repowise lead every row?

No tool leads every row, and the complete record on this page lists all of them with their field and verdict. The clearest example is first-index time: a graph-only tool indexes faster, because a Repowise index also mines git history, generates documentation, extracts decisions and scores code health in the same pass. Updates after the first index are incremental.

Can I reproduce this?

Yes. The harnesses, the pre-registration files with their commit timestamps, the arm-parity rules, the statistical tests and every raw run are in the repowise-bench repository. Nothing on this page is measured on a private corpus.

Which tool versions were measured?

CodeGraph 1.5.0, Graphify 0.9.31, Serena 1.6.2.dev0, code-review-graph 2.3.7 and codebase-memory-mcp 0.10.8, measured in August 2026. Each competitor was configured and shown answering before its score counted, so every arm is measured working as intended.

Your repository next

Run it on code you know.

Index a repository free and see the same graph, health scores and agent context on your own code. For teams, we will walk through the results on your stack.