Static architecture analysis and visualization for software projects.
Project description
ArchMAP
Static architecture analysis for software repositories.
ArchMAP scans source code, builds dependency graphs, detects cycles, reports architectural risks, and serves an interactive web UI.
Supported languages:
- Python
- JavaScript
- TypeScript
- Rust
- Go
- PHP
- Java
- C#
- C/C++
Status
- Current release:
v0.8.0 - Primary runtime: Python
>=3.11 - Interactive UI: built-in static UI + Node dev server option
- Distribution: PyPI package + Windows executable
Installation
From PyPI
pip install archmap
For local development
git clone https://github.com/Kaua-KGzin/ArchMAP
cd ArchMAP
python -m pip install -e ".[dev]"
Quick demo
Run the bundled sample project:
archmap analyze examples/sample-project --format both --include-cytoscape
archmap serve examples/sample-project
Useful API endpoints while serve is running:
GET /api/graphGET /api/healthGET /api/projectPOST /api/reanalyze
CLI overview
Analyze
archmap analyze <path> --format json|mermaid|both
Quality gates for CI:
archmap analyze . --fail-on-risks --top 10
Use analyze for the full report, quality gates, Mermaid, JSON, and Cytoscape exports.
Explain
archmap explain <path>
Prints a simple architecture summary for tired humans:
auth -> users, payments
payments -> gateway
Risk
archmap risk <file> [path]
Shows blast radius, incoming/outgoing dependencies, and the file risk score.
Improve
archmap improve [path] --out-script .codeatlas/refactor.ps1
Suggests a cleaner project structure, such as /auth, /payments, /users,
and can generate a helper refactor script.
Serve
archmap serve <path> --host 0.0.0.0 --port 3000
Diff
# Compare two git refs
archmap diff HEAD~5 HEAD
# Compare two saved JSON snapshots (no git required)
archmap diff --snapshot-a before.json --snapshot-b after.json
archmap history --repo . --limit 12
Trace
archmap trace src/main.py .
archmap trace src/main.py . --unreachable --max-depth 3
Shows every file reachable from an entrypoint through the dependency graph, grouped by depth, with coverage percentage.
Init (blueprint from real graph)
archmap init # scan directory names
archmap init --from-analysis # derive layer rules from actual dependency graph
archmap init --from-analysis --dry-run
Advise (LLM architectural advisor)
archmap advise . # Claude (ANTHROPIC_API_KEY)
archmap advise . --provider openai # OpenAI (OPENAI_API_KEY)
archmap advise . --provider ollama # local Ollama
archmap advise . --provider custom --base-url http://localhost:1234 # any OpenAI-compat API
Git workflow (professional flow)
Branch promotion model:
feat/* -> dev -> release/* -> main
Also supported:
feature/*(legacy alias)fix/*docs/*
Rules:
- No direct feature merge into
main. release/*accepts only stabilization changes.- CI must pass before merge.
- Update docs/changelog when behavior changes.
See:
Repository layout
ArchMAP/
+-- .github/ # CI/release workflows and PR template
+-- docs/ # MkDocs documentation
+-- examples/ # sample project for demos
+-- logs/ # runtime/archive log organization
+-- scripts/ # automation helpers (smoke, benchmark, exe build)
+-- src/archmap/ # Python source code
+-- tests/ # automated test suite
+-- vscode-extension/ # VS Code extension (inline diagnostics, trace view)
+-- web-ui/ # Node dev server + static assets
+-- archmap.spec # PyInstaller spec
+-- NOTICE.md # original distribution notice
`-- README.md
Logs and artifacts
- Runtime logs:
logs/runtime/(git-ignored) - Historical logs:
logs/archive/ - Build artifacts: generated locally (
build/,dist/) and should not be committed as source changes
Windows executable
Build locally:
powershell -ExecutionPolicy Bypass -File scripts/build-exe.ps1 -Clean
This script:
- Builds
dist/archmap.exe - Creates a versioned binary copy
- Writes
dist/archmap-build-info.jsonwith SHA256 - Runs executable smoke test (
archmap.exe version)
Node development server utilities
For frontend/API exploration with dynamic Python analysis:
npm run serve:web -- --path .
Original distributor rights
Original distributor and primary author: Kaua Gabriel / Kauã Gabriel (Kaua-KGzin).
Redistributions must preserve:
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 kg_archmap-0.8.0.tar.gz.
File metadata
- Download URL: kg_archmap-0.8.0.tar.gz
- Upload date:
- Size: 378.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d860f8f68f9efe36a6de91262f5c9614554064dc81d27760c598d29ffabe0bee
|
|
| MD5 |
bdb0d5fda0534a606aadc9d59ef9996d
|
|
| BLAKE2b-256 |
4598dfd343cb952579e0b3b3c04370838440c79e3e577da2d0499be61fae8e5d
|
Provenance
The following attestation bundles were made for kg_archmap-0.8.0.tar.gz:
Publisher:
publish.yml on Kaua-KGzin/ArchMAP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kg_archmap-0.8.0.tar.gz -
Subject digest:
d860f8f68f9efe36a6de91262f5c9614554064dc81d27760c598d29ffabe0bee - Sigstore transparency entry: 1461909302
- Sigstore integration time:
-
Permalink:
Kaua-KGzin/ArchMAP@84995cbaafdb50b24ee90fb3b8f5053a785558fa -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/Kaua-KGzin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84995cbaafdb50b24ee90fb3b8f5053a785558fa -
Trigger Event:
push
-
Statement type:
File details
Details for the file kg_archmap-0.8.0-py3-none-any.whl.
File metadata
- Download URL: kg_archmap-0.8.0-py3-none-any.whl
- Upload date:
- Size: 377.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8f8b7b4dd576bcba67c01f94deb2c0b02c669a482944a3a09d94200edc69a04
|
|
| MD5 |
d58ed72d0b73a4832be665724fcb5113
|
|
| BLAKE2b-256 |
9cd86ce7ad52761bba77640ac4768e73e6901554c0e0a0e078801009a4e228d2
|
Provenance
The following attestation bundles were made for kg_archmap-0.8.0-py3-none-any.whl:
Publisher:
publish.yml on Kaua-KGzin/ArchMAP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kg_archmap-0.8.0-py3-none-any.whl -
Subject digest:
d8f8b7b4dd576bcba67c01f94deb2c0b02c669a482944a3a09d94200edc69a04 - Sigstore transparency entry: 1461909338
- Sigstore integration time:
-
Permalink:
Kaua-KGzin/ArchMAP@84995cbaafdb50b24ee90fb3b8f5053a785558fa -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/Kaua-KGzin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84995cbaafdb50b24ee90fb3b8f5053a785558fa -
Trigger Event:
push
-
Statement type: