Canopy is in pre-release development. Join the waitlist →

Benchmarks

The question that matters: does an agent standing on Canopy answer more correctly, and what does it cost? Measured cold, per question, graded against ground truth that exists independently of Canopy — never against Canopy's own output. Numbers marked "coming soon" have not been measured on the reference hardware yet; we will not publish guesses.

version v2.0.0-alpha hardware MacBook Pro M3 Max, 48 GB unified memory updated 2026-07-05

Correctness & cost — canopy vs shell tooling

Same agent, same model, same questions. One arm answers with its shell tools (grep, cat, git); the other stands on a prebuilt Canopy index and makes a single routed canopy_answer call per question. Every cell is graded against repo / git / graph ground truth computed independently of Canopy.

Dataset Correctness (canopy vs shell) Tokens / question Cost per correct answer
Library suite
3 OSS repos · 270 questions · cold, per-question
0.932 vs 0.530 (+76%) 16,173 vs 51,495 (−69%) ~5× cheaper per correct answer
App corpus
Cal.com · 6,118 files · 39 cross-layer questions
0.923 vs 0.872 16,253 vs 80,915 (−80%) 81% cheaper per correct answer

The lift is the single routed call, not tool access: a control arm that handed the agent Canopy's full v1 tool catalog and let it orchestrate spent 2.3×–5.8× more than shell. Routing is a deterministic, corpus-validated function of the question — 360/360 on its labelled regression corpus, no LLM call, no network.

Full method, per-question artifacts, and every number's provenance are in the benchmark report shipped in the Canopy repository (docs/benchmarks/canopy-benchmark-report.md).

Indexing

Wall-clock time from canopy index . invocation to "index complete" on a cold cache. Includes tree-sitter AST parsing, Tantivy search index build, and SQLite write.

Reproduction

git clone <repo> /tmp/bench-repo
cd /tmp/bench-repo
time canopy index --full      # cold: wipes and rebuilds this repo's index
Repository Files Time Index size Status
gulf-shield-technologies/platform (Pith monorepo)
Internal reference — TypeScript/React Native monorepo
622 2.6s (AST + search) ~11 MB validated
torvalds/linux (v6.6)
Linux kernel — ~76K C source files
~76,000 coming soon coming soon coming soon
facebook/react (main)
React source — TypeScript monorepo
~6,800 coming soon coming soon coming soon
microsoft/TypeScript (main)
TypeScript compiler — TypeScript on TypeScript
~3,200 coming soon coming soon coming soon

gulf-shield-technologies/platform (Pith monorepo): Validated 2026-04-15 on build host, measured on v1.3.0 (the indexing pipeline; v2 changed the answer surface, not the indexer core). 98.4% parse success rate (10 config files excluded by JS grammar version mismatch).

Search latency

Measured end-to-end from tool call dispatch to result return within a running canopy serve process. Does not include MCP transport overhead or LLM inference time.

Reproduction (keyword)

cd /tmp/bench-repo && canopy index
# then time the answer path end-to-end:
time canopy answer "where is the function \`main\` defined?"
Query type p50 p95 p99 Status
Keyword search 29 ms — — validated
Semantic (vector) search — — — coming soon
Hybrid (keyword + semantic) — — — coming soon

Keyword p50 of 29 ms includes cold process start (Rust binary init + SQLite open + Tantivy load). In a persistent canopy serve process, hot-path query time is sub-millisecond.

canopy_answer latency by recipe

End-to-end latency for one routed canopy_answer call, by the recipe the router dispatches to. A recipe runs its whole chain server-side (graph traversal, coverage, git history) — each call replaces work the agent would otherwise do in 3–8 separate tool round-trips. The v1-era per-tool measurements were retired with the tool catalog; we don't relabel old numbers as new ones.

Tool What it does p50 p95 Status
canopy_answer — symbol locate 'where is the function `X` defined?' — AST symbol lookup — — coming soon
canopy_answer — dependents 'what depends on `path`?' — import-graph blast radius — — coming soon
canopy_answer — pre-edit dossier 'what should I know before editing `path`?' — dependents + coverage + history — — coming soon
canopy_answer — architecture 'architecture overview' — directory + module map — — coming soon
canopy_answer — concept (semantic) 'how does X work?' — two-tier semantic retrieval + cross-encoder rerank — — coming soon

Contribute a benchmark

Have Canopy running on a large or interesting codebase? We would love to include your numbers here. Send results to support@gulfshieldtech.com with:

  • Repo name and approximate file count (you can anonymize the repo name)
  • Hardware spec (processor, RAM)
  • Output of time canopy index --full
  • Canopy version (canopy --version)

We include all submitted benchmarks that are reproducible, regardless of whether they reflect well or poorly on Canopy. Honest data builds trust.

Run these benchmarks yourself on your own codebase.

Start 14-Day Free Trial