Desktop-first Enterprise Capability Model studio with Git-managed JSONL storage.
Project description
ECM Studio
ECM Studio is a Windows-first desktop application for managing an Enterprise Capability Model as local, Git-managed JSONL files. It gives architects and capability owners a focused workspace for editing capability trees, reviewing change history, publishing model snapshots, and exporting portable artifacts without putting the authoritative model in a database.
Highlights
- Desktop UI built with React, Dockview, Fluent UI, and pywebview.
- Durable model storage in readable JSONL files under
ecm/. - Git-native workflow for checkpoints, scenarios, merges, restore, pull, and push.
- SQLite projection rebuilt locally for navigation and search speed.
- Capability map view with SVG and HTML export.
- Model import/export for JSONL, CSV, and bundled JSON.
- Release workflow for tagged ECM model exports and GitHub release publication.
- Light/dark theme support with native Windows chrome integration.
Install
ECM Studio requires Python 3.13 or newer. Install it from PyPI:
pip install ecm-studio
On Windows, if pip points at a different Python installation, use the Python
launcher instead:
py -m pip install ecm-studio
With uv, install ECM Studio as a command-line tool:
uv tool install ecm-studio
Or install it into the current uv-managed environment:
uv pip install ecm-studio
Start the desktop app:
ecms
Open a workspace directly:
ecms C:\path\to\capability-model-repo
Check the installed package version:
ecms --version
Workspace Model
An ECM Studio workspace is a normal Git repository. The application stores the
authoritative model in ecm/*.jsonl files and keeps local runtime state in
.ecm-studio/, which should stay ignored by Git.
The SQLite database is only a local projection. It can be rebuilt from JSONL at any time and is not the source of truth.
Development
Install Python and frontend dependencies:
py -m pip install -e .[dev]
npm install --prefix ui
Run the Vite dev server and launch the desktop shell against it:
npm run dev --prefix ui
py -m ecm_studio --dev-ui http://localhost:5173
Build the frontend assets:
npm run build --prefix ui
Run checks:
ruff check src tests scripts
pytest -q
npm test --prefix ui
npm run typecheck --prefix ui
Packaging And Releases
The Python package uses Hatchling and reads its version from
src/ecm_studio/__init__.py.
Cut a release from a clean working tree:
python scripts/release.py 0.1.1
git push origin master v0.1.1
The publish.yml workflow builds the React UI, stages it into the wheel, checks
the distribution with Twine, verifies packaged UI assets, and publishes tagged
v* releases to PyPI through trusted publishing.
Open the next development cycle after a release:
python scripts/release.py --post-release 0.1.2.dev0
License
ECM Studio is released under the MIT 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 ecm_studio-0.3.3.tar.gz.
File metadata
- Download URL: ecm_studio-0.3.3.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb98254ea75989364bf27f7808a8993948af92fe693680eab16ed7e9c1588825
|
|
| MD5 |
27f465c8888d8c94966250e8e49c8096
|
|
| BLAKE2b-256 |
4b73df602881ae7db73c17071167826abc69c5483ea1bb2625626d4938e51cda
|
Provenance
The following attestation bundles were made for ecm_studio-0.3.3.tar.gz:
Publisher:
publish.yml on ThomasRohde/ecm-studio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ecm_studio-0.3.3.tar.gz -
Subject digest:
eb98254ea75989364bf27f7808a8993948af92fe693680eab16ed7e9c1588825 - Sigstore transparency entry: 1391457635
- Sigstore integration time:
-
Permalink:
ThomasRohde/ecm-studio@259ec23e3169bf1d4038cc008336a79a066719a8 -
Branch / Tag:
refs/tags/v0.3.3 - Owner: https://github.com/ThomasRohde
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@259ec23e3169bf1d4038cc008336a79a066719a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ecm_studio-0.3.3-py3-none-any.whl.
File metadata
- Download URL: ecm_studio-0.3.3-py3-none-any.whl
- Upload date:
- Size: 836.3 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 |
a65763c660b40a22854e4384b56390a60078232fc02edfe4c0245af70ae24c98
|
|
| MD5 |
a46c8512db806afa64e96161ec990f3c
|
|
| BLAKE2b-256 |
83c8e2be35e815f46c787414d466d9e6ca41d3ce8a4aacf72612ff408ae3f863
|
Provenance
The following attestation bundles were made for ecm_studio-0.3.3-py3-none-any.whl:
Publisher:
publish.yml on ThomasRohde/ecm-studio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ecm_studio-0.3.3-py3-none-any.whl -
Subject digest:
a65763c660b40a22854e4384b56390a60078232fc02edfe4c0245af70ae24c98 - Sigstore transparency entry: 1391457646
- Sigstore integration time:
-
Permalink:
ThomasRohde/ecm-studio@259ec23e3169bf1d4038cc008336a79a066719a8 -
Branch / Tag:
refs/tags/v0.3.3 - Owner: https://github.com/ThomasRohde
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@259ec23e3169bf1d4038cc008336a79a066719a8 -
Trigger Event:
push
-
Statement type: