Semlith
One index of everything you work on, for every agent you run.
On SWE-bench Verified, the file the fix edits is in Semlith's top 10 for 76.8% of 500 issues, against 47.0% for grep then read. Retrieval only. See the benchmarks →
Every agent asks the same index — and gets facts, not guesses.
On your laptop, in a cloud session, in a CI job. Each answer states the commit it was read at. Semlith runs no chat model, your agent keeps its own.
It reads GitHub, GitLab, Confluence, Jira, Your folders, Uploads.
Every agent starts from zero, inside one repository.
Your agents run everywhere now — a terminal, an editor, a cloud session, a CI job. Each one sees a sliver of what you know.
One index. Every agent. Every machine.
Semlith runs on your machine and is free. Semlith Cloud is the paid, hosted version. It keeps one index that every agent can reach, on any laptop, in the cloud or in CI, for you alone or your whole team.
Same tools, same answers — pick where it lives:
- reaches itneeds CloudIn your terminalClaude Code · Codex · OpenCode · Gemini CLI · Copilot CLI
- reaches itneeds CloudIn your editorCursor · Copilot in VS Code · Zed · Cline
- reaches itneeds CloudOn your desktopClaude Desktop · ChatGPT desktop
- reaches itneeds CloudIn a cloud sessionAgents running on the web, sandboxed to one repository
- reaches itneeds CloudIn CI and routinesOrg tokens are machine identities — free, never a seat
- reaches itneeds CloudOn your other machinesIndex once; every laptop asks the same store
claude mcp add --transport http semlith \ https://cloud.semlith.com/acme/mcp \ --header "Authorization: Bearer sml_live_k9f2…"
The answer is wherever it is. Semlith finds it there.
Every repository, page, ticket and file you pick goes into one index…
…and each piece lands on a map by what it's about — not where it's stored.
The question lands beside its answers: the code, the Confluence page, the Jira ticket, the PDF on a drive. (Exact names still work: it checks the words and the meaning, then combines both.)
Facts from the graph. Never a model's guess.
Semlith maps which piece calls which — across repositories. So an agent can ask what uses this? and what would this change reach? There is no generative model in the retrieval path, so the index cannot make anything up.
Know what a pull request reaches.
On every pull request, Semlith posts one status check and one comment: what changed, which callers it reaches — even in another repository — and what it leaves dangling. No model reads the diff. Every finding is a graph fact with a file:line.
A record of what every agent read.
Every retrieval — from a laptop, a cloud session, or an impact check — is a row, and each row is chained to the one before it. Change one, and the chain visibly breaks. Click a row to try.
07 — Always up to date
Fix a bug, merge a pull request, edit a spec, drop in a PDF.
On your machine it watches quietly — under a second of work per idle minute. In the cloud, a GitHub push re-indexes; GitLab, pages and tickets are checked about once a minute.
One file changed? One file re-read — vectors and graph edges together. Everything else stays where it was. Rename a file and nothing is re-embedded, because vectors are cached by what the code says, not where it lives.
About a second from save to searchable on your machine. In the cloud, every source states the commit it was read at, and how far behind it is.
The binary never sends anything. Cloud is your choice.
- No account. Nothing to sign in to.
- Loopback only. It listens on 127.0.0.1 — a door that only opens from the inside.
- --airgap refuses every outbound request before a socket opens: model, upgrade, prices, cloud. Without it, the only fetches are model weights and acceleration packs on first use, each pinned by digest, and what you ask for.
- Credential files stay out. Credential files (.env, keys, ~/.ssh) are never indexed unless you pass --include-secrets. A file whose contents look like a secret waits for your decision.
- Read only. It never pushes, edits or deletes. The one write is the impact check, where you allow it.
- Only what you pick. Connector tokens encrypted at rest; org tokens kept only as a hash. Stores never cross organisations.
- No model is trained on it. No third-party AI service ever sees your content.
- Your store is yours. It downloads and opens in the free binary, offline.
Agents make up quotes from files they can't read.
Grep can't open a slide deck or a spreadsheet. Semlith reads 13 document formats — and pictures, by what they show — so the agent quotes the real passage. Measured on 127 questions over 11 formats:
- Word
- PowerPoint
- Excel
- OpenDocument
- EPUB
- RTF
- Email (EML, MBOX)
- HTML
- Notebooks
- Markdown & text
- Images, by what they show
- Code, 46 languages
An Opus agent on 53 public documents. It chose semlith on its own in 127 of 127 sessions.
Every number says what it was measured against.
Index once.Every agent asks.Every read on record.
$ curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/semlith/semlith/main/install.sh | sh- Terminal
- Claude Code · OpenAI Codex · OpenCode · IO CLI · GitHub Copilot CLI · Gemini CLI
- Editors
- GitHub Copilot in VS Code · Cursor · Zed · Cline
- Desktop apps
- Claude Desktop · ChatGPT desktop (the Codex app)
Semlith Cloud, the optional hosted index for you or your team, reads GitHub, GitLab, Confluence, Jira and uploads, read only. See Semlith Cloud · What it reads and keeps
github.com/semlith/semlith