A zero‑dependency, offline‑first developer tool that turns a repository into a searchable architecture map, an interactive dashboard, and a repository‑aware AI assistant. See the README.
No. The MVP runs entirely on the Python standard library. Code search (a lexical BM25 index) and the assistant's grounded, cited answers work with no key and no services. An OpenRouter key is optional and only upgrades the assistant's answers to LLM‑written prose.
Python 3.11+. That's it. git is only needed if you want to analyze a GitHub URL (RepoMind shallow‑clones it to a temp directory).
- Python — parsed with the
astmodule (most detailed). - JavaScript / TypeScript / JSX / TSX — lightweight regex parsing.
- Java — lightweight regex parsing.
Support is defined in analyzer.py (SUPPORTED_EXTENSIONS).
FastAPI, Flask, Express, Next.js route handlers, and Spring (@…Mapping). Detection is heuristic and defined in analyzer.py.
No. In v0.1.0 it is lexical (keyword) search: a pure‑Python BM25 index with identifier‑aware tokenization (splits camelCase/snake_case) and structural boosts (matching a file path or symbol name ranks higher). There are no embeddings and no vector database. This keeps the tool key‑free and offline. A true semantic (embeddings) layer is a planned optional backend behind the same search() contract (integrations/vector_store.py). See the Roadmap.
Answers are grounded in retrieved code snippets and always include file + line citations. With no LLM key, the assistant returns an extractive answer built directly from retrieval and structural signals. With a key, the model is instructed to answer only from the provided repository context.
/api/chat keeps a rolling, capped history in in‑process memory (a thread‑safe dict — no Redis or database). It resolves follow‑up references like "it", "that function", and "this module" against the previously discussed code, and folds recent turns into both retrieval and the prompt. /api/ask remains stateless. Details in ARCHITECTURE.md.
Two JSON files under .repomind/: analysis.json (the knowledge map) and index.json (the search index). This folder is git‑ignored.
The dashboard reads the on‑disk analysis and index. Re‑run python -m repomind analyze . (or use the dashboard's Analyze button / POST /api/analyze) to refresh them after code changes.
To keep RepoMind usable the instant you clone it, with nothing to set up. Those tools are represented as optional future boundaries (integrations/) and will only ever be opt‑in, never required by the core.
Only if you configure OpenRouter. In that case, the question plus the relevant retrieved snippets and repository summary are sent to OpenRouter to generate an answer. With no key, nothing leaves your machine.
python -B -m unittest discover -s tests -vStandard‑library unittest, no network required.
See CONTRIBUTING.md and use the issue templates. The one hard rule: keep it zero‑dependency and offline‑first.