Skip to main content

🔍 repolens

X-ray any codebase in one command

One line in, one file out — an interactive architecture map, blast-radius explorer, health grade, security scan, and hotspot report for any repo, local or on GitHub.

PyPI Python License: MIT CI

uvx repolens-kit facebook/react    # ← that's the whole setup

or try it online, no install: lens.bigwinner.work — paste any public repo

repolens interactive report — blast radius mode with file inspector

One-liners

uvx repolens-kit .                 # analyze the repo you're standing in (zero install)
uvx repolens-kit pallets/flask     # analyze any GitHub repo by shorthand
uvx repolens-kit https://github.com/fastapi/fastapi
pipx run repolens-kit .            # same, via pipx
pip install repolens-kit && repolens .  # installs the `repolens` command

Every run prints a rich terminal summary and writes a single self-contained HTML file — D3 inlined, zero external requests, works offline, safe to email or attach to a PR. Your code never leaves your machine.

repolens terminal output

What you get

🕸️ Interactive dependency graph Force-directed map of every file. Four color modes — folder, architectural layer, churn, blast. Click any node for its imports, dependents, functions, and owners.
💥 Blast radius "If I change this file, what breaks?" Transitive-dependent analysis answers it per file, in the terminal and the graph.
🏥 Health grade (A–F) Cycles, coupling, oversized files, disconnected code, and security findings — with a transparent penalty breakdown, never a black-box number.
🔐 Security scan Committed private keys, AWS/GitHub/Slack tokens, hardcoded secrets, SQL built by string-glue, eval/exec, unsafe deserialization, disabled TLS verification. Findings in test/docs paths are automatically demoted.
🔥 Hotspots & ownership Per-file commit churn and top contributors mined from git history — know what's volatile and who to ask.
⟳ Circular dependencies Strongly-connected components across the import graph (Tarjan), with the actual file chains.
🗺️ Code map Treemap of lines-of-code by folder, language donut, largest-impact and most-changed bar charts.
📤 JSON export --json dumps the entire model — pipe it into CI gates, dashboards, or your own tooling.
Code map treemap, language donut, hotspots and blast radius charts

How the analysis works

repolens parses source with per-language extraction (30+ languages: Python, TypeScript/JavaScript, Go, Rust, Java, Kotlin, C/C++, C#, Ruby, PHP, Swift, Elixir, and more), then resolves imports to files inside the repo to build a real dependency graph:

  • Python: from X import name expands to submodules, src/-layout packages resolve, if TYPE_CHECKING: blocks and function-body (deferred) imports are excluded — so the cycles it reports are cycles that actually bite at import time.
  • JS/TS: relative paths, index.* resolution, require/dynamic import().
  • Ambiguous names are settled by ranking (package roots beat stray same-named fixtures) instead of being dropped.

On top of the graph: blast radius (reverse-reachability per file), SCC cycle detection, layer classification, hub/coupling metrics, and a security ruleset tuned for precision. Everything is heuristic and fast — ~1 second for a 1,000-file repo — built for orientation, not for replacing a compiler.

Usage

repolens [target] [options]

target                 local path, owner/repo, or GitHub URL (default: .)

-o, --output FILE      HTML report path (default: <name>-repolens.html)
    --json [FILE]      dump the full analysis model as JSON (stdout if no FILE)
-x, --exclude PATTERN  extra exclude glob, repeatable (e.g. -x 'docs/**')
    --max-files N      cap analyzed files (default: 6000)
    --tarball          fetch GitHub repos as a snapshot streamed in memory —
                       ~10x faster, zero disk writes, but no churn/ownership stats
    --no-open          don't auto-open the report in a browser
    --no-html          terminal summary only
-q, --quiet            no terminal summary

As a library

from repolens import analyze

report = analyze("path/or/owner/repo")
print(report["health"]["grade"], report["repo"]["edges"])

In CI

pip install repolens-kit
repolens . --no-open --no-html --json report.json
python -c "import json,sys; sys.exit(json.load(open('report.json'))['health']['score'] < 70)"

Privacy

  • Local analysis never touches the network.
  • GitHub targets are shallow-cloned with your own git (and deleted afterward) — no tokens collected, no telemetry, nothing phoned home.
  • The HTML report inlines D3, so opening it makes zero external requests.

Credits

repolens is a from-scratch Python reimagining of CodeFlow by Braedon Saunders — a lovely browser-only codebase visualizer. Same mission (stop guessing, start seeing), rebuilt as an installable CLI with a resolvable import graph, honest health scoring, git mining, and offline single-file reports.

License

MIT — see LICENSE.

Stop guessing. Start seeing.

Metadata

Release files for repolens-kit 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for repolens-kit 0.3.3
File Size Uploaded
repolens_kit-0.3.3.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for repolens-kit 0.3.3
File Interpreter ABI Platform
repolens_kit-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / repolens_kit-0.3.3.tar.gz

Download URL repolens_kit-0.3.3.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
2ef0e77c29bc75530e506d88e8dec6883d40ba70297167b7118e65f9567493c6
BLAKE2b-256 checksum
How to use checksums
cbf930143dece68b87e569116438f6a95537e7a8d0c3b0548c1fbd643e056c1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / repolens_kit-0.3.3-py3-none-any.whl

Download URL repolens_kit-0.3.3-py3-none-any.whl
Size 137.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b497e14d87f0e366d3a1951839515d66de666ac5008d158c6e3df42307f70f02
BLAKE2b-256 checksum
How to use checksums
020c74ef54304d232cd83aa4e3929b02229c359711a2dda08dbf3b118ff348f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release 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