Local RAG indexer and MCP server for AI coding agents (Claude, GPT, Gemini, Cursor, Factory Droid, and more).
Project description
repo-rag
Local RAG indexer and MCP server for AI coding agents. Run it once per repo, and every MCP-compatible agent on your machine - Claude Code, Claude Desktop, Cursor, Windsurf, Codex CLI, Gemini CLI, Factory Droid, Antigravity, Aider, Cline, Continue.dev, Zed, and any future
AGENTS.md-aware tool - searches your code through the same hybrid keyword + vector index instead of grepping blind.
Quickstart
# Recommended: isolated global CLI via pipx
pipx install repo-rag
# Or inside an existing project venv
pip install repo-rag
cd /path/to/your/repo
rag init
rag rebuild
rag agents setup --all # writes rules files + MCP configs for every detected agent
rag hooks install # keep the index fresh on every commit / merge / checkout
That's it. Open Claude Code, Cursor, or any other supported agent and ask
"where is auth configured" - the agent will call repo_rag_search first.
repo-ragpulls in lancedb, pyarrow, fastembed, and onnxruntime, so expect roughly 500 MB on disk for the dependency stack regardless of install method.pipxkeeps that footprint in one isolated environment instead of every project venv.
What you get
- One index, every agent. Indexed under
~/.repo-rag/<repo-id>/and shared across every MCP client. No per-tool re-embedding. - Hybrid retrieval. SQLite FTS5 BM25 keyword search plus LanceDB vector search, merged with configurable weights.
- Local by default. The
fastembedbackend runs CPU-only ONNX inference with a 384-dim model; no network calls and no API keys. - Memory across sessions.
repo_rag_rememberlets agents persist architectural decisions, gotchas, and invariants that surviverag rebuild. - Background-mode git hooks. Re-indexing happens off the critical path
with truncating per-run logs you can
--follow. - Hardware-aware throttling. On Windows,
BELOW_NORMAL_PRIORITY_CLASSplus non-P-core affinity keeps your laptop responsive while indexing.
Supported agents
| Agent | Rules | MCP auto-write | Docs |
|---|---|---|---|
| Factory Droid | ~/.factory/AGENTS.md, <repo>/AGENTS.md |
yes | docs/clients/factory.md |
| Claude Code | ~/.claude/CLAUDE.md, <repo>/CLAUDE.md |
yes | docs/clients/claude_code.md |
| Claude Desktop | (none) | yes (per-OS path) | docs/clients/claude_desktop.md |
| Codex CLI | ~/.codex/AGENTS.md, <repo>/AGENTS.md |
yes (TOML) | docs/clients/codex.md |
| Cursor | ~/.cursor/rules/repo-rag.mdc, <repo>/.cursor/rules/repo-rag.mdc |
yes | docs/clients/cursor.md |
| Windsurf | ~/.codeium/windsurf/global_rules.md, <repo>/.windsurfrules |
yes | docs/clients/windsurf.md |
| Cline | <repo>/AGENTS.md |
manual (VS Code settings) | docs/clients/cline.md |
| Continue.dev | ~/.continue/AGENTS.md, <repo>/AGENTS.md |
yes | docs/clients/continue.md |
| Gemini CLI | ~/.gemini/GEMINI.md, <repo>/GEMINI.md |
yes | docs/clients/gemini.md |
| Google Antigravity | ~/.antigravity/AGENTS.md, <repo>/AGENTS.md |
yes | docs/clients/antigravity.md |
| Aider | ~/.aider/CONVENTIONS.md, <repo>/CONVENTIONS.md |
reference YAML | docs/clients/aider.md |
| Zed | <zed-config>/.rules, <repo>/.rules |
yes (context_servers) |
docs/clients/zed.md |
| Universal (AGENTS.md) | ~/.config/repo-rag/AGENTS.md, <repo>/AGENTS.md |
n/a | docs/clients/universal.md |
Run rag agents list for a live table of what is detected on your machine.
MCP tools
The server exposed by rag mcp-server advertises five tools (full reference
in docs/mcp-tools.md):
| Tool | Purpose |
|---|---|
repo_rag_search |
Primary hybrid search; use instead of Grep / ripgrep / Glob. |
repo_rag_get_context |
Markdown context pack for a multi-step task. |
repo_rag_remember |
Persist a durable note for future sessions. |
repo_rag_forget |
Remove a note by id. |
repo_rag_status |
Index health summary. |
Read-only tools are annotated readOnlyHint=true, idempotentHint=true, openWorldHint=false so MCP clients can auto-approve them in strict trust
modes.
Performance highlights
- 3-10 chunks/sec on a typical laptop with the default
fastembedmodel. - Embedding cache keyed by
(provider, model, dim, sha256(content))makes interrupted rebuilds resume cheaply and lets you switch providers without invalidating the unrelated rows. --window-size,--pace-sec,--sequential,--full-speed, and--threadscover every tuning knob from "go as fast as possible" to "do not interfere with anything I am doing".
See docs/performance.md for the full guide.
Configuration
The global config lives at ~/.repo-rag/config.toml. Override per-repo at
~/.repo-rag/<repo-id>/config.toml. Every value can also be set with an
environment variable (RAG_EMBEDDING_PROVIDER, REPO_RAG_INDEX_DIR, ...).
Full reference: docs/configuration.md.
Storage layout
~/.repo-rag/
registry.json
config.toml
<repo_id>/
metadata.sqlite # files, chunks, FTS5, notes, embedding cache
lancedb/ # vector store
cache/
logs/
Nothing is written inside your repo apart from optional AGENTS.md,
CLAUDE.md, etc. (which you can .gitignore or commit, your choice).
Docker
docker pull ghcr.io/ramanan-bala/repo-rag:latest
{
"mcpServers": {
"repo-rag": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "~/.repo-rag:/data/.repo-rag",
"ghcr.io/ramanan-bala/repo-rag:latest"
]
}
}
}
Troubleshooting
Common gotchas (Windows model load hang, AV interaction on corporate
machines, hybrid-CPU thread tuning, MCP server PATH issues, etc.) live in
docs/troubleshooting.md.
Contributing
Pull requests welcome. See CONTRIBUTING.md for setup,
test, lint, and release-process notes. To add a new agent plugin, follow
docs/development.md.
License
MIT. See LICENSE.
Code of Conduct: CODE_OF_CONDUCT.md.
Security policy: SECURITY.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repo_rag-0.1.0.tar.gz.
File metadata
- Download URL: repo_rag-0.1.0.tar.gz
- Upload date:
- Size: 49.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2a1a680c67a25b7bec5765d24390053cd0d8a2515fc2da4580003903df92e2b
|
|
| MD5 |
203a29b4df8e7544a56ed2803a8a81b0
|
|
| BLAKE2b-256 |
49d68bd084ca0e18892e59516eda68f894e1abef34d8b0881c42383941c86733
|
Provenance
The following attestation bundles were made for repo_rag-0.1.0.tar.gz:
Publisher:
release.yml on Ramanan-Bala/rag-tool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_rag-0.1.0.tar.gz -
Subject digest:
f2a1a680c67a25b7bec5765d24390053cd0d8a2515fc2da4580003903df92e2b - Sigstore transparency entry: 1643961383
- Sigstore integration time:
-
Permalink:
Ramanan-Bala/rag-tool@daeaca29c2f244d35de52574dd5b4c6755734c6e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Ramanan-Bala
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@daeaca29c2f244d35de52574dd5b4c6755734c6e -
Trigger Event:
push
-
Statement type:
File details
Details for the file repo_rag-0.1.0-py3-none-any.whl.
File metadata
- Download URL: repo_rag-0.1.0-py3-none-any.whl
- Upload date:
- Size: 58.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d4e77092401d6f5eb465a101574618b1b5b62146f7bee990f553d8719235318
|
|
| MD5 |
a441cc560738e5b1e3841d17eae9d3f7
|
|
| BLAKE2b-256 |
c67d3f4a7773c4605dbc50df89fcdff4272714f6993416acae2073295b86d8ef
|
Provenance
The following attestation bundles were made for repo_rag-0.1.0-py3-none-any.whl:
Publisher:
release.yml on Ramanan-Bala/rag-tool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_rag-0.1.0-py3-none-any.whl -
Subject digest:
8d4e77092401d6f5eb465a101574618b1b5b62146f7bee990f553d8719235318 - Sigstore transparency entry: 1643961398
- Sigstore integration time:
-
Permalink:
Ramanan-Bala/rag-tool@daeaca29c2f244d35de52574dd5b4c6755734c6e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Ramanan-Bala
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@daeaca29c2f244d35de52574dd5b4c6755734c6e -
Trigger Event:
push
-
Statement type: