{"id":50662092,"url":"https://github.com/unrealandychan/rekipedia","last_synced_at":"2026-06-08T03:06:45.613Z","repository":{"id":360763964,"uuid":"1224777018","full_name":"unrealandychan/rekipedia","owner":"unrealandychan","description":"Turn your codebase into readable format, for both Human and AI Agent.","archived":false,"fork":false,"pushed_at":"2026-06-04T14:50:02.000Z","size":18250,"stargazers_count":29,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T16:18:47.493Z","etag":null,"topics":["agent","agentic-ai","claude-code","cli","mcp","python","skills"],"latest_commit_sha":null,"homepage":"https://unrealandychan.github.io/rekipedia/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unrealandychan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-29T16:05:49.000Z","updated_at":"2026-06-04T14:50:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/unrealandychan/rekipedia","commit_stats":null,"previous_names":["unrealandychan/rekipedia"],"tags_count":162,"template":false,"template_full_name":null,"purl":"pkg:github/unrealandychan/rekipedia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unrealandychan%2Frekipedia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unrealandychan%2Frekipedia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unrealandychan%2Frekipedia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unrealandychan%2Frekipedia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unrealandychan","download_url":"https://codeload.github.com/unrealandychan/rekipedia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unrealandychan%2Frekipedia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34046022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agentic-ai","claude-code","cli","mcp","python","skills"],"created_at":"2026-06-08T03:06:43.528Z","updated_at":"2026-06-08T03:06:45.604Z","avatar_url":"https://github.com/unrealandychan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rekipedia\n\n**Turn any repo into an AI-ready knowledge base — wiki, RAG, and MCP server included.**\n\n[![PyPI version](https://img.shields.io/pypi/v/rekipedia.svg)](https://pypi.org/project/rekipedia/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/) [![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![MCP](https://img.shields.io/badge/MCP-compatible-purple.svg)](https://modelcontextprotocol.io)\n\n---\n\n## Why rekipedia?\n\n| Problem | rekipedia |\n|---|---|\n| \"Where does the auth logic live?\" | `reki ask \"how does auth work?\"` → `src/auth.py:42` |\n| Onboarding new devs takes days | `reki onboard .` generates a guided walkthrough in seconds |\n| AI agents hallucinate about your codebase | `reki mcp` gives agents a grounded knowledge base with citations |\n| Refactor anxiety | `reki hotspots` surfaces hub nodes and bridge nodes before you touch anything |\n| Wiki goes stale immediately | `reki watch .` auto-reindexes on every file save |\n\n---\n\n## ⚡ Quickstart\n\n```bash\npip install rekipedia\n# or: npx rekipedia\n```\n\n### With LLM (richer wiki + Q\u0026A)\n\n```bash\nexport REKIPEDIA_MODEL=gemini/gemini-2.5-flash\nexport GOOGLE_API_KEY=...\nreki scan .\nreki ask \"how does authentication work?\"\n```\n\n---\n\n## Key Features\n\n### 🗂 `reki scan` — Instant knowledge store\n\nParses your repo into a SQLite knowledge store with symbols, relationships, and auto-generated wiki pages.\n\n```bash\nreki scan .            # full scan with LLM summaries\nreki scan . --no-llm   # zero config, no API key required\n```\n\n### 💬 `reki ask` — Q\u0026A grounded in your code\n\nAnswers questions with file:line citations **and real code examples**. No hallucinations — every answer is backed by indexed source, with actual function bodies quoted inline.\n\n```bash\nreki ask \"what is the entry point?\"\nreki ask \"which modules handle payments?\" --brief\n```\n\n```\nAnswer: The entry point is src/main.py:12 — `App.run()` bootstraps the server.\n\n```python\n# src/main.py:12\ndef run(self):\n    server = HTTPServer(self.config)\n    server.start()\n```\n\nSources: src/main.py:12, src/server.py:34\n```\n\n**How it works:** rekipedia extracts the actual source bodies of the most relevant functions/classes and passes them directly to the LLM — so answers include real, runnable code, not just paraphrases. When a FAISS index exists (`reki embed .`), RAG chunks are used instead for even higher precision.\n\n### 🤖 `reki mcp` — MCP server for AI agents\n\nPlug rekipedia directly into Claude Code, Cursor, or any MCP-aware agent.\n\n```bash\nreki mcp\n```\n\nAvailable tools: `ask`, `search_nodes`, `get_context`, `get_relationships`, `get_hub_nodes`, `get_impact`\n\n### 🔥 `reki hotspots` — Architectural hotspot detection\n\nFinds hub and bridge nodes — the files your whole codebase depends on.\n\n```bash\nreki hotspots\n```\n\n```\nHub nodes:   src/core/engine.py (42 dependents)\nBridge nodes: src/adapters/db.py (connects 3 clusters)\n```\n\n### 🔄 `reki update` — Incremental updates\n\nOnly regenerates wiki pages affected by your changes.\n\n```bash\nreki update . --impact-only\n```\n\n---\n\n## MCP Integration\n\nrekipedia ships a full MCP stdio server. Connect it to any MCP-aware agent in seconds.\n\nAdd to your `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"rekipedia\": {\n      \"command\": \"reki\",\n      \"args\": [\"mcp\"],\n      \"cwd\": \".\"\n    }\n  }\n}\n```\n\nClaude Code and Cursor will automatically discover this config. The agent can then call:\n\n- `ask` — Q\u0026A over the codebase\n- `search_nodes` — symbol/file search\n- `get_context` — file-level context\n- `get_relationships` — dependency graph queries\n- `get_hub_nodes` — architectural hotspots\n- `get_impact` — change impact analysis\n- `list_wiki_pages` — enumerate all wiki pages\n- `get_wiki_page` — read a specific wiki page by name\n---\n## AI CLI tool integration\n\nrekipedia integrates natively with the major AI coding assistants via MCP (Model Context Protocol). After scanning your codebase, run:\n\n```bash\nreki init --with-all-ai    # configure Copilot + Codex + Cursor in one step\n# or pick individually:\nreki init --with-copilot   # GitHub Copilot (VS Code) — writes .vscode/mcp.json\nreki init --with-codex     # Codex CLI — writes .codex/instructions.md + setup hint\nreki init --with-cursor    # Cursor — writes .cursor/mcp.json + rules\n```\n\nOnce configured, each tool automatically gets access to these rekipedia MCP tools:\n\n| MCP Tool | What it does |\n|---|---|\n| `ask` | Natural-language Q\u0026A grounded in the scanned wiki |\n| `search_nodes` | Fast symbol lookup by name |\n| `get_context` | Symbols and relationships for a file |\n| `get_relationships` | Callers and callees for a symbol |\n| `get_hub_nodes` | Architectural chokepoints |\n| `get_impact` | Blast-radius for a changed file |\n| `get_knowledge_gaps` | Untested high-call-count symbols |\n| `list_wiki_pages` | List all wiki pages |\n| `get_wiki_page` | Read a specific wiki page by name |\n\n---\n\n## LLM Setup\n\nrekipedia works without an LLM (`--no-llm`). To enable richer summaries and Q\u0026A:\n\n```bash\nexport REKIPEDIA_MODEL=gemini/gemini-2.5-pro\nexport GOOGLE_API_KEY=...\n```\n\nOr use a provider-agnostic key:\n\n```bash\nexport REKIPEDIA_MODEL=openai/gpt-4o\nexport REKIPEDIA_API_KEY=sk-...\n```\n\nAny OpenAI-compatible endpoint works:\n\n```bash\nexport REKIPEDIA_API_KEY=ollama\nexport REKIPEDIA_MODEL=ollama/llama3\n```\n\n---\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `reki scan .` | Full scan — index symbols, generate wiki |\n| `reki scan . --no-llm` | Scan without LLM, zero config |\n| `reki ask \"question\"` | Ask anything about the codebase |\n| `reki ask \"question\" --brief` | Short answer mode |\n| `reki update . --impact-only` | Incremental update, affected pages only |\n| `reki serve .` | Local web UI at `http://127.0.0.1:7070` |\n| `reki embed .` | Build FAISS semantic index |\n| `reki publish . [--output-dir PATH]` | Publish wiki to a git-tracked directory for team sharing |\n| `reki export . --format bundle` | Export a content-addressed wiki bundle for team sync |\n| `reki merge \u003cbundle-A\u003e \u003cbundle-B\u003e [--base BASE]` | Three-way wiki merge — conflict-free team sync |\n| `reki pull [URL]` | Fetch and merge a remote wiki bundle (HTTPS/S3/GCS) |\n| `reki watch . --publish` | Auto-index + auto-publish wiki on every file save |\n| `reki export . --format md\\|zip\\|json\\|html\\|bundle` | Export the wiki |\n| `reki diff` | Show impact of uncommitted changes |\n| `reki hotspots` | Hub \u0026 bridge node detection |\n| `reki refactor . --dry-run` | Preview refactor suggestions |\n| `reki refactor . --apply` | Apply refactor suggestions |\n| `reki mcp` | Start MCP stdio server |\n| `reki review` | LLM-powered PR review |\n| `reki watch .` | Auto-index on file change |\n| `reki hook install` | Install git post-commit hook |\n| `reki init --with-all-ai` | Configure MCP for GitHub Copilot, Codex CLI, and Cursor in one step |\n\n---\n\n## FAQ\n\n### Q: Why is `store.db` gitignored? How do teammates use rekipedia?\n\n`store.db` is a binary SQLite file containing machine-specific absolute paths — committing it would cause path mismatches on other machines and create noisy binary diffs. Each developer runs `reki scan .` locally to build their own store. To share the human-readable output with your team, use `reki publish .`, which copies the generated wiki pages to `docs/wiki/` so they can be committed and browsed in your repo or docs site.\n\n---\n\n### Q: What is `store.db` for vs the FAISS index? Why do I need both?\n\nThey serve distinct purposes and are not interchangeable. `store.db` is a structured SQLite graph: it stores symbols, relationships, file manifests, and scan run history — the kind of data you query with precise filters (\"find all callers of function X\"). The FAISS index (built by `reki embed .`) stores dense embedding vectors for every chunk of your codebase, enabling fuzzy semantic search (\"find code that handles authentication\"). `reki ask` uses both together: BM25 keyword search over SQLite and vector similarity search over FAISS, then merges the results.\n\n---\n\n### Q: Can I use Postgres, MySQL, or another database instead of SQLite?\n\nNot currently. SQLite is the only supported backend for the structured symbol/relationship store, and it is intentional — SQLite is zero-config, portable, and requires no running server, which keeps `reki scan` self-contained. The `reki export .` command produces JSON exports (`symbols.json`, `relationships.json`) you can load into any database. Postgres/MySQL support is not on the roadmap, but the JSON exports make integration with your own tooling straightforward.\n\n---\n\n### Q: Does rekipedia support Qdrant or Chroma instead of FAISS?\n\nYes. FAISS is the default vector backend, but Qdrant and Chroma are both supported as optional backends. Qdrant and Chroma are useful when you want a persistent, server-hosted vector store shared across machines — unlike the local FAISS index, a running Qdrant or Chroma instance can be queried by your whole team without each person running `reki embed`. Install the relevant extras (`pip install rekipedia[qdrant]` or `rekipedia[chroma]`) and configure the backend in `.rekipedia/config.yml`.\n\n---\n\n### Q: Do I need an OpenAI API key?\n\nNo. rekipedia can run entirely without an LLM using the `--no-llm` flag — `reki scan . --no-llm` performs static analysis only, producing the symbol graph and wiki structure without AI-generated summaries. When you do want richer summaries and Q\u0026A, rekipedia supports OpenAI, Anthropic, Ollama (local), Azure OpenAI, and any OpenAI-compatible endpoint. For fully offline usage, point it at a local [Ollama](https://ollama.com) instance — no internet required.\n\n---\n\n### Q: How do I share the wiki with my team without everyone running `reki scan`?\n\nUse `reki publish .`. This command copies the generated `wiki/*.md` and `diagrams/*.md` files into `docs/wiki/` (not gitignored), which can be committed and browsed directly in GitHub, your docs site, or any Markdown viewer — no local scan required. The best setup is to automate publishing in CI so the wiki stays current whenever the main branch changes (see the GitHub Actions question below).\n\n---\n\n### Q: How do I keep the wiki up to date automatically?\n\nRun `reki init --with-ci` to scaffold a GitHub Actions workflow (`.github/workflows/rekipedia-wiki.yml`) that runs `reki scan`, then `reki publish` on every push to `main`. The workflow commits any changes to `docs/wiki/` back to the repo automatically. Set `REKIPEDIA_API_KEY` as a repository secret for LLM-enriched pages; omit it and the workflow falls back to `--no-llm` mode at zero cost.\n\n---\n\n### Q: How does team sync work for distributed teams?\n\nrekipedia's team sync is a multi-layer system for conflict-free wiki collaboration:\n\n1. **Bundle** — `reki export --format bundle` creates a deterministic, content-addressed snapshot with a stable `bundle_id` and per-page hash trailers.\n2. **Merge** — `reki merge bundle-A bundle-B --base bundle-base` performs a three-way merge: pages changed by only one developer are accepted automatically; only genuinely divergent pages produce conflict markers.\n3. **Git merge driver** — `reki init --with-merge-driver` registers a git merge driver so `git merge` and `git pull` automatically use rekipedia's merge logic — no `\u003c\u003c\u003c\u003c\u003c\u003c` conflicts in generated wiki files.\n4. **Live sync** — `reki watch . --publish` publishes the wiki after every incremental update, keeping `docs/wiki/` in sync as you code. Set `team.sync_dir` in `.rekipedia/config.yml` for the default target.\n5. **Remote pull** — `reki pull \u003curl\u003e` fetches a bundle from HTTPS, S3, or GCS and merges it locally. Combine with `reki init --with-ci --with-upload s3` to have CI upload a fresh bundle after every main-branch push.\n\n---\n\n### Q: How does `reki ask` actually work under the hood?\n\n`reki ask \"question\"` runs a hybrid retrieval pipeline. First, it executes a BM25 keyword search against the SQLite store to find exact and near-exact symbol/token matches. In parallel, it encodes your question into an embedding vector and queries the FAISS (or Qdrant/Chroma) index for semantically similar chunks. The two result sets are merged and re-ranked by relevance score, then the top chunks are passed as context to your configured LLM, which synthesises a final answer with file:line citations. With `--no-llm`, retrieval results are returned directly without synthesis.\n\n---\n\n### Q: How large does `store.db` / the FAISS index get on a large repo?\n\nFor a typical mid-size repo (50k–200k lines of code), `store.db` is usually 10–80 MB. The FAISS index in `.rekipedia/rag/` scales with the number of embedded chunks — expect 50–500 MB for the same size range, which is why `rag/` is gitignored by default. On very large monorepos (1M+ LOC), the FAISS index can exceed 1 GB; in that case, switching to a server-backed Qdrant instance is recommended so the index lives outside your working directory.\n\n---\n\n### Q: Can rekipedia scan private or fully offline repos?\n\nYes, fully. `reki scan` is pure static analysis — it never sends your source code anywhere. With `--no-llm`, the entire pipeline is offline and air-gap safe. When LLM features are enabled, only retrieved *chunks* (not your full source) are sent to the LLM provider as context; if you use Ollama, even that stays local. There are no telemetry calls, no license checks against a remote server, and no requirement for internet access beyond reaching your chosen LLM API endpoint.\n\n---\n\n## Coming Soon\n\n- **Hosted wiki** — share your knowledge base with a link, no self-hosting required\n- **VS Code extension** — inline `reki ask` from your editor\n\n---\n\n## Contributing\n\nrekipedia is going MIT open source. Contributions welcome.\n\n```bash\ngit clone https://github.com/unrealandychan/rekipedia.git\npip install -e \".[dev]\"\n```\n\nOpen an issue or PR — the bar is low and the maintainer is responsive.\n\n---\n\n**Current version:** `0.17.25` · [PyPI](https://pypi.org/project/rekipedia/) · [MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funrealandychan%2Frekipedia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funrealandychan%2Frekipedia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funrealandychan%2Frekipedia/lists"}