Semlith
One index of everything your organisation knows — every repository, page, ticket and drive — which every AI agent can reach, with a record of what each one read.
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.
It reads GitHub, GitLab, Confluence, Jira, Google Drive, OneDrive, SharePoint, 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 your team knows.
One index. Every agent. Every machine.
Run it on your machine for free, or let Semlith Cloud hold the index so cloud sessions and CI can reach it too. 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, tickets and drives are checked about once a minute.
One file changed? One file re-read — vectors and graph edges together. Everything else stays where it was.
Under five seconds 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 teams, reads GitHub, GitLab, Confluence, Jira, Google Drive, OneDrive, SharePoint and uploads, read only. What it reads and keeps
github.com/semlith/semlith