Your codebase,
indexed once.
Queried by any agent, instantly.

Seam is a local-first CLI and MCP server that gives coding agents precise code retrieval: semantic search, exact grep, scoped reindexing, and agent-ready JSON without re-reading the whole repo.

InstallmacOS / Linux
$ curl -fsSL https://seam.adityamer.dev/install.sh | bash
01

How it works

01

Index

Run seam init . Seam walks your repo, respects .seamignore, chunks files with tree-sitter, computes embeddings, and stores the index locally.

02

Search

Query with natural language, exact patterns, file globs, changed-file filters, or every indexed repo. Hybrid ranking keeps results relevant.

03

Context

seam context and --json output return file, line, symbol, and scope metadata agents can cite before editing. XML, markdown, or JSON.

02

Built for agents

Local-first

Your index lives on your machine

Offline embeddings, local storage, and metadata-only remote backends. Source snippets stay in your repo and local Seam index.

`seam reindex path/to/file.py` refreshes one file. Directory scopes work too. Deleted files are detected, and `seam gc` removes stale entries.

Scoped refresh

Re-index only what changed

Exact retrieval

Semantic search when you need meaning, grep when you need a string

`seam search` handles natural language. `seam grep` searches exact literals or regex patterns inside indexed chunks with filename and language filters.

Restrict results to files changed since the index, search across every registered repo, count matches by file, or filter with `--name` and `--exclude` globs.

Agent filters

Query the right slice of code

Machine-readable

JSON designed for coding agents

Search output includes duration, score, file, line range, symbol name, enclosing scope, and snippet. `docs/seam.schema.json` documents the contract.

03

Backends & Providers

Pick what works for your stack. Default is local SQLite plus deterministic embeddings for zero-config, offline operation.

Default

SQLite

Local vector store with no dependencies. Ships with Seam. Zero setup.

seam config set backend sqlite
Local

LanceDB

Disk-based vector DB for larger codebases. Efficient columnar storage.

seam config set backend lancedb
Remote

Qdrant

Remote vector backend with metadata-only payloads. Source stays local.

seam config set backend qdrant
Default

Local

Deterministic offline embeddings. No network, no API keys, no quotas.

Cloud

OpenAI

OpenAI-compatible API. text-embedding-3-small or any compatible model.

Local AI

Ollama

Self-hosted embedding models. nomic-embed-text or any Ollama model.

04

Install

One command. Zero configuration. Works offline.

Quick install
$ curl -fsSL https://seam.adityamer.dev/install.sh | bash
uv
uv tool install seam-index
pipx
pipx install seam-index
Index and search
# Index your repo
$ seam init .

# Search semantically or exactly
$ seam search "JWT validation"
$ seam grep "validate_jwt" --name "*.py"

# Refresh one file after editing
$ seam reindex app/auth.py

# Ask only about changed files
$ seam search "risk in auth changes" --changed --json

# Generate context for agents
$ seam context "database pooling"
05

Why Seam?

Without Seam
  • Agent re-reads thousands of files on every task
  • Context window fills with irrelevant code
  • Slow responses, repeated questions
  • Cannot work offline or with rate limits
With Seam
  • Semantic search and grep find the right code instantly
  • Changed-file filters keep reviews focused
  • .seamignore keeps generated files out of the index
  • Works offline by default, no API calls required

Stop feeding your agent the entire repo

Index once. Search semantically, grep exactly, refresh only what changed, and give your coding agent context it can trust.