# mrunclejhay/open-generative-ai architecture

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

- Interactive diagram: https://gitdiagram.com/mrunclejhay/open-generative-ai
- Repository: https://github.com/mrunclejhay/open-generative-ai

## Overview

Open Generative AI is a multi-studio generative-media application, delivered through a hosted web interface and an Electron desktop app. The principal workflow is choosing a studio and model, supplying a prompt or media inputs, submitting a generation, then viewing or downloading the resulting media. The README also documents agent, workflow, clipping, motion, marketing, audio, and MCP/CLI capabilities. Sampled proxy routes establish MuAPI and upload flows; unsampled UI-to-route wiring is not shown as a specific call. Desktop local inference is represented separately.

Main entry points: [`packages/studio/src/components`](https://github.com/mrunclejhay/open-generative-ai/tree/main/packages/studio/src/components) (Studio interface), [`electron/main.js`](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/main.js) (Desktop shell), [`electron/preload.js`](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/preload.js) (IPC bridge), [`electron/lib/localInference.js`](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/localInference.js) (sd.cpp provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_studios["Creative studios"]
  node_web["Web app"]
  node_studio["Studio interface"]
  node_image["Image studio<br/>[ImageStudio.jsx]"]
  node_video["Video studio<br/>[VideoStudio.jsx]"]
  node_audio["Audio studio<br/>[AudioStudio.jsx]"]
  node_cinema["Cinema studio<br/>[CinemaStudio.jsx]"]
  node_lipsync["Lip sync studio<br/>[LipSyncStudio.jsx]"]
  node_workflow["Workflow studio<br/>[WorkflowStudio.jsx]"]
  node_agents["Agent studio<br/>[AgentStudio.jsx]"]
  node_otherstudios["Other studios"]
end

subgraph group_services["Generation services"]
  node_models["Model catalog<br/>[models.js]"]
  node_lifecycle["Generation lifecycle"]
  node_muapi["MuAPI routes<br/>[route.js]"]
  node_workflowapi["Workflow routes<br/>[route.js]"]
  node_agentapi["Agent routes<br/>[route.js]"]
  node_uploadapi["Upload routes<br/>[route.js]"]
end

subgraph group_desktop["Desktop inference"]
  node_desktopapp["Desktop shell<br/>[main.js]"]
  node_preload["IPC bridge<br/>[preload.js]"]
  node_localclient["Local inference client"]
  node_localmanager["Local model manager"]
  node_localinference["sd.cpp provider<br/>[localInference.js]"]
  node_wanprovider["Wan2GP provider<br/>[wan2gpProvider.js]"]
  node_localruntime["Local runtime"]
end

subgraph group_integration["External integrations"]
  node_muapiservice{{"MuAPI service"}}
  node_s3[("S3 storage")]
  node_wanservice{{"Wan2GP server"}}
end

node_user(("Creator"))

node_user -->|"opens studios"| node_web
node_web -->|"renders"| node_studio
node_studio -->|"offers"| node_image
node_studio -->|"offers"| node_video
node_studio -->|"offers"| node_audio
node_studio -->|"offers"| node_cinema
node_studio -->|"offers"| node_lipsync
node_studio -->|"offers"| node_workflow
node_studio -->|"offers"| node_agents
node_studio -->|"offers"| node_otherstudios
node_models -->|"provides models"| node_video
node_lifecycle -->|"tracks jobs"| node_video
node_muapi -->|"proxies requests"| node_muapiservice
node_workflowapi -->|"proxies requests"| node_muapiservice
node_agentapi -->|"proxies requests"| node_muapiservice
node_uploadapi -->|"forwards uploads"| node_s3
node_user -->|"uses desktop"| node_desktopapp
node_desktopapp -->|"loads bridge"| node_preload
node_desktopapp -->|"registers handlers"| node_localinference
node_desktopapp -->|"registers handlers"| node_wanprovider
node_localmanager -->|"manages models"| node_localclient
node_localclient -->|"sends IPC"| node_preload
node_preload -->|"dispatches IPC"| node_localinference
node_localinference -->|"runs inference"| node_localruntime
node_preload -->|"dispatches IPC"| node_wanprovider
node_wanprovider -.->|"calls server"| node_wanservice

click node_web "https://github.com/mrunclejhay/open-generative-ai/tree/main/app"
click node_studio "https://github.com/mrunclejhay/open-generative-ai/tree/main/packages/studio/src/components"
click node_image "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/ImageStudio.jsx"
click node_video "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/VideoStudio.jsx"
click node_audio "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/AudioStudio.jsx"
click node_cinema "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/CinemaStudio.jsx"
click node_lipsync "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/LipSyncStudio.jsx"
click node_workflow "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/WorkflowStudio.jsx"
click node_agents "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/AgentStudio.jsx"
click node_otherstudios "https://github.com/mrunclejhay/open-generative-ai/tree/main/packages/studio/src/components"
click node_models "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/models.js"
click node_lifecycle "https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/utils/generationLifecycle.js"
click node_muapi "https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/app/%5B%5B...path%5D%5D/route.js"
click node_workflowapi "https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/workflow/%5B%5B...path%5D%5D/route.js"
click node_agentapi "https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/agents/%5B%5B...path%5D%5D/route.js"
click node_uploadapi "https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/upload-binary/route.js"
click node_desktopapp "https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/main.js"
click node_preload "https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/preload.js"
click node_localclient "https://github.com/mrunclejhay/open-generative-ai/blob/main/src/lib/localInferenceClient.js"
click node_localmanager "https://github.com/mrunclejhay/open-generative-ai/blob/main/src/components/LocalModelManager.js"
click node_localinference "https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/localInference.js"
click node_wanprovider "https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/wan2gpProvider.js"
click node_localruntime "https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/localInferenceRuntime.js"

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_web,node_studio,node_image,node_video,node_audio,node_cinema,node_lipsync,node_workflow,node_agents,node_otherstudios toneBlue
class node_models,node_lifecycle,node_muapi,node_workflowapi,node_agentapi,node_uploadapi toneAmber
class node_desktopapp,node_preload,node_localclient,node_localmanager,node_localinference,node_wanprovider,node_localruntime toneMint
class node_muapiservice,node_s3,node_wanservice toneRose
class node_user toneIndigo
```

## Components

### Creative studios

- [Web app](https://github.com/mrunclejhay/open-generative-ai/tree/main/app): `app`
- [Studio interface](https://github.com/mrunclejhay/open-generative-ai/tree/main/packages/studio/src/components): `packages/studio/src/components`
- [Image studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/ImageStudio.jsx): `packages/studio/src/components/ImageStudio.jsx`
- [Video studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/VideoStudio.jsx): `packages/studio/src/components/VideoStudio.jsx`
- [Audio studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/AudioStudio.jsx): `packages/studio/src/components/AudioStudio.jsx`
- [Cinema studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/CinemaStudio.jsx): `packages/studio/src/components/CinemaStudio.jsx`
- [Lip sync studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/LipSyncStudio.jsx): `packages/studio/src/components/LipSyncStudio.jsx`
- [Workflow studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/WorkflowStudio.jsx): `packages/studio/src/components/WorkflowStudio.jsx`
- [Agent studio](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/components/AgentStudio.jsx): `packages/studio/src/components/AgentStudio.jsx`
- [Other studios](https://github.com/mrunclejhay/open-generative-ai/tree/main/packages/studio/src/components): `packages/studio/src/components`

### Generation services

- [Model catalog](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/models.js): `packages/studio/src/models.js`
- [Generation lifecycle](https://github.com/mrunclejhay/open-generative-ai/blob/main/packages/studio/src/utils/generationLifecycle.js): `packages/studio/src/utils/generationLifecycle.js`
- [MuAPI routes](https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/app/%5B%5B...path%5D%5D/route.js): `app/api/app/[[...path]]/route.js`
- [Workflow routes](https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/workflow/%5B%5B...path%5D%5D/route.js): `app/api/workflow/[[...path]]/route.js`
- [Agent routes](https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/agents/%5B%5B...path%5D%5D/route.js): `app/api/agents/[[...path]]/route.js`
- [Upload routes](https://github.com/mrunclejhay/open-generative-ai/blob/main/app/api/upload-binary/route.js): `app/api/upload-binary/route.js`

### Desktop inference

- [Desktop shell](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/main.js): `electron/main.js`
- [IPC bridge](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/preload.js): `electron/preload.js`
- [Local inference client](https://github.com/mrunclejhay/open-generative-ai/blob/main/src/lib/localInferenceClient.js): `src/lib/localInferenceClient.js`
- [Local model manager](https://github.com/mrunclejhay/open-generative-ai/blob/main/src/components/LocalModelManager.js): `src/components/LocalModelManager.js`
- [sd.cpp provider](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/localInference.js): `electron/lib/localInference.js`
- [Wan2GP provider](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/wan2gpProvider.js): `electron/lib/wan2gpProvider.js`
- [Local runtime](https://github.com/mrunclejhay/open-generative-ai/blob/main/electron/lib/localInferenceRuntime.js): `electron/lib/localInferenceRuntime.js`

### External integrations

- **MuAPI service**
- **S3 storage**
- **Wan2GP server**

### Other components

- **Creator**

## Connections

- Creator → Web app: opens studios
- Web app → Studio interface: renders
- Studio interface → Image studio: offers
- Studio interface → Video studio: offers
- Studio interface → Audio studio: offers
- Studio interface → Cinema studio: offers
- Studio interface → Lip sync studio: offers
- Studio interface → Workflow studio: offers
- Studio interface → Agent studio: offers
- Studio interface → Other studios: offers
- Model catalog → Video studio: provides models
- Generation lifecycle → Video studio: tracks jobs
- MuAPI routes → MuAPI service: proxies requests
- Workflow routes → MuAPI service: proxies requests
- Agent routes → MuAPI service: proxies requests
- Upload routes → S3 storage: forwards uploads
- Creator → Desktop shell: uses desktop
- Desktop shell → IPC bridge: loads bridge
- Desktop shell → sd.cpp provider: registers handlers
- Desktop shell → Wan2GP provider: registers handlers
- Local model manager → Local inference client: manages models
- Local inference client → IPC bridge: sends IPC
- IPC bridge → sd.cpp provider: dispatches IPC
- sd.cpp provider → Local runtime: runs inference
- IPC bridge → Wan2GP provider: dispatches IPC
- Wan2GP provider → Wan2GP server: calls server
