The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Sqry — Semantic Code Search listing page.
sqry is a local semantic code search tool. It parses source code into AST-backed symbol and relationship graphs so you can ask code questions that text search cannot answer reliably.
Everything runs on your machine. Indexing and querying make no network calls, and sqry sends no telemetry.
Website: https://sqry.dev
json is compiled but excluded by default as high-wall-clock, and 7 specialty plugins sit behind Cargo features. The sqry://meta/manifest MCP resource reports these counts for the binary you have installed.returns:<TypeName> and resolution-aware resolved_via:<kind> predicates for supported graph paths. See Call resolution predicates.FfiCall edges from mechanisms such as extern "C", DllImport / P/Invoke, JNI, Ruby FFI attach_function, and R .Call / Rcpp. Query them with sqry graph cross-language or the cross_language_edges MCP tool.sqry shape-match, which finds functions with similar body structure independently of their identifiers.sqry rules run executes shipped rule IDs and packs, or your own TOML rule packs, against the graph; the rules_run MCP tool exposes the same engine.sqry context-propagation) for call sites that drop context.Context.sqry cache expand builds a macro expansion cache, --expand-cache materializes macro-generated symbols as searchable nodes, and --cfg marks #[cfg]-gated symbols active or inactive. Both index-path options are execution-free.sqry visualize, sqry export).sqry shell) and batch runner (sqry batch) that keep the session cache warm across many queries.sqry update and sqry watch..sqry-workspace registries and VS Code .code-workspace sqry.workspace blocks. sqryd for editor, MCP, and repeated-agent workflows.sqry overview (and the matching generate_overview MCP tool for agents): a single report of the load-bearing hubs, path/package subsystems, complexity hotspots, potential issues, and ready-to-run follow-up queries.sqry-mcp currently exposes 39 tools; daemon-hosted MCP exposes a 17-tool subset. Use tools/list, sqry-mcp --list-tools, or sqry://meta/manifest as the authoritative catalog.Use sqry when you need structural answers:
Use ripgrep for simple text search, ast-grep for syntax rewrite patterns, language linters for policy enforcement, and an IDE language server for full editor semantics. sqry stays focused on local semantic code search.
The shell installer downloads release assets, verifies SHA256 checksums by default, and installs:
sqrysqry-mcpsqry-lspsqrydSupported release platforms are Linux x86_64/arm64 (glibc and musl builds), macOS x86_64/arm64, and Windows x86_64.
Useful options:
--verify-signatures requires gh or Cosign. It verifies the current release-artifacts.attestation.json GitHub artifact attestation from release-distribute.yml; older releases can still fall back to legacy per-asset Cosign bundles. SHA256 verification remains the default integrity check.
The PowerShell installer downloads the Windows x86_64 release ZIP, verifies checksums by default, and installs sqry.exe, sqry-mcp.exe, sqry-lsp.exe, and sqryd.exe into the user install directory.
Use a pinned release when reproducibility matters:
Homebrew is the package-manager surface currently backed by the public release manifest.
The formula installs sqry, sqry-mcp, sqry-lsp, and sqryd for Linux x86_64/arm64 and macOS x86_64/arm64.
Scoop, Winget, AUR, Nix, and Snap are not advertised as public release assets until their release-control surfaces are complete and validated.
Requirements:
1.94+ with Edition 2024.1.94.1 in rust-toolchain.toml.Index artifacts live under .sqry/. Add .sqry/ and legacy .sqry-index artifacts to your project ignore rules unless you intentionally share them.
--validate takes off, warn (default), or fail. Under fail a stale index aborts with exit code 2 instead of returning results computed from it, which is what makes it usable as a CI gate. --auto-rebuild rebuilds once and retries, and is a no-op under --validate off. Thresholds are tunable: --threshold-orphaned-files defaults to 0.20, so validation trips when more than 20% of indexed files no longer exist on disk, and --threshold-dangling-refs defaults to 0.05.
Note the limit: these are global flags, but validation is evaluated on the snapshot-loading path taken by search. Passing them to sqry index when an index already exists does not trigger a validation pass.
--metrics-format prometheus emits OpenMetrics-compatible text for scraping index status.
sqry records the plugin set that built an index so later graph-loading commands reuse the same semantics.
The registry has fast plugins, high-wall-clock plugins, and optional specialty plugins. json is high-wall-clock. Optional specialty plugins include apex, abap, servicenow-xanadu-js, servicenow-xml, terraform, puppet, and pulumi when compiled with the matching Cargo features or specialty-plugins.
See Indexing for artifact cleanup, plugin tiers, and high-cost behavior.
returns:<TypeName> uses graph TypeOf{Return} edges.
resolved_via:<kind> filters call edges by what kind of binding produced the edge. That is a different question from how confident the resolver is: a duck_typed edge is not a low-confidence direct edge, it is a record that the call was bound by Python duck typing rather than by a syntactic reference. Knowing the mechanism lets you separate calls the compiler could have checked from calls that only resolve at runtime.
The parser accepts eight values:
| Value | Binding mechanism |
|---|---|
direct | Syntactic call resolved by the language plugin |
type_match | Indirect call matched against compatible signatures by type |
binding_plane | Designated-initializer witnesses in the binding plane |
virtual_dispatch | JVM virtual or abstract method dispatch |
interface_dispatch | Go interface dispatch |
duck_typed | Python duck-typed dispatch |
structural | TypeScript structural dispatch |
promiscuous_elided | Fan-out cap exceeded, so the resolver recorded a diagnostic self-edge instead of N targets |
framework filtering is exposed as a typed MCP parameter. The planner also parses framework:<id>, but framework-route metadata is only populated where extractors have run. Treat a non-match as absent metadata, not proof that a framework is unused.
See Advanced Analysis for graph predicates, snapshot wording, impact analysis, semantic diff, and visualization.
Use a workspace when one logical project spans several repositories or folders.
Workspace configuration can come from a .sqry-workspace registry or a VS Code .code-workspace file with a sqry.workspace block. See Workspaces.
sqryd keeps graph state warm for repeated CLI, LSP, MCP, and editor workflows.
See Daemon Mode.
Configure MCP clients with:
Standalone sqry-mcp is the full local tool surface. sqry-mcp --daemon attaches to sqryd and exposes the daemon-hosted subset. workspace_status.source_root_id is an opaque display/correlation token, not a path. See MCP Guide and the component docs in sqry-mcp/README.md.
MCP search tools keep string predicates and structured JSON parameters separate:
Use items:true or is_definition:true in query for definition-only query predicates. When calling list_symbols, use the structured items_only parameter:
If a graph was built before the V16 definition-signal snapshot format, definition-only query predicates and list_symbols.items_only return a reindexRequired / reindex-required advisory rather than trusting stale marker data.
For the VS Code extension, see sqry-vscode/README.md and sqry-vscode/USER_GUIDE.md.
release-artifacts.attestation.json asset and verifiable with gh attestation verify or Cosign. SHA256SUMS.txt ships alongside, and both installers verify checksums by default.cargo-vet (importing the Mozilla, Google, Bytecode Alliance, and ISRG audit sets), cargo-deny, and cargo-audit. Clippy runs as -D warnings.cargo-fuzz. cargo-mutants runs on changed lines per PR and against a canary-crate baseline on master; it currently reports rather than blocks.Do not assume an artifact is present unless it appears in the asset list for the release you are installing. To report a vulnerability, see SECURITY.md.
sqry is an MIT-licensed open-source project focused on one product goal: local semantic code search. It is not a hosted search platform, linter, IDE replacement, or general metrics platform.