Skip to main content

Open-source DeepWiki alternative — generate comprehensive wiki documentation for any codebase from your terminal or browser.

Why RepoWiki?

DeepWiki deepwiki-open RepoWiki
Deploy SaaS only Docker Compose pip install repowiki
Local repos No No Yes
CLI No No Yes
Web UI Yes Yes Yes
Export Web only Web only Markdown / JSON / HTML
Reading guide No No PageRank + guided path
Terminal Q&A No No repowiki chat
Dependencies N/A Docker + PostgreSQL Python + SQLite

Quick Start

pip install repowiki

# set your API key (DeepSeek, OpenAI, Anthropic, etc.)
export DEEPSEEK_API_KEY=<your-api-key>
# or
repowiki config set api_key <your-api-key>

# scan a local project
repowiki scan ./my-project

# scan a GitHub repo
repowiki scan https://github.com/pallets/flask

# generate self-contained HTML
repowiki scan ./my-project --format html --open

# start the web interface
pip install repowiki[web]
repowiki serve

RepoWiki respects .gitignore and .repowikiignore during scans. It also skips common local secret files such as .env, .env.local, .npmrc, .pypirc, and SSH private keys by default.

Features

  • Structured wiki — project overview, per-module docs, auto-detected architecture with Mermaid diagrams, and a PageRank "start here" reading path.
  • Incremental re-runs: the output directory keeps a .repowiki-state.json mapping each page to the inputs that generated it, so re-scanning only regenerates pages whose source changed and deletes pages of removed modules. Pass --full to force a full rebuild.
  • Import-aware ranking — resolves Python and JS/TS imports before ranking files, and skips minified/generated bundles so they don't burn LLM context.
  • Three output formats — a Markdown directory to commit, structured JSON, or a self-contained HTML file to share (diagrams included).
  • Web viewer + terminal chat — a three-column browser UI, or repowiki chat . for grounded Q&A in the terminal (built-in TF-IDF retrieval, no embeddings service).
  • CLI-first — no Docker, no database server, no browser required.
repowiki scan .                    # generate wiki
repowiki scan . --full             # rebuild every page, ignoring incremental state
repowiki scan . -f html --open     # open in browser
repowiki scan . -l zh              # Chinese output
repowiki chat .                    # interactive Q&A about the code
repowiki map .                     # ranked repo map, zero LLM calls
repowiki map . --format json       # prompt-ready ranked list for agents

Languages & Models

Detects Python, JavaScript, TypeScript, Go, Rust, Java, Kotlin, C/C++, C#, Ruby, PHP, Swift, and 30+ more. Any of litellm's 100+ providers works — pick one with an alias or pass it directly:

repowiki config set model deepseek   # deepseek / claude / gpt / gemini / qwen / kimi / glm ...
repowiki scan . -m gpt               # or pass a model directly

Configuration

RepoWiki looks for config in this order:

  1. CLI flags (-m, -l, -o)
  2. Environment variables (REPOWIKI_MODEL, REPOWIKI_API_KEY)
  3. Config file (~/.repowiki/config.json)
  4. Provider-specific env vars (DEEPSEEK_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY)

Project Structure

RepoWiki/
├── src/repowiki/
│   ├── cli.py              # Click CLI with scan/serve/chat/config commands
│   ├── config.py           # Configuration management
│   ├── core/
│   │   ├── scanner.py      # File scanning with language detection
│   │   ├── analyzer.py     # Multi-step LLM analysis pipeline
│   │   ├── graph.py        # Dependency graph + PageRank
│   │   ├── wiki_builder.py # Wiki page assembly
│   │   ├── rag.py          # TF-IDF retrieval for Q&A
│   │   ├── cache.py        # SQLite caching
│   │   └── state.py        # Incremental regeneration state
│   ├── llm/
│   │   ├── client.py       # litellm async wrapper
│   │   └── prompts.py      # Structured prompt templates
│   ├── ingest/
│   │   ├── local.py        # Local directory ingestion
│   │   └── github.py       # Git clone with caching
│   ├── export/
│   │   ├── markdown.py     # Markdown directory export
│   │   ├── json_export.py  # JSON export
│   │   └── html.py         # Self-contained HTML export
│   └── server/             # FastAPI web backend
├── frontend/               # React + Vite + TailwindCSS
├── pyproject.toml
└── LICENSE

How It Works

RepoWiki pipeline

  1. Scan — Walk the directory tree, filter out binaries, generated bundles, and oversized files, detect languages and entry points
  2. Graph — Resolve imports across 6 languages, including Python package-relative and JavaScript/TypeScript relative modules, then run PageRank to rank file importance
  3. Analyze — Send file tree + key files to LLM in 4 structured passes (overview, modules, architecture, reading guide)
  4. Cache — Store results in SQLite keyed by content hash, skip unchanged files on re-scan
  5. Export — Assemble wiki pages with Mermaid diagrams and source links, output in chosen format

Development

git clone https://github.com/he-yufeng/RepoWiki.git
cd RepoWiki

# backend
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,web]"

# frontend
cd frontend && npm install && npm run dev

# run backend
repowiki serve --port 8000

Roadmap

Generation, the web interface, and the diagrams work, and re-runs only regenerate the pages whose source changed. The next steps are about making the wiki better connected and easier to publish:

  • Cross-reference links — link a symbol mentioned on one module page to the page where it's defined, so the wiki reads like connected docs instead of isolated pages.
  • More diagram types — a call graph and a data-flow view alongside the dependency graph, since the analysis already walks imports and could surface more.
  • Publish to a static site — a one-command export to a GitHub Pages-ready site, so a generated wiki can live as a project's docs, not just a local file.

Related Projects

If RepoWiki helped you find your way around a codebase, a few other things I've built:

  • CoreCoder — want to understand how a coding agent really works? Read the whole ~1k-line engine end to end, not a black box.
  • FindJobs-Agent — stop sifting job boards by hand: it ranks postings against your resume and runs mock interviews.
  • ContractGuard — catch the risky clauses before you sign: it reads contracts and flags the dangerous bits.
  • GitSense — want to contribute to open source? It finds issues worth your time and gauges whether your PR will get merged.
  • CodeABC — understand any codebase even if you don't code, built for non-programmers.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repowiki-0.3.3.tar.gz (159.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repowiki-0.3.3-py3-none-any.whl (49.6 kB view details)

Uploaded Python 3

File details

Details for the file repowiki-0.3.3.tar.gz.

File metadata

  • Download URL: repowiki-0.3.3.tar.gz
  • Upload date:
  • Size: 159.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for repowiki-0.3.3.tar.gz
Algorithm Hash digest
SHA256 8805815d697c039ae0e5cb0e5be60346d93bf5f2033ba364b8ba4570a7d7fd37
MD5 1489b670fe62cfc02df6fdd4edd9f115
BLAKE2b-256 62a1719fb474a7c70854d6052322abe2dc824f1ab933560cc66ae6da3c3b15fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for repowiki-0.3.3.tar.gz:

Publisher: publish.yml on he-yufeng/RepoWiki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repowiki-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: repowiki-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 49.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for repowiki-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 16f6242a8dc6f86a4e6f3695e9c2b8f1f2cb701fbf631382d0f96089ae85f7f4
MD5 bceb3b6a494a95cd391b9a52b96536a9
BLAKE2b-256 0561aa2edefb883a7ed5ebdaf58aa152e1468d868892b90f11237f5fbad64b8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for repowiki-0.3.3-py3-none-any.whl:

Publisher: publish.yml on he-yufeng/RepoWiki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page