Skip to main content

Static architecture analysis and visualization for software projects.

Project description

ArchMAP

CI Python License: MIT Version

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/graph
  • GET /api/health
  • GET /api/project
  • POST /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:

  1. No direct feature merge into main.
  2. release/* accepts only stabilization changes.
  3. CI must pass before merge.
  4. 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.json with 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


Download files

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

Source Distribution

kg_archmap-0.8.0.tar.gz (378.0 kB view details)

Uploaded Source

Built Distribution

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

kg_archmap-0.8.0-py3-none-any.whl (377.8 kB view details)

Uploaded Python 3

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

Hashes for kg_archmap-0.8.0.tar.gz
Algorithm Hash digest
SHA256 d860f8f68f9efe36a6de91262f5c9614554064dc81d27760c598d29ffabe0bee
MD5 bdb0d5fda0534a606aadc9d59ef9996d
BLAKE2b-256 4598dfd343cb952579e0b3b3c04370838440c79e3e577da2d0499be61fae8e5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for kg_archmap-0.8.0.tar.gz:

Publisher: publish.yml on Kaua-KGzin/ArchMAP

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

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

Hashes for kg_archmap-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d8f8b7b4dd576bcba67c01f94deb2c0b02c669a482944a3a09d94200edc69a04
MD5 d58ed72d0b73a4832be665724fcb5113
BLAKE2b-256 9cd86ce7ad52761bba77640ac4768e73e6901554c0e0a0e078801009a4e228d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kg_archmap-0.8.0-py3-none-any.whl:

Publisher: publish.yml on Kaua-KGzin/ArchMAP

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page