wiringmap
See how your code is wired. wiringmap turns any Python project into an interactive map: what every file uses, what uses it, and what breaks if you change it. It runs offline, produces one HTML file, and needs no AI.
Shown above: fastapi/full-stack-fastapi-template.
Why
An AI agent wrote most of your code. It works, but you have never read most of it, and now you need to change something. Which file does what? What calls this function? What breaks if you touch it?
wiringmap answers those questions in seconds, and your code never leaves your machine.
Try it
You need uv. Then, inside any Python project:
uvx --from git+https://github.com/Burnaviour/wiringmap wiringmap build . --open
This writes .wiringmap/report.html and opens it in your browser. The .wiringmap/
folder ignores itself, so it is never committed by accident.
What you get
- A map of the whole project. Files are boxes inside their folders, and arrows show imports. Switch to Calls to see which files call into which; thicker arrows mean more calls. Large projects start with folders closed (double-click to open one), and tests, docs and migrations stay closed so you see the application first.
- Click a file to see what it uses (indigo), what uses it (amber), its docstring, and the classes and functions inside it.
- Click a function to see what it calls and what calls it. Each link says how it was found: resolved from names and imports, inferred from type hints, or guessed from a unique method name.
- "Start reading here" lists where the program starts: commands, scripts, and web
routes with their method and path (
POST /login/access-token). - Search every file, class and function with /, and read the source next to the map.
- Big projects work too. pandas (1,411 files) scans in under 8 seconds, and its report opens in under one.
Private by design
- wiringmap reads your code; it never runs it.
- Nothing is uploaded. The report is one self-contained file that makes no network requests, so you can open it offline or send it to a teammate.
--no-sourceleaves your source code out of the report, keeping only its structure.
Options
| Option | Meaning |
|---|---|
--open |
Open the report in your browser |
-o FILE |
Write the report somewhere else, leaving the project untouched |
-e PATTERN |
Skip extra paths, gitignore style (-e "scripts/"). .gitignore is always honoured |
--source / --no-source |
Include the source code in the report. By default it is included when the project has under 8 MB of Python |
-q |
No progress bar or summary |
wiringmap scan . writes only the data, graph.json: every file, class and function
plus the imports, calls, inheritance and decorators between them. Its format is
documented in docs/graph-schema.md, so you can build your own
tools on it.
Roadmap
- Code graph for Python, with call links that say how sure they are
- Interactive offline map with search and source view
- Flow view: follow a command or web request step by step through the code
- Framework wiring: FastAPI
Depends, callbacks and overridden methods as links - Plain-English explanations of files, folders and flows from a local model (Ollama), optional
- JavaScript and TypeScript
Contributing
Bug reports and ideas are welcome: please open an issue. To work on the code, see CONTRIBUTING.md and how wiringmap works.
If wiringmap helps you, a ⭐ helps other people find it.
License
MIT. Reports bundle Preact (MIT), htm (Apache-2.0), Cytoscape.js and cytoscape-fcose (MIT); see their licenses.
Metadata
Release files for wiringmap 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| wiringmap-0.1.0.tar.gz | 776.0 kB | Without provenance | Details for wiringmap-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| wiringmap-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for wiringmap-0.1.0-py3-none-any.whl |
Total release size: 1.0 MB
Release files / wiringmap-0.1.0.tar.gz
| Download URL | wiringmap-0.1.0.tar.gz |
|---|---|
| Size | 776.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a615a31ee1138424532df4261fbda9f34713c58c0424bde78316e5b33cd61689
|
|
BLAKE2b-256 checksum How to use checksums |
f77de03e37976f447e03bfd6c5ef14d2ba4602b9a9823643bb09131e115e4d75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / wiringmap-0.1.0-py3-none-any.whl
| Download URL | wiringmap-0.1.0-py3-none-any.whl |
|---|---|
| Size | 270.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a0014383ed6e462261a8bade8caf3cc6b76c7e3873bb95ca5690c251c536454
|
|
BLAKE2b-256 checksum How to use checksums |
e7069439d54df2f119c7377c77b11a6b147c281f5b8e2509894c2c78bd2d8ac4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for wiringmap 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.