Interactive system and architecture diagram library
Project description
sysatlas
For software architects who keep redrawing the same diagram because it got unreadable — and for the AI coding assistants that keep the diagrams in sync with the code.
Most diagram tools let you cram everything onto one canvas, then leave you fighting the layout engine. sysatlas does the opposite: focused views (~10 components each), and splitting one system into many small diagrams is a first-class operation.
It works in both directions:
Forward — design before code
You describe a system in Python and:
- Split it into focused views — storefront, payments, async backbone — each one fits on a slide.
- Cross-reference between views with auto-detected stub nodes, so a component defined in one view shows up as a ghost reference in others.
- Annotate components with ISO 25010 quality attributes
(
security: critical,performance: high) — rendered as coloured badges. - Trace how things relate across views (
Cart depends_on Payments,APIController realizes API) using SysML link vocabulary. - Ground the whole thing in ISO 42010 (Stakeholders / Concerns / Viewpoints / Views) so the why is captured alongside the what.
Backward — reflect after the code lands
You point sysatlas at an existing source tree and it reads the real structure:
import sysatlas
# Python project
r = sysatlas.reflect("src/")
m = r.to_system_map(title="src internals")
m.save("docs/reflection/module-map.html")
# Rust crate (pip install 'sysatlas[reflect-rust]')
r = sysatlas.reflect_rust("my-crate/")
m = r.to_system_map(title="my-crate internals")
m.save("docs/reflection/module-map.html")
Static analysis — no execution, safe on broken or uncompiled code. The
output is the same SystemMap the forward flow produces, so a thin
human-authored "annotation overlay" (qualities, traces, viewpoints)
can be merged onto reflected structure via r.merge_with(overlay).
Drift between intent and reality becomes visible instead of silent.
The intended loop
- Plan the change with a forward-flow diagram on a feature branch.
- Implement the feature.
- Reflect the branch (
sysatlas.reflect(...)) and commit the regenerated diagrams alongside the code. Reviewers see structure and intent change together.
Output is a single self-contained HTML file — no server, no extra runtime dependencies, opens in any browser.
pip install sysatlas # Python reflection included
pip install 'sysatlas[reflect-rust]' # + Rust crate reflection
Using sysatlas with an AI coding assistant
sysatlas ships a guide aimed at LLMs. Tell your coding assistant
(Claude Code, Cursor, Aider, …) to read it before working on this
repo. The one-liner to paste into your CLAUDE.md / .cursorrules /
AGENTS.md:
Before editing this project, read sysatlas's LLM guide:
python -c "import sysatlas; print(sysatlas.llm_guide())". After any structural change (add/remove/rename modules or components), regenerate the affected diagrams underdocs/reflection/usingsysatlas.reflect(...)and commit them with the code change.
The guide tells the assistant exactly which symbols are public, which fields the ontology accepts, and that diagrams are part of the deliverable — not an afterthought.
Where to look
- Runnable feature-by-feature showcases live in
docs/demos/— start withdocs/demos/architecture.py. - Design philosophy:
docs/design-principles.md. - Full app index:
docs/README.md. - How sysatlas relates to C4 / ArchiMate / UML / BPMN / ISO 42010:
docs/state-of-the-art.md.
Apache 2.0 licensed.
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 sysatlas-0.2.0.tar.gz.
File metadata
- Download URL: sysatlas-0.2.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ff5ceeb51dc57b38cb71fa4c9f5be551443b8db27e7ba3637892d073aedd81d
|
|
| MD5 |
4d9f90549d80e74975255fd4f6e08a1d
|
|
| BLAKE2b-256 |
3bd9f2302f6352ddea85f3b1beb8cba1b2ad58d7bc61de7b671a25b2cf0da895
|
Provenance
The following attestation bundles were made for sysatlas-0.2.0.tar.gz:
Publisher:
publish.yml on CServinL/sysatlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sysatlas-0.2.0.tar.gz -
Subject digest:
9ff5ceeb51dc57b38cb71fa4c9f5be551443b8db27e7ba3637892d073aedd81d - Sigstore transparency entry: 1825832559
- Sigstore integration time:
-
Permalink:
CServinL/sysatlas@8869e5223ec5df48974ab2585de083f84b498ceb -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/CServinL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8869e5223ec5df48974ab2585de083f84b498ceb -
Trigger Event:
push
-
Statement type:
File details
Details for the file sysatlas-0.2.0-py3-none-any.whl.
File metadata
- Download URL: sysatlas-0.2.0-py3-none-any.whl
- Upload date:
- Size: 99.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 |
4f39d56b9c88e98a31311324b7637ab9556ece6c321dbfa80901cb6c6de6e472
|
|
| MD5 |
10f66105ad001828582667b926283993
|
|
| BLAKE2b-256 |
d864a918a91fd52eb4af8aec32976ead8e2768c3f759fe50acf3c69f2ca4635e
|
Provenance
The following attestation bundles were made for sysatlas-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on CServinL/sysatlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sysatlas-0.2.0-py3-none-any.whl -
Subject digest:
4f39d56b9c88e98a31311324b7637ab9556ece6c321dbfa80901cb6c6de6e472 - Sigstore transparency entry: 1825832728
- Sigstore integration time:
-
Permalink:
CServinL/sysatlas@8869e5223ec5df48974ab2585de083f84b498ceb -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/CServinL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8869e5223ec5df48974ab2585de083f84b498ceb -
Trigger Event:
push
-
Statement type: