# acly/krita-ai-diffusion architecture

> Architecture diagram of the GitHub repository acly/krita-ai-diffusion, 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/acly/krita-ai-diffusion
- Repository: https://github.com/acly/krita-ai-diffusion

## Overview

This is a Krita plugin for controlled AI image generation and editing. The main workflow starts in Krita’s plugin UI, prepares generation inputs from the document and its layers, queues a job, sends it through a local ComfyUI or cloud connection, and applies returned images to the document. The graph also preserves documented capabilities such as live painting, upscaling, regions, control inputs, styles, and custom workflows. Some links rely on the README and module boundaries because those implementations were not sampled.

Main entry points: [`ai_diffusion/model/model.py`](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py) (Document model), [`ai_diffusion/model/connection.py`](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/connection.py) (Connection manager), [`ai_diffusion/backend/comfy_client.py`](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/comfy_client.py) (Local client), [`ai_diffusion/backend/cloud_client.py`](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/cloud_client.py) (Cloud client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_krita["Krita integration"]
  node_extension["Plugin entry<br/>[extension.py]"]
  node_ui["Generation UI<br/>[generation.py]"]
  node_settings_ui["Connection settings<br/>[settings.py]"]
end

subgraph group_model["Document and jobs"]
  node_document_model["Document model<br/>[model.py]"]
  node_layers["Krita layers<br/>[layer.py]"]
  node_job_queue["Job queue<br/>[jobs.py]"]
  node_image["Image utilities<br/>[image.py]"]
end

subgraph group_backend["Generation backends"]
  node_connection["Connection manager<br/>[connection.py]"]
  node_workflow["Workflow builder<br/>[workflow.py]"]
  node_local_client["Local client<br/>[comfy_client.py]"]
  node_cloud_client["Cloud client<br/>[cloud_client.py]"]
  node_server_manager["Server manager<br/>[server.py]"]
end

subgraph group_features["Generation features"]
  node_regions["Regions and controls<br/>[region.py]"]
  node_live["Live painting<br/>[model.py]"]
  node_upscale["Upscaling<br/>[model.py]"]
  node_styles["Styles and presets<br/>[style.py]"]
  node_custom_workflows["Custom workflows<br/>[custom_workflow.py]"]
end

node_artist(("Artist"))
node_krita_app["Krita"]
node_comfyui["ComfyUI"]
node_cloud_service["Cloud service"]

node_artist -->|"edits in"| node_krita_app
node_krita_app -->|"loads plugin"| node_extension
node_artist -->|"uses"| node_ui
node_ui -->|"requests generation"| node_document_model
node_document_model -->|"reads and writes"| node_layers
node_document_model -->|"uses inputs"| node_regions
node_document_model -->|"prepares workflow"| node_workflow
node_document_model -->|"adds jobs"| node_job_queue
node_job_queue -->|"dispatches jobs"| node_connection
node_connection -->|"selects client"| node_local_client
node_connection -.->|"selects client"| node_cloud_client
node_local_client -->|"submits workflow"| node_comfyui
node_comfyui -->|"returns results"| node_local_client
node_cloud_client -.->|"submits jobs"| node_cloud_service
node_cloud_service -.->|"returns results"| node_cloud_client
node_settings_ui -->|"configures and starts"| node_server_manager
node_server_manager -->|"installs and runs"| node_comfyui
node_connection -->|"manages local server"| node_server_manager
node_connection -->|"reports events"| node_document_model
node_document_model -->|"applies results"| node_layers
node_document_model -->|"processes images"| node_image
node_live -->|"enqueues frames"| node_document_model
node_upscale -->|"enqueues upscale"| node_document_model
node_regions -->|"supplies controls"| node_workflow
node_styles -->|"configures generation"| node_document_model
node_custom_workflows -->|"generates custom jobs"| node_document_model

click node_extension "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/extension.py"
click node_ui "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/ui/generation.py"
click node_settings_ui "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/ui/settings.py"
click node_document_model "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py"
click node_layers "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/layer.py"
click node_job_queue "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/jobs.py"
click node_connection "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/connection.py"
click node_workflow "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/workflow.py"
click node_local_client "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/comfy_client.py"
click node_cloud_client "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/cloud_client.py"
click node_server_manager "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/server.py"
click node_regions "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/region.py"
click node_live "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py"
click node_upscale "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py"
click node_styles "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/style.py"
click node_custom_workflows "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/custom_workflow.py"
click node_image "https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/image.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_extension,node_ui,node_settings_ui,node_comfyui toneBlue
class node_document_model,node_layers,node_job_queue,node_image toneAmber
class node_connection,node_workflow,node_local_client,node_cloud_client,node_server_manager toneMint
class node_regions,node_live,node_upscale,node_styles,node_custom_workflows toneRose
class node_artist,node_krita_app,node_cloud_service toneIndigo
```

## Components

### Krita integration

- [Plugin entry](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/extension.py): `ai_diffusion/extension.py`
- [Generation UI](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/ui/generation.py): `ai_diffusion/ui/generation.py`
- [Connection settings](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/ui/settings.py): `ai_diffusion/ui/settings.py`

### Document and jobs

- [Document model](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py): `ai_diffusion/model/model.py`
- [Krita layers](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/layer.py): `ai_diffusion/layer.py`
- [Job queue](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/jobs.py): `ai_diffusion/model/jobs.py`
- [Image utilities](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/image.py): `ai_diffusion/image.py`

### Generation backends

- [Connection manager](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/connection.py): `ai_diffusion/model/connection.py`
- [Workflow builder](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/workflow.py): `ai_diffusion/backend/workflow.py`
- [Local client](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/comfy_client.py): `ai_diffusion/backend/comfy_client.py`
- [Cloud client](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/cloud_client.py): `ai_diffusion/backend/cloud_client.py`
- [Server manager](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/backend/server.py): `ai_diffusion/backend/server.py`

### Generation features

- [Regions and controls](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/region.py): `ai_diffusion/model/region.py`
- [Live painting](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py): `ai_diffusion/model/model.py`
- [Upscaling](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/model.py): `ai_diffusion/model/model.py`
- [Styles and presets](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/style.py): `ai_diffusion/style.py`
- [Custom workflows](https://github.com/acly/krita-ai-diffusion/blob/main/ai_diffusion/model/custom_workflow.py): `ai_diffusion/model/custom_workflow.py`

### Other components

- **Artist**
- **Krita**
- **ComfyUI**
- **Cloud service**

## Connections

- Artist → Krita: edits in
- Krita → Plugin entry: loads plugin
- Artist → Generation UI: uses
- Generation UI → Document model: requests generation
- Document model → Krita layers: reads and writes
- Document model → Regions and controls: uses inputs
- Document model → Workflow builder: prepares workflow
- Document model → Job queue: adds jobs
- Job queue → Connection manager: dispatches jobs
- Connection manager → Local client: selects client
- Connection manager → Cloud client: selects client
- Local client → ComfyUI: submits workflow
- ComfyUI → Local client: returns results
- Cloud client → Cloud service: submits jobs
- Cloud service → Cloud client: returns results
- Connection settings → Server manager: configures and starts
- Server manager → ComfyUI: installs and runs
- Connection manager → Server manager: manages local server
- Connection manager → Document model: reports events
- Document model → Krita layers: applies results
- Document model → Image utilities: processes images
- Live painting → Document model: enqueues frames
- Upscaling → Document model: enqueues upscale
- Regions and controls → Workflow builder: supplies controls
- Styles and presets → Document model: configures generation
- Custom workflows → Document model: generates custom jobs
