Skip to content
Canopy is in pre-release. These docs describe the product at its public launch — commands, tool names, and integration examples reflect what you'll see once binaries ship. Join the waitlist →

Migrate from Sourcegraph

Sourcegraph discontinued the individual/indie tier in July 2025. If you were using Sourcegraph for code search and navigation, this guide maps those workflows onto Canopy.

Two things. First, Canopy runs entirely locally: no server to run, no Docker container to maintain, no cloud account. The index lives in ~/.canopy/ and updates incrementally as files change.

Second, the interaction model changes. Sourcegraph returns search results you read through; Canopy returns answers. One tool — canopy_answer over MCP, or canopy answer "<question>" from the shell — routes each question to a deterministic recipe over the index: definition lookup, dependents, ownership, coverage, architecture.

SourcegraphCanopy question
Go to definition”where is the function createPayment defined?”
Find references”what calls createPayment?” or “what depends on src/lib/payments.ts?”
File overview / hover docs”what does src/lib/payments.ts do?” or “public surface of src/lib/payments.ts”
Symbol search”list functions defined in src/lib/”
Keyword / literal searchAsk about the thing directly: “how does checkout work?”
Ownership / blame”who last changed src/lib/payments.ts?”
Insights / repo metrics”architecture overview”
Cross-repo searchPro tier multi-repo registry: canopy repo add each repo, then canopy answer "<q>" /path/to/other-repo
Batch changesNot available — Canopy is read-only intelligence

Specific question shapes beat generic ones. “how does checkout work?” is the semantic fallback — the weakest recipe. When you know the entity, name its type and backtick it.

Terminal window
curl -fsSL https://downloads.canopy.gulfshieldtech.com/releases/latest/canopy-x86_64-unknown-linux-gnu.tar.gz \
| tar -xz -C ~/.local/bin
canopy --version

See Install Canopy for all platforms and Gatekeeper handling on macOS.

Terminal window
cd /path/to/your/repo
canopy setup

canopy setup is the whole onboarding: license, embedding runtime, summary backend, editor wiring, and the initial index, each with a default you can accept. When it finishes, the repo is indexed and every detected MCP editor is already connected. canopy setup --yes runs it with zero prompts.

From the shell:

Terminal window
canopy answer "where is the function `createPayment` defined?"
canopy answer "what calls `createPayment`?"
canopy answer "what depends on `src/lib/payments.ts`?"
canopy answer "who last changed `src/lib/payments.ts`?"
canopy answer "architecture overview"

Or from your editor — the same canopy_answer tool is available via MCP in Claude Code, Cursor, Zed, and VS Code + Continue.

Regex and structural search patterns: there is no regex query language. Ask for the fact the pattern was hunting — “what calls createPayment?” replaces the createPayment\(.*\) regex, and the answer is a resolved call list rather than a page of text matches. For raw text scans that aren’t questions about code structure, grep remains the right tool; Canopy replaces the questions, not every text scan.

  • Community (free) — full local AST + full-text index, keyword answer recipes, the MCP server.
  • Solo — adds semantic search (embeddings), the answer-quality lever for concept questions.
  • Pro — adds the multi-repo registry, cross-repo search, and CI mode.

Activate with canopy activate <your-license-key>. A 14-day trial is available at canopy.gulfshieldtech.com.

  • Batch changes — Canopy is a read-only intelligence tool. It doesn’t write code.
  • Saved searches / code monitors — no persistent search subscriptions. Ask on demand, or run canopy ci in CI for recurring health checks.

Vague questions return weak answers Sourcegraph habits produce keyword queries (“checkout”). Canopy rewards full questions with the entity type named and paths/symbols backticked. “what does src/checkout/session.ts do?” beats “checkout”.

“Index not found” canopy answer and canopy serve auto-detect the repo from the current directory. Run them from the repo root you indexed, or pass the repo path explicitly: canopy answer "architecture overview" /path/to/repo.