A Python tool for enforcing and visualizing software architecture.
Project description
Architecture Insights, Governance & Versioned Design
Warning: Experimental. Expect breaking changes until release 0.1.0
Pacta turns software architecture into versioned, queryable data — so teams can see, compare, and reason about architectural change over time, not just block violations.
pip install pacta
Supported languages:
- Python
- Java (coming soon)
- Go (coming soon)
- C# (coming soon)
Why?
Codebases rot. Architecture degrades through small changes no one tracks. Pacta turns architecture into something measurable, reviewable, and enforceable — catching drift early, not months later.
What it does
- Architecture snapshots — version your architecture like code
- History & trends — track how dependencies, coupling, and violations evolve over time
- Diffs — compare architectural states like Git commits
- Metrics & insights — nodes, edges, layers, instability, drift
- Rules & governance — express architectural intent and enforce it incrementally
- Baseline mode — govern change without being blocked by legacy debt
Think of Pacta like Git for architecture
| Git | Pacta |
|---|---|
git add |
pacta snapshot save — capture an architectural snapshot |
git commit --verify |
pacta check — evaluate rules against a snapshot |
git commit |
pacta scan — snapshot + check in one step |
git log |
pacta history — timeline and trends of architectural states |
git diff |
pacta diff — compare two snapshots |
| branch protection | rules.pacta.yml — governance that prevents drift |
See the Getting Started guide for a full walkthrough.
Docs
Roadmap (short)
- Open-source CLI and analysis engine
- Content-addressed snapshots with history tracking
- Trend analysis with chart export
- Architecture visualization (Mermaid, D2)
- Health metrics (drift score, instability)
- Future: Architecture Intelligence Layer:
- Cross-repository insights
- Historical trend analysis
- Team-level governance and reporting
License
Apache-2.0. 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
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 pacta-0.0.6.tar.gz.
File metadata
- Download URL: pacta-0.0.6.tar.gz
- Upload date:
- Size: 880.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aef716469ec236f6a8940e538766ad96f5ca6b834297dc186c0e49e6ea055077
|
|
| MD5 |
ce588bf8a755c2f03ad8d7f0890e5e29
|
|
| BLAKE2b-256 |
f20c3b2a1b1952a83ca0e7ec0bc4237d7b3dba80e1915b4d976539c15ed13168
|
Provenance
The following attestation bundles were made for pacta-0.0.6.tar.gz:
Publisher:
publish.yaml on akhundMurad/pacta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pacta-0.0.6.tar.gz -
Subject digest:
aef716469ec236f6a8940e538766ad96f5ca6b834297dc186c0e49e6ea055077 - Sigstore transparency entry: 869023429
- Sigstore integration time:
-
Permalink:
akhundMurad/pacta@d2e4d30810c501846cb1d150976b0a9b2e1e167f -
Branch / Tag:
refs/tags/v0.0.6 - Owner: https://github.com/akhundMurad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@d2e4d30810c501846cb1d150976b0a9b2e1e167f -
Trigger Event:
push
-
Statement type:
File details
Details for the file pacta-0.0.6-py3-none-any.whl.
File metadata
- Download URL: pacta-0.0.6-py3-none-any.whl
- Upload date:
- Size: 103.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
febd6a5afa4a50a4d320f7fd20b9f095206e79347340f48e6a4be63b5d871c14
|
|
| MD5 |
0b909dcfc4f67575015bb0e843981c46
|
|
| BLAKE2b-256 |
321912f9718fdbde220cc87c15f4a54431a50746001200fa3b5a3cc7136c25ab
|
Provenance
The following attestation bundles were made for pacta-0.0.6-py3-none-any.whl:
Publisher:
publish.yaml on akhundMurad/pacta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pacta-0.0.6-py3-none-any.whl -
Subject digest:
febd6a5afa4a50a4d320f7fd20b9f095206e79347340f48e6a4be63b5d871c14 - Sigstore transparency entry: 869023433
- Sigstore integration time:
-
Permalink:
akhundMurad/pacta@d2e4d30810c501846cb1d150976b0a9b2e1e167f -
Branch / Tag:
refs/tags/v0.0.6 - Owner: https://github.com/akhundMurad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@d2e4d30810c501846cb1d150976b0a9b2e1e167f -
Trigger Event:
push
-
Statement type: