devmap
A source-of-truth scanner and governance layer for your machine's development environment. One command maps the whole dev setup, draws the PATH-conflict graph, and surfaces ghost binaries and multi-version collisions.
devmap is the developer-focused spiritual successor to fastfetch: instead of only printing system specs, it scans the development surface of your machine — runtimes, package managers, IDEs, per-interpreter pip packages, conda/WSL/Docker environments, Visual Studio dev shells, and project-local virtual environments — and produces a single machine-readable manifest plus an actionable issue list.
Install
This PyPI package ships the real devmap CLI. It bundles the compiled devmap app and launches it via Node.js (or Bun, if present), so it works standalone — no need to install from npm or build from source:
pip install devmap
devmap scan
Requirements at runtime: a Node.js (or Bun) runtime available on PATH. Python itself is only used as the installer/launcher wrapper.
Features
- One-command full scan of the dev environment (runtimes, package managers, IDEs, and the environment layers below).
- PATH conflict graph: detects multi-version tools, shadowed binaries, and ghost/broken symlinks (e.g. Windows App Execution Aliases that look broken but aren't).
- Off-PATH awareness: reports installed-but-not-on-PATH tools, while correctly treating version-manager environments (conda envs, nvm versions) as by-design off-PATH.
- Environment layers: vcpkg packages, per-python pip packages (incl. upgradable), apt packages (Linux), conda environments, Docker (binary + daemon + images/containers), WSL distros, Visual Studio dev shells, and project-local environments (
.venv,node_modules). - Dependency auditing (optional): with
--audit-deps, devmap detects and invokes installed SCA tools (osv-scanner, govulncheck, pip-audit, Trivy), parses their JSON, and merges results into a unified view. devmap is a scanner/orchestrator, not a CVE database — for authoritative vulnerability data, use those tools directly. - Health layer: converges official self-checks into one view, per environment. Offline by default:
pip checkruns for every Python interpreter, andconda doctorruns for every conda env. With--health-network,npm doctor/rustup checkare added. Missing/offline probes degrade gracefully toinfo(skipped). Onlywarn/errorsurface underissues (N); passing checks are summarized as✓ N checks passed. - Three sub-commands:
scan(the fact source),query(ask the manifest),devdiff(compare two manifests — environment drift / cross-machine consistency). - Zero Python dependencies. The bundled app is pure TypeScript compiled to JavaScript.
Usage
devmap scan # pretty-print to terminal, write ~/.devmap/devmap.json
devmap scan --json # machine-readable JSON (devmap.json schema) to stdout
devmap scan --report # full markdown report
devmap scan --scan-root C:\src # also scan project-local envs under a root (comma-separated for many)
devmap scan --wsl-deep # also wake stopped WSL distros and probe their tools (slower)
devmap scan --outdated # hit PyPI to list upgradable pip/conda packages (slower, needs network)
devmap scan --ci # exit code 1 if any error-severity issue is found
devmap scan --audit-deps # invoke installed SCA tools and merge CVE findings
Key scan flags:
| Flag | Description |
|---|---|
--json |
Emit machine-readable JSON (the devmap.json schema) to stdout. |
--report |
Emit a full markdown report. |
--no-manifest |
Do not persist the manifest to disk. |
--manifest <path> |
Read/write the manifest at a custom path (default ~/.devmap/devmap.json). |
--disable <r1,r2> |
Disable check rules by ID prefix (e.g. path.duplicate, pip.outdated). |
--scan-root <dir> |
Root(s) to scan for project-local environments (comma-separated). Default: cwd. |
--outdated |
Network check for upgradable pip/conda packages (off by default). |
--wsl-deep |
Probe inside stopped WSL distros (off by default to avoid waking them). |
--audit-deps |
Invoke installed SCA tools and merge CVE findings into the report. |
--ci |
Exit non-zero on any error-severity issue. |
--quiet |
Suppress the live scan progress feedback (for scripts/CI). |
--bom |
Prefix output with a UTF-8 BOM so Notepad-like viewers render it correctly (stdout redirect/pipe only). |
query — ask the manifest
devmap query # everything
devmap query node # tools whose id contains "node"
devmap query runtime.node # dot-form category.tool selector (runtime / pkg / ide)
devmap query --issues # only issues
devmap query --conflicts # only conflicts (multiVersion / path / ghost)
devmap query --off-path # only off-PATH installs
devmap query --kind runtime # filter by category
devmap query --where conda # filter by install path substring
devdiff — compare two manifests
devmap devdiff # stored manifest vs current live scan
devmap devdiff <file> # stored/before vs <file>
devmap devdiff <a> <b> # compare two manifest files
Reports added/removed installs, version changes, and issues added/resolved.
Output
- The default
scanwrites the manifest to~/.devmap/devmap.json(pure UTF-8, no BOM — directly parseable by Bun/Node/Python/jq). - Use
query/devdiffagainst a stored manifest without re-scanning.
Repository
https://github.com/StevenLOL/devmap
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devmap-0.3.7.tar.gz.
File metadata
- Download URL: devmap-0.3.7.tar.gz
- Upload date:
- Size: 32.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2bb9049ad374d13bdc8e55a37445e22060cfb0bf04489c569eb7baf3330221b
|
|
| MD5 |
3610e135c226263d54c8f8dc348c884d
|
|
| BLAKE2b-256 |
c8d64f1540fb7a8756630181b71063c0117d0431687b3efc2462f244ac1ca56b
|
File details
Details for the file devmap-0.3.7-py3-none-any.whl.
File metadata
- Download URL: devmap-0.3.7-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdb7a5e3228b75c60dc68000a321fb3193ee156233b4aa0b6a5820bee1165ffa
|
|
| MD5 |
8d6ea00d91758c1496bf923d3c915de9
|
|
| BLAKE2b-256 |
d05970f7f5c3d95f46c09418b6dae4e3b2607bf49190e35b63e0c3a1dc1e5a6a
|