v1.0.0 — First Stable Release
Released: 2025-04-14
The first production-ready release. Canopy now ships a complete codebase intelligence engine: AST parsing, dependency graph queries, health checks, a plugin system, git ingestion, coverage ingestion, SCIP import, and full-text keyword search — all reachable via 21 MCP tools and 11 CLI commands. Everything in this release is under the API stability guarantee.
MCP Server and Tools
Section titled “MCP Server and Tools”- 21 MCP tools reachable over JSON-RPC 2.0 stdio, grouped into seven categories:
- AST —
canopy_parse_file,canopy_extract_symbol - Graph —
canopy_trace_imports,canopy_trace_dependents,canopy_check_wiring,canopy_find_cycles,canopy_dependency_graph - Health —
canopy_health_check,canopy_architecture_map - Index —
canopy_index_status,canopy_reindex - Search —
canopy_search,canopy_search_symbols,canopy_pattern_search - Git —
canopy_git_history,canopy_git_blame - Workflow composites —
canopy_prepare,canopy_validate,canopy_understand - Ingest —
canopy_ingest_scip,canopy_coverage
- AST —
- Server instructions at handshake — the MCP
initializeresponse injects usage rules directly into the connected agent’s system prompt. Agents learn to callcanopy_preparebefore edits andcanopy_validateafter without being explicitly told. - Panic-safe dispatch — every tool call is wrapped in
catch_unwindso a panic in one handler returns a structured JSON-RPC error instead of crashing the server.
- 11 subcommands:
index,reindex,serve,status,search,pattern,health,map,ingest-scip,ingest-coverage,git-blame canopy serve --watch— background file-system watcher triggers incremental re-index on every save
Language Support
Section titled “Language Support”Five languages fully supported across the AST extractor, graph, and symbol search:
- TypeScript / JavaScript — functions, classes, interfaces, types, enums, variables; ES module imports/exports plus CommonJS
require;tsconfig.jsonpath mapping - Python — functions, classes, decorators;
importandfrom ... importstatements - Rust — functions, structs, enums, traits, impls, type aliases, constants;
usedeclarations with full path resolution (super, crate, relative);pubitems - Go — functions, types, structs, interfaces, methods;
importblocks; exported identifiers
Storage and Indexing
Section titled “Storage and Indexing”- SQLite backend via
rusqlite—files,symbols,imports,health_findings,chunkstables - Config layering — built-in defaults →
~/.canopy/config.toml(global) →<repo>/.canopy/config.toml(per-repo), last-wins - Full and incremental indexing — incremental walks file mtime and content hash; only changed files are re-parsed
Search
Section titled “Search”- Tantivy-powered full-text index with camelCase/snake_case tokenization — searching “payment” finds
processPayment,payment_handler,PaymentService - Symbol-name search across all indexed files with kind and language filters
- Structural pattern search via ast-grep with
$VARand$$$SPREADwildcards
Plugins
Section titled “Plugins”- Plugin system — extend health checks with project-specific rules in
.canopy/plugins/*.yaml - Plugin YAML schema (frozen as of this release):
id,name,description,severity(info/warning/error/critical),pattern(ast-grep),language,include/excludeglob lists - Plugins are discovered automatically on every
canopy healthrun andcanopy_health_checkMCP call
Git and Coverage
Section titled “Git and Coverage”forge-gitcrate — pure-Rust git history and blame viagix. Walks commit history into SQLite; per-file, per-line-range blame queries; hotspot analysis surfaces recently modified files incanopy_prepare- Coverage ingestion — auto-detects LCOV, Istanbul JSON, and Cobertura XML by file extension. Coverage line ranges are joined to symbol definitions so every symbol shows its test state in
canopy_prepareandcanopy_understand
forge-ingestcrate — SCIP index ingestion viaprost. Upgrades heuristic import edges to compiler-resolved edges. Available via thecanopy_ingest_scipMCP tool andcanopy ingest-scipCLI command
Distribution
Section titled “Distribution”- Cross-platform release builds — Linux x86-64, Linux ARM64, macOS (Intel and Apple Silicon)
Dockerfile— multi-stage:rust:slimbuilder +debian:bookworm-slimruntimedocker-compose.yml— containerizedcanopy servefor quick MCP setup
Stability Guarantee
Section titled “Stability Guarantee”This release establishes the public API. The following interfaces are frozen:
- 21 MCP tool signatures — parameter names, types, and return shapes
- 11 CLI subcommand flags and output formats
- Plugin YAML schema —
id,name,description,severity,pattern,language,include,exclude
Breaking changes require a major version bump. New optional parameters and new commands are non-breaking (minor bump).
Known Limitations
Section titled “Known Limitations”- Only TypeScript, JavaScript, Python, Rust, and Go are supported. C, C++, Java, Ruby, PHP, and C# are planned for future minor releases.
- Embeddings and semantic search are not included in v1.0.0. They ship in v1.1.0.
- No commercial licensing, heartbeat, or trial system yet — v1.0.0 runs freely with all features enabled. Licensing and tiering land in v1.2.0.