finos / finos/architecture-as-code

Unify CALM authoring and visualisation tooling (Hub, VS Code, Studio)

Open
#3,036 2 comments 0 reactions 1 assignee Claimed by @byrash View on GitHub
calm-hub calm-hub-ui calm-studio Roadmap Group: CALM Tools Roadmap: Now vscode
Dominant language
TypeScript
Stars
399
Forks
138
Avg merge
2d 6h
Merged PRs (30d)
38

Description

## Feature Proposal

> [!IMPORTANT]
> **This issue supersedes #2600 (Consolidate the CALM platform) and #2857 (CalmStudio roadmap H2 2026).** Both are closed in favour of this one. The direction agreed on 2026-07-28 ([#2857 comment](https://github.com/finos/architecture-as-code/issues/2857#issuecomment-5103561004), [WG 2026-07-28](https://github.com/finos/architecture-as-code/issues/2904)) is the starting point here, not the desktop-Studio target state in #2600.

### Target Project:

Cross-cutting: `calm-hub`, `calm-hub-ui`, `calm-plugins/vscode`, `calm-widgets`, `shared`, `calm-models`, `calm-studio`. Led by @byrash, with @jpgough-ms and @initcron contributing.

### Description of Feature:

Unify the CALM authoring and visualisation tooling onto one stack:

| Layer | Target |
|---|---|
| Visualisation | One React Flow visualisation package, used by CALM Hub UI and the VS Code extension |
| Layout | One layout model (`x, y, w, h` per node), persisted identically by Hub and VS Code |
| Editing | Hub gains a studio mode (edit node/relationship properties, save through the Hub API); VS Code extension edits the same documents |
| Backend | CALM Hub API decoupled from Hub UI; OIDC and Git/SCM backing stores |
| CalmStudio | Useful pieces (node packs, palette, validation panel, nested containers) move into Hub; the SvelteKit app retires at parity |

Enterprises that must stay read-only get Hub in standalone mode; studio mode is opt-in.

### User Stories:

- As an architect, I want the same diagram in Hub and VS Code so that a layout I save in one renders identically in the other.
- As an architect, I want to edit an architecture visually in Hub or VS Code so that I do not need a third tool.
- As a platform owner, I want one visualisation stack so that a rendering fix is made in one place.
- As an enterprise admin, I want Hub to run read-only so that governed content cannot be edited in place.

### Current Limitations:

- Three renderers (Hub UI, VS Code extension, CalmStudio) with divergent layout formats.
- CalmStudio duplicates validation, MCP, and node packs the platform already owns.
- Hub UI and Hub API are coupled; Hub has no edit surface.

### Proposed Implementation:

Tracked as sub-issues of this issue. Existing issues are attached as-is; new ones are opened as phases start.

| Phase | Scope | Issue |
|---|---|---|
| 1 | VS Code extension on React Flow, with editing | #2869 |
| 1 | Layout persistence parity Hub ↔ VS Code | #2953 |
| 1 | Controls at interface level | #2868 |
| 1 | SVG import in VS Code | #3025 |
| 2 | Extract shared React Flow visualisation package | _new_ |
| 2 | Hub API independent of Hub UI | #2943 |
| 2 | Multi-IDP developer experience | #2944 |
| 2 | OIDC + Git/SCM backing store | #2867, PR #3001 |
| 3 | Studio mode MVP in Hub | _new_ |
| 3 | Modes design note (standalone vs studio) | _new_ |
| 4 | Migrate node packs, palette, validation panel, nested containers from CalmStudio | _new_ |
| 4 | Retire the SvelteKit app | _new_ |

Disposition of the #2600 track issues:

| Issue | Disposition |
|---|---|
| #2649 Track A structural cleanup | Stays open; still valid |
| #2650 Track B capability convergence | Stays open; validator/MCP convergence still applies |
| #2651 Track C Studio as desktop editor | Close; superseded by phases 3–4 |
| #2652 Track D docs consolidation | Stays open |
| #2690 RFC shared semantics layer | Folds into the phase 2 visualisation package |

### Testing Strategy:

Per sub-issue. The shared visualisation package needs a render-parity test between Hub UI and the VS Code extension.

### Documentation Requirements:

- Hub docs: standalone vs studio mode.
- VS Code extension docs (PR #2937 in flight).
- Migration note for CalmStudio users at retirement.

### Implementation Checklist:

- [ ] Design reviewed and approved
- [ ] Implementation completed
- [ ] Tests written and passing
- [ ] Documentation updated
- [ ] Relevant workflows updated (if needed)
- [ ] Performance impact assessed

### Additional Context:

The static render path (`calm-widgets`, docs embed, SVG export) stays separate from the interactive React Flow canvas: one set of view semantics, two render targets. Views (#2344) are the common contract.

The #2857 thread proposed @jpgough-ms as lead. I would like input from the other maintainers here on whether @byrash leads overall with Jim owning the Hub pieces, or the reverse.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.