sqry — semantic code search engine
$ sqry.dev --view <TAB>
sqry — semantic code search engine
Paste this into your AI agent (Claude Code, Codex, Gemini, Cursor, Windsurf):
Read https://sqry.dev/install.md and follow the steps to install sqry and configure yourself as an MCP client.
or install manually
curl -fsSL https://raw.githubusercontent.com/verivus-oss/sqry/main/scripts/install.sh | bash -s -- --component all
$
sqry index .
✓ 384,291 nodes · 1,302,847 edges · 2.4s
$
sqry query "callers:authenticate"
src/auth/middleware.rs:42 validate_token
src/api/routes.rs:118 check_session
src/tests/auth_test.rs:67 test_login_flow
src/api/routes.rs:118 check_session
src/tests/auth_test.rs:67 test_login_flow
$
sqry graph trace-path main handle_request
main → router::dispatch → api::handle_request
$
sqry unused --lang rust
src/legacy/cache.rs:88 evict_stale (0 callers)
src/util/format.rs:210 pretty_bytes (0 callers)
src/util/format.rs:210 pretty_bytes (0 callers)
$ rg "authenticate"
src/auth/mod.rs:
pub fn authenticate(credentials: &Credentials) ->
src/auth/middleware.rs:
// calls authenticate
src/tests/auth_test.rs:
authenticate(&mock_user)
src/api/routes.rs:
let user = authenticate(req);
src/docs/README.md:
Call `authenticate()` to...
src/api/openapi.yaml:
description: "authenticate the user"
pub fn authenticate(credentials: &Credentials) ->
src/auth/middleware.rs:
// calls authenticate
src/tests/auth_test.rs:
authenticate(&mock_user)
src/api/routes.rs:
let user = authenticate(req);
src/docs/README.md:
Call `authenticate()` to...
src/api/openapi.yaml:
description: "authenticate the user"
6 text matches. Which ones actually call it?
$ sqry query "callers:authenticate"
src/auth/middleware.rs:42 validate_token
src/api/routes.rs:118 check_session
src/tests/auth_test.rs:67 test_login_flow
src/api/routes.rs:118 check_session
src/tests/auth_test.rs:67 test_login_flow
3 callers. 12ms.
sqry parses source code into an AST, builds a graph of symbols and relationships, then answers structural queries exactly.
callers:authenticate
→ who calls this function
callees:main
→ what does main() call
impl:Serialize
→ every Serialize implementation
sqry graph trace-path
→ execution path between two symbols
sqry cycles
→ circular dependency detection
sqry unused
→ dead code
These are questions ripgrep cannot answer.
BENCHMARKS
| Metric | Value | Notes |
|---|---|---|
| Graph query (warm cache) | 4 ms | vs 452 ms cold parse |
| Graph query (cold) | 12-21 ms | vs 1,300-2,400 ms embedding search |
| JS indexing throughput | 760K LOC/s | parallel graph indexing |
| C++ indexing throughput | 1.1M LOC/s | |
| Linux kernel index | 2m20s | 12.3M nodes, 20.4M edges |
| Kernel C indirect-call pass | 29.5s | sqry 27.0.5, Linux 1e9cdc2 |
| Kernel caller query (CLI) | 0.8-1.5s | printk, 100 results, graph execution |
| Kernel caller query (MCP warm) | 6 ms | printk, daemon-resident graph |
INTEGRATION
FAQ
Semantic code search, answered
What is sqry?
sqry is a semantic code search engine. It parses source into an abstract syntax tree (AST), builds a graph of symbols and their relationships, and answers structural queries exactly: who calls this function, every implementation of this trait, and other questions text search cannot answer reliably. It runs fully locally, supports 37 languages, and is MIT-licensed.
How is semantic code search different from grep or ripgrep?
grep and ripgrep match strings. They return every line where a name appears, including comments, docs, and the definition, with no model of what calls what. sqry resolves the AST and call graph, so callers:authenticate returns only the functions that call authenticate(), usually in a few milliseconds.
How is sqry different from embedding or vector code search?
Embedding search converts code to vectors and returns approximate matches, often 1,400 ms or more per query, usually via a cloud API. sqry queries a precomputed AST graph directly: exact results in roughly 12 ms, fully local, no vectors, no telemetry.
Does sqry work with AI agents and MCP?
Yes. sqry ships a Model Context Protocol (MCP) server with 38 tools, so Claude, Codex, Gemini, Cursor, and Windsurf can query your codebase structure and call graph directly. It also ships a Language Server Protocol (LSP) server for VS Code, Neovim, and Helix.
Which programming languages does sqry support?
37 language plugins. 28 have full call-graph and relation support, including Rust, C, C++, Go, Java, Python, TypeScript, JavaScript, C#, Kotlin, Swift, Scala, Ruby, and PHP. Nine more provide symbol and import extraction.
Is sqry free, local, and private?
sqry is open source under the MIT license and runs entirely on your machine. No source code leaves your machine, and there is no telemetry.
INSTALL
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/verivus-oss/sqry/main/scripts/install.sh | bash -s -- --component all
Windows
irm https://raw.githubusercontent.com/verivus-oss/sqry/main/scripts/install.ps1 | iex
crates.io
cargo install sqry-cli
CC++RustShellZigJavaScriptTypeScriptDartKotlinSwiftScalaC#GoJavaPythonRubyPHPLuaRGroovyElixirSQLSvelteVueHTMLCSSHaskellPerl
TerraformPuppetPulumiApexABAPPL/SQLServiceNow XanaduServiceNow XMLJSON
Sigstore DSSE attestation · checksums · release manifest · audited deps · Details →