Benchmarks

Honest numbers. Reproducible. Updated quarterly. Numbers marked "coming soon" have not been measured against the reference hardware yet — we will not publish guesses.

version v1.3.0 hardware MacBook Pro M3 Max, 48 GB unified memory updated 2026-04-17

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
rm -rf ~/.canopy/indexes/bench-repo      # clear cached index
time canopy index . --with-search
Repository Files Time Index size Status
ironpine-labs/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

ironpine-labs/platform (Pith monorepo): Validated 2026-04-15 on build host. 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)

canopy index /tmp/bench-repo --with-search
# then in your MCP client:
# call canopy_search with the query and repo params
# check canopy stats --json for latency percentiles
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.

MCP tool call latency

End-to-end latency for composite workflow tools. These tools perform multiple internal operations (graph traversal, health checks, git history) so latency is higher than raw search — but each call replaces work the agent would otherwise do in 3-8 separate steps.

Tool What it does p50 p95 Status
canopy_prepare Pre-modification impact analysis: dependents, health, coverage, blame 350 ms validated
canopy_validate Post-modification verification: import resolution, breaking changes coming soon
canopy_understand Code comprehension: API surface, responsibility summary, usage patterns coming soon
canopy_health_check Full repository health scan: 21+ detectors 255 ms validated
canopy_search Full-text keyword search across indexed files 29 ms validated

Contribute a benchmark

Have Canopy running on a large or interesting codebase? We would love to include your numbers here. Send results to [email protected] with:

  • Repo name and approximate file count (you can anonymize the repo name)
  • Hardware spec (processor, RAM)
  • Output of time canopy index . --with-search
  • 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