Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Local search over your code and documents for AI agents.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
The maker has not listed install details in the registry. See the maker’s README below.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account semlith, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.51.1) reached the registry 4 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Rust on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Local search over your code and documents for AI agents.
Website · Install · Quick start · Agents · Portal · Benchmarks · Docs
An agent working in a large codebase either reads too much, which is slow and expensive, or guesses which file to open, which is often wrong. What it needs is the few spans that answer the question. Semlith finds them.
EMBED_BATCH both land on the right chunk.semlith cloud login. The portal binds to 127.0.0.1 only. Model weights and acceleration packs are the only downloads, each pinned by digest, and --airgap refuses every outbound request before a connection opens.semlith setup, and a ledger of every retrieval with the tokens it saved.One command, no Rust toolchain needed.
macOS and Linux
curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/semlith/semlith/main/install.sh | sh
Windows
irm https://raw.githubusercontent.com/semlith/semlith/main/install.ps1 | iex
The installer picks the release for your machine, verifies the ed25519 signature on the release's SHA256SUMS, checks the archive against it, unpacks it into ~/.semlith/bin and runs semlith setup. Setup puts Semlith on your PATH, downloads the embedding model, registers Semlith with each agent client that has a registration CLI, and installs the daemon as a login service. Run semlith setup again at any time to repair an install, and --yes takes every default.
| Variable | Effect |
|---|---|
SEMLITH_VERSION | Install a specific release tag. |
SEMLITH_HOME | Install somewhere other than ~/.semlith. |
SEMLITH_NO_SERVICE=1 | Skip the login service. |
You can also run cargo install semlith, or take an archive from the releases page. semlith upgrade replaces the binary with the newest release, and Semlith never checks for updates on its own.
Requirements. A 64-bit machine running macOS on Apple silicon, Linux on x86_64 or aarch64, or Windows on x86_64 (Windows PowerShell 5.1 is enough). The Linux archives ship libonnxruntime.so beside the binary and need only glibc 2.34 or later and libstdc++ (GLIBCXX_3.4.22). Debian 12, Ubuntu 22.04, RHEL 9 and Amazon Linux 2023 all qualify. Intel macOS is not supported, because ONNX Runtime no longer ships for it.
The installer writes the binary to ~/.semlith/bin (mode 700 on macOS and Linux) and, on Linux, libonnxruntime.so beside it. Nothing is written until the archive passes three checks. SHA256SUMS must carry the project's ed25519 signature, checked with ssh-keygen -Y verify (OpenSSH 8.1 or later, which macOS, current Linux distributions and Windows 10 and later have). The archive's SHA-256 must match it. When gh is on your PATH, its GitHub artifact attestation, signed by this repository's release workflow, is checked too. A missing or wrong signature stops the install, and semlith upgrade holds a release to the same key, built into the binary, which semlith --version names. curl is held to https and TLS 1.2 or later, and the script runs only once it has fully downloaded. Releases before v0.40.0 are not signed, so these installers do not install them.
To read the installer before running it:
curl --proto '=https' --tlsv1.2 -fsSLO https://github.com/semlith/semlith/releases/latest/download/install.sh
less install.sh gh attestation verify install.sh --repo semlith/semlith sh install.sh
On Windows, run irm https://github.com/semlith/semlith/releases/latest/download/install.ps1 -OutFile install.ps1, read it, then run powershell -ExecutionPolicy Bypass -File install.ps1.
To verify an archive by hand:
echo 'semlith-release ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICMTHiHMzeSHzzc+8UDZHUzJcvb6XGUBb+TJdFes91xm' > allowed_signers
ssh-keygen -Y verify -f allowed_signers -I semlith-release -n file -s SHA256SUMS.sig < SHA256SUMS grep " semlith- - .tar.gz$" SHA256SUMS | shasum -a 256 -c gh attestation verify semlith- - .tar.gz --repo semlith/semlith
cd ~/src/ripgrep
semlith index . # one store, and the model (~52 MB) downloads once semlith search "where is a file detected as binary" semlith neighbors search_parallel # callers and callees semlith start # the daemon and the portal
$ semlith search "where is a file detected as binary" -k 1
$ semlith neighbors search_parallel callers (2) main via defines (extracted) crates/core/main.rs:44 · call at line 166 run via calls (resolved) crates/core/main.rs:78 · call at line 90 callees (25) matcher via calls (resolved) crates/core/flags/hiargs.rs:379 · called at crates/core/main.rs:177 search_worker via calls (resolved) crates/core/flags/hiargs.rs:705 · called at crates/core/main.rs:176 ...
Every hit is a path:start-end locator you can hand to an editor or an agent, and vf says the vector and keyword lists both found it. Documents answer the same way.
semlith setup # registers each agent client that has a registration CLI
semlith doctor # checks each client can actually reach it, and says how to fix it if not
semlith setup registers the MCP server at user scope in each installed client that has a registration CLI, which is six of the 12 documented clients. The other six are a config file, which semlith setup --register-all writes for you, and semlith doctor reports on every one. Each stanza is run against the binary in tests/clients.rs, and docs/clients.md has them all with the HTTP transport. Setup also installs the Semlith Agent Skill, a steering hook that suggests a Semlith call when an agent is about to grep, and a read-only research agent.
semlith mcp serves MCP over stdio, and the daemon serves the same tools over HTTP at /mcp, behind an agent key (semlith key show). Eight tools are listed by default, because every definition costs tokens on every request, and SEMLITH_MCP_TOOLS=all lists all sixteen.
| Tool | Answers |
|---|---|
semlith_search | Where is the answer? Path, span, enclosing symbol and how it was found. |
semlith_brief | Everything one question needs in one call, with spans, text and one-hop callers and callees, under a token budget. |
semlith_read | One span or one symbol, nothing around it. |
semlith_symbol | Where is this defined? history: true gives what it used to be. |
semlith_neighbors | What calls it, and what it calls. |
semlith_impact | Everything that reaches it, and the files involved. |
semlith_files | Which files are indexed. |
semlith_stats | What each store holds. |
semlith_path, semlith_trace | How two symbols connect, as a chain or as evidence. |
semlith_pattern | A tree-sitter structural pattern over one language. |
semlith_index, semlith_add, semlith_forget | Change a store from inside a conversation. |
semlith_report | One of five reports from the ledger, index and graph. |
semlith_languages | The language names lang accepts. |
A bare semlith mcp opens every registered store, so one question can span repositories. It speaks MCP 2026-07-28, 2025-11-25, 2025-06-18 and 2024-11-05, each proven by a session in tests/mcp.rs. In the official MCP registry it is listed as mcp-name: io.github.semlith/semlith
semlith start runs one daemon that owns every store. It holds each store's write lock, watches its folders, re-embeds what you save, and serves a portal at http://127.0.0.1:7365. The URL with its session token is printed once, on stdout. docs/portal.md documents every page.
Search . Hybrid results, each saying which list found it.
Graph . Callers, callees, blast radius and paths.
Index runs . Live rate per device, pause and stop.
Ledger . Every retrieval, and the tokens it saved.
It is not on the network. The daemon binds 127.0.0.1 only, with no flag to change it. Every page and /api/ route needs the per-run session token, sent in a Semlith-Token request header, and without it the answer is 401. The agent key opens /mcp and nothing else. Responses carry a Content-Security-Policy of `'self'
Only the beginning is shown; read the rest in the repo