# zenineasa/konjugate architecture

> Architecture diagram of the GitHub repository zenineasa/konjugate, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zenineasa/konjugate
- Repository: https://github.com/zenineasa/konjugate

## Overview

Konjugate is a graph-native engineering simulation application. Users compose component-and-relationship models, validate them, then run simulations and explore or export results. CSV-based causal inference can propose model structure, while parameter fitting calibrates models against measured data. The application also supports FMU exchange, programmable relationship providers, add-ons, and AI-assisted authoring. The graph reflects documented capabilities and sampled browser-engine wiring; several desktop and feature-specific implementation links are left out where source excerpts do not establish their call paths.

Main entry points: [`src/renderer/webShims/engine.mjs`](https://github.com/zenineasa/konjugate/blob/master/src/renderer/webShims/engine.mjs) (Engine API), [`engine/src/main.cpp`](https://github.com/zenineasa/konjugate/blob/master/engine/src/main.cpp) (Engine command entry), [`src/renderer/renderer.mjs`](https://github.com/zenineasa/konjugate/blob/master/src/renderer/renderer.mjs) (Model editor), [`src/resultSession.mjs`](https://github.com/zenineasa/konjugate/blob/master/src/resultSession.mjs) (Result sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Model authoring"]
  node_renderer["Model editor<br/>[renderer.mjs]"]
  node_document["Document state"]
  node_project["Project files<br/>[projectFile.mjs]"]
end

subgraph group_analysis["Analysis and results"]
  node_csv["CSV data<br/>[csvImport.mjs]"]
  node_causal["Causal inference"]
  node_fitting["Parameter fitting"]
  node_results["Result sessions<br/>[resultSession.mjs]"]
  node_plot["Result plots<br/>[resultPlot.mjs]"]
  node_resultexport["Result export<br/>[resultExport.mjs]"]
end

subgraph group_engine["Simulation engine"]
  node_engineapi["Engine API<br/>[engine.mjs]"]
  node_webadapter["Web engine adapter"]
  node_liveshim["Live-run shim"]
  node_liveworker["Live-run worker"]
  node_enginecore["Engine command entry<br/>[main.cpp]"]
  node_simulation["Simulation runner"]
  node_validation["Model validation<br/>[modelValidator.cpp]"]
  node_protocol["Engine protocol<br/>[engineProtocol.mjs]"]
end

subgraph group_integrations["Integrations"]
  node_fmi["FMU exchange<br/>[fmiExport.mjs]"]
  node_provider["Relationship providers"]
  node_addons["Add-ons<br/>[pluginResolver.mjs]"]
  node_ai["AI authoring"]
end

node_engineer(("Engineer"))

node_engineer -->|"authors model"| node_renderer
node_renderer -->|"records edits"| node_document
node_renderer -->|"loads and saves"| node_project
node_renderer -->|"requests operations"| node_engineapi
node_csv -->|"supplies time series"| node_causal
node_engineapi -->|"calls operations"| node_webadapter
node_engineapi -->|"controls live runs"| node_liveshim
node_webadapter -->|"invokes WASM"| node_enginecore
node_liveshim -->|"dispatches live run"| node_liveworker
node_liveworker -->|"invokes WASM"| node_enginecore
node_liveworker -->|"decodes events"| node_protocol
node_enginecore -->|"dispatches validation"| node_validation
node_enginecore -->|"dispatches inference"| node_causal
node_enginecore -->|"dispatches fitting"| node_fitting
node_enginecore -->|"dispatches simulation"| node_simulation
node_engineapi -.->|"resolves add-ons"| node_addons
node_engineapi -.->|"resolves FMUs"| node_fmi
node_simulation -.->|"uses providers"| node_provider
node_engineapi -->|"projects results"| node_results
node_results -->|"supplies plot data"| node_plot
node_results -->|"supplies exports"| node_resultexport
node_renderer -.->|"requests assistance"| node_ai

click node_renderer "https://github.com/zenineasa/konjugate/blob/master/src/renderer/renderer.mjs"
click node_document "https://github.com/zenineasa/konjugate/blob/master/src/renderer/documentController.mjs"
click node_project "https://github.com/zenineasa/konjugate/blob/master/src/projectFile.mjs"
click node_csv "https://github.com/zenineasa/konjugate/blob/master/src/csvImport.mjs"
click node_engineapi "https://github.com/zenineasa/konjugate/blob/master/src/renderer/webShims/engine.mjs"
click node_webadapter "https://github.com/zenineasa/konjugate/blob/master/src/webEngineAdapter.mjs"
click node_liveshim "https://github.com/zenineasa/konjugate/blob/master/src/webEngineLiveShim.mjs"
click node_liveworker "https://github.com/zenineasa/konjugate/blob/master/src/webEngineLiveRunWorker.mjs"
click node_enginecore "https://github.com/zenineasa/konjugate/blob/master/engine/src/main.cpp"
click node_simulation "https://github.com/zenineasa/konjugate/blob/master/engine/src/simulationRunner.cpp"
click node_validation "https://github.com/zenineasa/konjugate/blob/master/engine/src/modelValidator.cpp"
click node_causal "https://github.com/zenineasa/konjugate/blob/master/engine/src/causalInference.cpp"
click node_fitting "https://github.com/zenineasa/konjugate/blob/master/engine/src/parameterFitting.cpp"
click node_results "https://github.com/zenineasa/konjugate/blob/master/src/resultSession.mjs"
click node_plot "https://github.com/zenineasa/konjugate/blob/master/src/renderer/resultPlot.mjs"
click node_resultexport "https://github.com/zenineasa/konjugate/blob/master/src/resultExport.mjs"
click node_fmi "https://github.com/zenineasa/konjugate/blob/master/src/fmiExport.mjs"
click node_provider "https://github.com/zenineasa/konjugate/blob/master/engine/src/providerRuntime.cpp"
click node_addons "https://github.com/zenineasa/konjugate/blob/master/src/pluginResolver.mjs"
click node_ai "https://github.com/zenineasa/konjugate/blob/master/src/assistantOperations.mjs"
click node_protocol "https://github.com/zenineasa/konjugate/blob/master/src/engineProtocol.mjs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_renderer,node_document,node_project toneBlue
class node_csv,node_causal,node_fitting,node_results,node_plot,node_resultexport toneAmber
class node_engineapi,node_webadapter,node_liveshim,node_liveworker,node_enginecore,node_simulation,node_validation,node_protocol toneMint
class node_fmi,node_provider,node_addons,node_ai toneRose
class node_engineer toneIndigo
```

## Components

### Model authoring

- [Model editor](https://github.com/zenineasa/konjugate/blob/master/src/renderer/renderer.mjs): `src/renderer/renderer.mjs`
- [Document state](https://github.com/zenineasa/konjugate/blob/master/src/renderer/documentController.mjs): `src/renderer/documentController.mjs`
- [Project files](https://github.com/zenineasa/konjugate/blob/master/src/projectFile.mjs): `src/projectFile.mjs`

### Analysis and results

- [CSV data](https://github.com/zenineasa/konjugate/blob/master/src/csvImport.mjs): `src/csvImport.mjs`
- [Causal inference](https://github.com/zenineasa/konjugate/blob/master/engine/src/causalInference.cpp): `engine/src/causalInference.cpp`
- [Parameter fitting](https://github.com/zenineasa/konjugate/blob/master/engine/src/parameterFitting.cpp): `engine/src/parameterFitting.cpp`
- [Result sessions](https://github.com/zenineasa/konjugate/blob/master/src/resultSession.mjs): `src/resultSession.mjs`
- [Result plots](https://github.com/zenineasa/konjugate/blob/master/src/renderer/resultPlot.mjs): `src/renderer/resultPlot.mjs`
- [Result export](https://github.com/zenineasa/konjugate/blob/master/src/resultExport.mjs): `src/resultExport.mjs`

### Simulation engine

- [Engine API](https://github.com/zenineasa/konjugate/blob/master/src/renderer/webShims/engine.mjs): `src/renderer/webShims/engine.mjs`
- [Web engine adapter](https://github.com/zenineasa/konjugate/blob/master/src/webEngineAdapter.mjs): `src/webEngineAdapter.mjs`
- [Live-run shim](https://github.com/zenineasa/konjugate/blob/master/src/webEngineLiveShim.mjs): `src/webEngineLiveShim.mjs`
- [Live-run worker](https://github.com/zenineasa/konjugate/blob/master/src/webEngineLiveRunWorker.mjs): `src/webEngineLiveRunWorker.mjs`
- [Engine command entry](https://github.com/zenineasa/konjugate/blob/master/engine/src/main.cpp): `engine/src/main.cpp`
- [Simulation runner](https://github.com/zenineasa/konjugate/blob/master/engine/src/simulationRunner.cpp): `engine/src/simulationRunner.cpp`
- [Model validation](https://github.com/zenineasa/konjugate/blob/master/engine/src/modelValidator.cpp): `engine/src/modelValidator.cpp`
- [Engine protocol](https://github.com/zenineasa/konjugate/blob/master/src/engineProtocol.mjs): `src/engineProtocol.mjs`

### Integrations

- [FMU exchange](https://github.com/zenineasa/konjugate/blob/master/src/fmiExport.mjs): `src/fmiExport.mjs`
- [Relationship providers](https://github.com/zenineasa/konjugate/blob/master/engine/src/providerRuntime.cpp): `engine/src/providerRuntime.cpp`
- [Add-ons](https://github.com/zenineasa/konjugate/blob/master/src/pluginResolver.mjs): `src/pluginResolver.mjs`
- [AI authoring](https://github.com/zenineasa/konjugate/blob/master/src/assistantOperations.mjs): `src/assistantOperations.mjs`

### Other components

- **Engineer**

## Connections

- Engineer → Model editor: authors model
- Model editor → Document state: records edits
- Model editor → Project files: loads and saves
- Model editor → Engine API: requests operations
- CSV data → Causal inference: supplies time series
- Engine API → Web engine adapter: calls operations
- Engine API → Live-run shim: controls live runs
- Web engine adapter → Engine command entry: invokes WASM
- Live-run shim → Live-run worker: dispatches live run
- Live-run worker → Engine command entry: invokes WASM
- Live-run worker → Engine protocol: decodes events
- Engine command entry → Model validation: dispatches validation
- Engine command entry → Causal inference: dispatches inference
- Engine command entry → Parameter fitting: dispatches fitting
- Engine command entry → Simulation runner: dispatches simulation
- Engine API → Add-ons: resolves add-ons
- Engine API → FMU exchange: resolves FMUs
- Simulation runner → Relationship providers: uses providers
- Engine API → Result sessions: projects results
- Result sessions → Result plots: supplies plot data
- Result sessions → Result export: supplies exports
- Model editor → AI authoring: requests assistance
