# n3odym3/pipeline_creator architecture

> Architecture diagram of the GitHub repository n3odym3/pipeline_creator, 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/n3odym3/pipeline_creator
- Repository: https://github.com/n3odym3/pipeline_creator

## Overview

Pipeline Creator is a desktop node-based toolkit for assembling and operating modular Python applications, especially for instrument control and scientific processing. The main workflow is to discover modules, arrange and connect them in the visual editor, save or load a JSON workspace, then run modules and present their outputs in windows. Supporting capabilities include background execution, decoupled Link Bus messaging, startup automation, tutorials, window docking, role-based access, and theme customization. The README documents these capabilities; sampled excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`main.py`](https://github.com/n3odym3/pipeline_creator/blob/main/main.py) (Application Startup), [`core/node_editor.py`](https://github.com/n3odym3/pipeline_creator/blob/main/core/node_editor.py) (Node Editor), [`core/window_base.py`](https://github.com/n3odym3/pipeline_creator/blob/main/core/window_base.py) (Module Window Base), [`core/module_registry.py`](https://github.com/n3odym3/pipeline_creator/blob/main/core/module_registry.py) (Module Discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_main["Application Startup<br/>[main.py]"]
  node_state["User Role State<br/>[app_state.py]"]
  node_login["Login Dialog<br/>[login_dialog.py]"]
  node_config["Configuration<br/>[config_manager.py]"]
  node_health["Module Health"]
end

subgraph group_author["Pipeline Authoring"]
  node_editor["Node Editor<br/>[node_editor.py]"]
  node_registry["Module Discovery<br/>[module_registry.py]"]
  node_module_admin["Module Install / Remove<br/>[module_manager.py]"]
  node_pipeline_editor["Pipeline Editor<br/>[pipeline_editor.py]"]
  node_serialization["Node Serialization"]
end

subgraph group_runtime["Execution"]
  node_module_base["Module Window Base<br/>[window_base.py]"]
  node_processing["Processing Base<br/>[processing_base.py]"]
  node_viewport["Viewport Process Base"]
  node_callbacks["Node Callbacks<br/>[node_callbacks.py]"]
  node_link_bus["Link Bus<br/>[link_bus.py]"]
  node_automation["Startup Automation"]
  node_basic_modules["Example Modules<br/>[Hello_world_win.py]"]
end

subgraph group_operator["Operator Experience"]
  node_tutorial["Interactive Tutorials"]
  node_fusion["Window Docking<br/>[fusion_manager.py]"]
  node_themes["Theme Manager<br/>[theme_manager.py]"]
  node_theme_ui["Theme Editor"]
end

node_user(("User / Designer"))
node_external_process(("Background Process"))

node_user -->|"launches"| node_main
node_main -->|"reads settings"| node_config
node_main -.->|"opens optionally"| node_login
node_login -->|"sets role"| node_state
node_main -->|"sets default role"| node_state
node_main -->|"checks modules"| node_health
node_main -->|"loads workspace"| node_registry
node_main -->|"parses startup script"| node_automation
node_user -->|"arranges modules"| node_editor
node_editor -->|"discovers modules"| node_registry
node_user -->|"manages modules"| node_module_admin
node_module_admin -->|"updates module set"| node_registry
node_user -->|"edits workspace"| node_pipeline_editor
node_pipeline_editor -->|"edits JSON layout"| node_serialization
node_editor -->|"saves and loads"| node_serialization
node_registry -->|"loads modules"| node_basic_modules
node_editor -->|"dispatches node actions"| node_callbacks
node_callbacks -->|"invokes module behavior"| node_module_base
node_module_base -.->|"uses processing base"| node_processing
node_module_base -.->|"uses viewport base"| node_viewport
node_processing -.->|"runs work in process"| node_external_process
node_viewport -.->|"runs viewport process"| node_external_process
node_module_base -.->|"routes messages"| node_link_bus
node_automation -.->|"automates pipeline"| node_editor
node_user -->|"follows guide"| node_tutorial
node_user -->|"organizes windows"| node_fusion
node_user -->|"edits appearance"| node_theme_ui
node_theme_ui -->|"updates palette"| node_themes

click node_main "https://github.com/n3odym3/pipeline_creator/blob/main/main.py"
click node_state "https://github.com/n3odym3/pipeline_creator/blob/main/core/app_state.py"
click node_login "https://github.com/n3odym3/pipeline_creator/blob/main/core/login_dialog.py"
click node_config "https://github.com/n3odym3/pipeline_creator/blob/main/core/config_manager.py"
click node_health "https://github.com/n3odym3/pipeline_creator/blob/main/core/module_health_manager.py"
click node_editor "https://github.com/n3odym3/pipeline_creator/blob/main/core/node_editor.py"
click node_registry "https://github.com/n3odym3/pipeline_creator/blob/main/core/module_registry.py"
click node_module_admin "https://github.com/n3odym3/pipeline_creator/blob/main/core/module_manager.py"
click node_pipeline_editor "https://github.com/n3odym3/pipeline_creator/blob/main/core/pipeline_editor.py"
click node_serialization "https://github.com/n3odym3/pipeline_creator/blob/main/core/node_serialization.py"
click node_module_base "https://github.com/n3odym3/pipeline_creator/blob/main/core/window_base.py"
click node_processing "https://github.com/n3odym3/pipeline_creator/blob/main/core/processing_base.py"
click node_viewport "https://github.com/n3odym3/pipeline_creator/blob/main/core/viewport_process_base.py"
click node_callbacks "https://github.com/n3odym3/pipeline_creator/blob/main/core/node_callbacks.py"
click node_link_bus "https://github.com/n3odym3/pipeline_creator/blob/main/core/link_bus.py"
click node_automation "https://github.com/n3odym3/pipeline_creator/blob/main/core/automation_manager.py"
click node_tutorial "https://github.com/n3odym3/pipeline_creator/blob/main/core/tutorial_manager.py"
click node_fusion "https://github.com/n3odym3/pipeline_creator/blob/main/core/fusion_manager.py"
click node_themes "https://github.com/n3odym3/pipeline_creator/blob/main/config/theme_manager.py"
click node_theme_ui "https://github.com/n3odym3/pipeline_creator/blob/main/config/theme_manager_win.py"
click node_basic_modules "https://github.com/n3odym3/pipeline_creator/blob/main/modules/Basic/Hello_world_win.py"

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_main,node_state,node_login,node_config,node_health,node_user toneBlue
class node_editor,node_registry,node_module_admin,node_pipeline_editor,node_serialization toneAmber
class node_module_base,node_processing,node_viewport,node_callbacks,node_link_bus,node_automation,node_basic_modules toneMint
class node_tutorial,node_fusion,node_themes,node_theme_ui,node_external_process toneRose
```

## Components

### Application

- [Application Startup](https://github.com/n3odym3/pipeline_creator/blob/main/main.py): `main.py`
- [User Role State](https://github.com/n3odym3/pipeline_creator/blob/main/core/app_state.py): `core/app_state.py`
- [Login Dialog](https://github.com/n3odym3/pipeline_creator/blob/main/core/login_dialog.py): `core/login_dialog.py`
- [Configuration](https://github.com/n3odym3/pipeline_creator/blob/main/core/config_manager.py): `core/config_manager.py`
- [Module Health](https://github.com/n3odym3/pipeline_creator/blob/main/core/module_health_manager.py): `core/module_health_manager.py`

### Pipeline Authoring

- [Node Editor](https://github.com/n3odym3/pipeline_creator/blob/main/core/node_editor.py): `core/node_editor.py`
- [Module Discovery](https://github.com/n3odym3/pipeline_creator/blob/main/core/module_registry.py): `core/module_registry.py`
- [Module Install / Remove](https://github.com/n3odym3/pipeline_creator/blob/main/core/module_manager.py): `core/module_manager.py`
- [Pipeline Editor](https://github.com/n3odym3/pipeline_creator/blob/main/core/pipeline_editor.py): `core/pipeline_editor.py`
- [Node Serialization](https://github.com/n3odym3/pipeline_creator/blob/main/core/node_serialization.py): `core/node_serialization.py`

### Execution

- [Module Window Base](https://github.com/n3odym3/pipeline_creator/blob/main/core/window_base.py): `core/window_base.py`
- [Processing Base](https://github.com/n3odym3/pipeline_creator/blob/main/core/processing_base.py): `core/processing_base.py`
- [Viewport Process Base](https://github.com/n3odym3/pipeline_creator/blob/main/core/viewport_process_base.py): `core/viewport_process_base.py`
- [Node Callbacks](https://github.com/n3odym3/pipeline_creator/blob/main/core/node_callbacks.py): `core/node_callbacks.py`
- [Link Bus](https://github.com/n3odym3/pipeline_creator/blob/main/core/link_bus.py): `core/link_bus.py`
- [Startup Automation](https://github.com/n3odym3/pipeline_creator/blob/main/core/automation_manager.py): `core/automation_manager.py`
- [Example Modules](https://github.com/n3odym3/pipeline_creator/blob/main/modules/Basic/Hello_world_win.py): `modules/Basic/Hello_world_win.py`

### Operator Experience

- [Interactive Tutorials](https://github.com/n3odym3/pipeline_creator/blob/main/core/tutorial_manager.py): `core/tutorial_manager.py`
- [Window Docking](https://github.com/n3odym3/pipeline_creator/blob/main/core/fusion_manager.py): `core/fusion_manager.py`
- [Theme Manager](https://github.com/n3odym3/pipeline_creator/blob/main/config/theme_manager.py): `config/theme_manager.py`
- [Theme Editor](https://github.com/n3odym3/pipeline_creator/blob/main/config/theme_manager_win.py): `config/theme_manager_win.py`

### Other components

- **User / Designer**
- **Background Process**

## Connections

- User / Designer → Application Startup: launches
- Application Startup → Configuration: reads settings
- Application Startup → Login Dialog: opens optionally
- Login Dialog → User Role State: sets role
- Application Startup → User Role State: sets default role
- Application Startup → Module Health: checks modules
- Application Startup → Module Discovery: loads workspace
- Application Startup → Startup Automation: parses startup script
- User / Designer → Node Editor: arranges modules
- Node Editor → Module Discovery: discovers modules
- User / Designer → Module Install / Remove: manages modules
- Module Install / Remove → Module Discovery: updates module set
- User / Designer → Pipeline Editor: edits workspace
- Pipeline Editor → Node Serialization: edits JSON layout
- Node Editor → Node Serialization: saves and loads
- Module Discovery → Example Modules: loads modules
- Node Editor → Node Callbacks: dispatches node actions
- Node Callbacks → Module Window Base: invokes module behavior
- Module Window Base → Processing Base: uses processing base
- Module Window Base → Viewport Process Base: uses viewport base
- Processing Base → Background Process: runs work in process
- Viewport Process Base → Background Process: runs viewport process
- Module Window Base → Link Bus: routes messages
- Startup Automation → Node Editor: automates pipeline
- User / Designer → Interactive Tutorials: follows guide
- User / Designer → Window Docking: organizes windows
- User / Designer → Theme Editor: edits appearance
- Theme Editor → Theme Manager: updates palette
