Skip to main content

ArchSketch

A Python CLI tool that scans any project directory and automatically infers its system architecture from common project files, then displays a beautiful ASCII diagram in your terminal.

No configuration needed. Just point it at a folder.

Quick Start

# Clone the repo
git clone https://github.com/yourusername/archsketch.git
cd archsketch

# Set up Python environment
python -m venv venv

# Activate (Windows)
venv\Scripts\activate

# Activate (macOS/Linux)
source venv/bin/activate

# Install
pip install -e .

# Run on any project!
archsketch analyze /path/to/your/project

Example Output

                          ARCHITECTURE SKETCH

                    +--------------------------+
                    |     >> Reverse Proxy     |
                    |          Nginx           |
                    +--------------------------+
                                 |
                                 v
                    +--------------------------+
                    |       ## Frontend        |
                    |         Next.js          |
                    +--------------------------+
                                 |
                                 v
                    +--------------------------+
                    |       @@ Backend         |
                    |         FastAPI          |
                    +--------------------------+
                          |            |
                          v            v
              +----------------+ +----------------+
              |   [] Database  | |    <> Cache   |
              |   PostgreSQL   | |     Redis     |
              +----------------+ +----------------+

+------------------------ Legend -------------------------+
|  ## Frontend | @@ Backend | [] Database | <> Cache | >> Proxy |
+---------------------------------------------------------+

Screenshots

Terminal output (analyze)

image

Exported SVG

image

Usage

Analyze any project

archsketch analyze .                           # Current directory
archsketch analyze /path/to/your/project       # Any project folder
archsketch analyze ~/code/my-app               # Home directory path
archsketch analyze . --compact                 # Diagram only, no detections table
archsketch analyze . --no-table                # Same as --compact

Export to Mermaid

archsketch export /path/to/project --format mermaid --output architecture.mmd

Export to SVG (shareable image)

# Requires: pip install graphviz AND Graphviz binaries (https://graphviz.org/download/)
archsketch export . --format graphviz --output architecture.svg

# Or export DOT file (no binary needed), then convert: dot -Tsvg architecture.dot -o architecture.svg
archsketch export . --format dot --output architecture.dot

Generates:

graph TD
  frontend[Frontend: Next.js]
  backend[Backend: FastAPI]
  database[Database: PostgreSQL]
  cache[Cache: Redis]

  frontend --> backend
  backend --> database
  backend --> cache

JSON output

archsketch analyze /path/to/project --json

Show Mermaid in terminal

archsketch show /path/to/project

Compare architecture between git refs (diff)

Requires: pip install gitpython

archsketch diff main feature-branch
archsketch diff HEAD~1 HEAD ./src

Shows added/removed components and edges (e.g. + Cache: Redis, - Database: MySQL).

Explain in the diagram

  • ASCII: Each node box shows a short "From: ..." source line when available.
  • Mermaid: Comments in the .mmd file document which file each node came from.
  • JSON: Each node has sources and explanation for CI/scripting.

Stable JSON for CI

Export includes $schema, version, and consistent shape. Schema: schema/architecture.json.

archsketch analyze . --output architecture.json

What It Detects

ArchSketch reads these files to understand your stack:

File What it detects
package.json React, Next.js, Vue, Express, NestJS, Prisma, Redis, Remix, Astro, Hono, Supabase
requirements.txt FastAPI, Flask, Django, Celery, psycopg2, redis, Supabase
pyproject.toml Same as requirements.txt
pom.xml Spring Boot, PostgreSQL, Redis, Kafka, Micronaut, Quarkus
build.gradle / build.gradle.kts Spring Boot, PostgreSQL, Redis (Gradle)
docker-compose.yml PostgreSQL, MySQL, Redis, Nginx, RabbitMQ, custom services
Dockerfile Base images (node, python, nginx)
.env Database URLs, Redis URLs, service connections
nginx.conf Nginx, upstream backends, SSL, WebSocket
Procfile web/worker process types, Gunicorn, Celery, Next.js
deployment.yaml, service.yaml, k8s/*.yaml Kubernetes Deployments, Services, Ingress, container images
*.tf Terraform (AWS RDS, Lambda, SQS, GCP, Azure resources)

Detected Technologies

Role Technologies
Frontend React, Next.js, Vue.js, Nuxt.js, Angular, Svelte, Remix, Astro, SolidJS, Qwik, Preact
Backend Express, NestJS, FastAPI, Flask, Django, Fastify, Hono, Elysia, Spring Boot (pom.xml), Micronaut, Quarkus
Database PostgreSQL, MySQL, MongoDB, SQLite, Supabase
Cache Redis, Memcached
Reverse Proxy Nginx, Traefik, Caddy
Worker Celery, Bull, RQ
Queue RabbitMQ, Kafka

How It Works

Your Project          ArchSketch Pipeline              Output
    │                        │                           │
    ├─ package.json    ──►   │                           │
    ├─ requirements.txt ──►  │  1. Scan files            │
    ├─ docker-compose.yml ►  │  2. Detect technologies   │  ──► ASCII Diagram
    ├─ Dockerfile      ──►   │  3. Infer relationships   │  ──► Mermaid Export
    └─ .env            ──►   │  4. Build graph           │  ──► JSON Data
                             │  5. Render                 │
  1. Scanner - Walks your project, finds architecture-related files
  2. Detectors - Parse each file type, extract technology signals
  3. Inference Engine - Apply rules to determine roles and connections
  4. Renderer - Output as ASCII art or Mermaid diagram

Try It On Popular Projects

# Clone any open source project and analyze it
git clone https://github.com/tiangolo/full-stack-fastapi-template
archsketch analyze full-stack-fastapi-template

# Or your own projects
archsketch analyze ~/code/my-saas-app

Development

Run tests

pip install -e ".[dev]"
pytest

Project structure

archsketch/
├── archsketch/
│   ├── main.py              # CLI commands
│   ├── scanner.py           # File discovery
│   ├── models.py            # Data structures
│   ├── detectors/           # Technology detection
│   │   ├── package_json.py
│   │   ├── requirements_txt.py
│   │   ├── docker_compose.py
│   │   └── dockerfile.py
│   ├── inference/
│   │   └── engine.py        # Architecture inference rules
│   └── renderers/
│       ├── ascii_renderer.py
│       └── mermaid_renderer.py
├── schema/
│   └── architecture.json   # JSON schema for export (CI/scripting)
├── tests/                  # 60+ tests
├── samples/                 # Example projects
└── pyproject.toml

Requirements

  • Python 3.9+
  • No external services needed
  • Works offline

Troubleshooting

archsketch command not found after pip install archsketch

On Windows, if Python's Scripts folder isn't on your PATH (common with user installs or Windows Store Python), use:

python -m archsketch analyze .

This runs archsketch as a Python module and works without adding anything to PATH.

Alternatively, add your Python Scripts folder to PATH, e.g.: C:\Users\<You>\AppData\Roaming\Python\Python3XX\Scripts (replace XX with your Python version).

License

MIT

Metadata

Release files for archsketch 0.2.0

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

Source distribution (sdist)

Source distribution for archsketch 0.2.0
File Size Uploaded
archsketch-0.2.0.tar.gz 53.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for archsketch 0.2.0
File Interpreter ABI Platform
archsketch-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 108.5 kB

Release files / archsketch-0.2.0.tar.gz

Download URL archsketch-0.2.0.tar.gz
Size 53.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a621e80108409ee10a80f03f213e42f99bb529568ebad20b71bbe1c841795789
BLAKE2b-256 checksum
How to use checksums
6202fe142c27bb1a889ad9c29f3b10df36e92683c751d81451aba04bf463db7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / archsketch-0.2.0-py3-none-any.whl

Download URL archsketch-0.2.0-py3-none-any.whl
Size 55.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a8df95b8e6bdb25d8d785bfbfab54b6892e3436f8c232b1ca53810a02da2838
BLAKE2b-256 checksum
How to use checksums
01dc04ba82178df543f911de3f8d4c740712bd069089b84db224badc2f9b6848
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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