Aller au contenu
Table des matières

ComfyUI-UML : Le rendu de diagrammes dans un graphe de nœuds

ComfyUI-UML ajoute des nœuds de diagrammes à ComfyUI. Le texte entre dans un workflow, un moteur le convertit en image et le workflow peut conserver la source ainsi que les liens du visualiseur.

Intégration
  • Mis à jour
  • 3
  • Python · 50.91%
Composants documentés
2Explorer les modules
Documents source
3Lire les instructions
Langages du dépôtPython 50.91%3

Parts calculées à partir des octets GitHub Linguist.

Python50.91%
50.91%130 995 octets
JavaScript45.75%
45.75%117 710 octets
HTML3.34%
3.34%8 584 octets
Langage%Octets
Python50.91%130 995
JavaScript45.75%117 710
HTML3.34%8 584

1. Aperçu

1.1. Pourquoi il existe

Nœuds personnalisés pour ComfyUI intégrant la synthèse de diagrammes dans les pipelines d'IA générative.

1.2. Cas d’usage

Pipelines IA visuels associant schémas d'architecture et post-traitement graphique.

2. Cas d’utilisation

Nœuds ComfyUI qui rendent des diagrammes Mermaid, PlantUML, Graphviz et autres types Kroki, au besoin à partir de code LLM.

Diagramme de cas d’utilisation de ComfyUI-UML : Rendre un diagramme; Rendre Mermaid hors ligne; Générer le code avec un LLM; Prévisualiser et partager; Enregistrer dans ComfyUIComfyUI-UMLRendre un diagrammeRendre Mermaid hors ligneGénérer le code avec un LLMPrévisualiser et partagerEnregistrer dans ComfyUIUtilisateur ComfyUI«système»API Kroki«système»Fournisseur de LLM
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
Rendre un diagramme
Utilisateur ComfyUIAPI Kroki

Le nœud UML Render (nodes/uml_diagram.py) envoie le code à Kroki via nodes/kroki_client.py et renvoie du png, svg, jpeg, pdf, txt ou base64, selon les formats permis pour chaque type.

Rendre Mermaid hors ligne
Utilisateur ComfyUI

Avec le backend local, web/js/render_mermaid.mjs utilise beautiful-mermaid (après npm ci dans web/js) pour produire du SVG ou du PNG ; Graphviz se rend en local si le paquet graphviz est installé.

Générer le code avec un LLM
Utilisateur ComfyUIFournisseur de LLM

UML Code Assistant (nodes/uml_llm.py), ou LLM Prompt Engine suivi de LLM Call, remplit un gabarit de prompts/ et appelle Ollama, OpenAI, Anthropic ou Gemini ; le résultat alimente UML Render.

Prévisualiser et partager
Utilisateur ComfyUIAPI Kroki

Diagram Viewer URL (nodes/uml_viewer_url.py) transforme kroki_url en lien de visualiseur et en lien iframe (viewer.html?embed=1) et affiche un aperçu dans le nœud.

Enregistrer dans ComfyUI
Utilisateur ComfyUI

Le bouton Save du visualiseur envoie une requête à /comfyui-uml/save, déclarée avec les autres routes dans nodes/uml_routes.py.

2.1. Scénario : Tracer un diagramme de séquence à partir d’un prompt avec Ollama en local

  1. Lancer comfy node install comfyui-uml (ou cloner dans ComfyUI/custom_nodes et faire pip install -r requirements.txt), puis redémarrer ComfyUI.
  2. Charger workflows/uml_llm_ollama.json dans le canevas ComfyUI.
  3. Décrire le diagramme dans UML Code Assistant, avec le fournisseur ollama et un modèle local.
  4. Lancer la file ; UML Render envoie le code généré à Kroki et produit l’image.
  5. Ouvrir le lien de Diagram Viewer URL pour zoomer, copier le lien ou enregistrer le diagramme dans ComfyUI.

Fichiers consultésREADME.mdnodes/__init__.pynodes/uml_diagram.pynodes/kroki_client.pynodes/uml_llm.pynodes/uml_llm_call.pynodes/uml_viewer_url.pynodes/uml_routes.pyworkflows/uml_llm_ollama.json

3. Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

README.md · Installation
comfy node install comfyui-uml
Commandes déclarées dans les manifestes

4. Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

4.1. Installation

README.md

From Comfy Registry (recommended): Manual:

  1. Clone or copy this folder into ComfyUI/custom_nodes/.
  2. Install dependencies: pip install -r requirements.txt or uv sync.
  3. Optional — Local Mermaid (backend = local): install Node.js (LTS), then from this folder run cd web/js && npm ci (or npm install) so beautiful-mermaid is available for web/js/render_mermaid.mjs. PNG preview for SVG in the node: pip install cairosvg. Dynamic widget visibility: pip install comfy-dynamic-widgets (or extras from pyproject.toml).
Lire les instructions complètes ↗

4.2. Getting started

CONTRIBUTORS.md

  1. Clone the repository and open it in your editor.
  2. Install dev dependencies (pick one):
  • uv sync –extra dev (recommended if you use uv)
  • pip install -e “.[dev]”
  1. Run tests: uv run pytest or pytest (from the repo root).
  2. Lint/format: uv run ruff check . and uv run ruff format ., or install pre-commit and run pre-commit install. See docs/Testing.md for CI (pytest, comfy-test) and mock LLM behavior.
Lire les instructions complètes ↗
Configuration et utilisation

4.3. Usage

README.md

Add the UML Render (Mermaid/PlantUML/etc) node (category: UML). Choose backend (web/local), diagram_type, enter code, and set output_format (png, svg, jpeg, pdf, txt, base64 — validated per type). Optional diagram_options JSON for Kroki. Full usage, outputs, viewer, and LLM workflow: docs/Usage.md. Diagram type × format table: docs/KrokiFormats.md.
Lire les instructions complètes ↗
Exploitation et dépannage

4.4. Updating

README.md

After updating (Manager, git pull, or manual), restart ComfyUI so nodes and web assets load. Other nodes failing to update are independent; retry that node and restart.
Lire les instructions complètes ↗

4.5. Dependency updates

CONTRIBUTORS.md

  • Dependabot opens PRs for Python (pyproject.toml / lockfile where applicable), npm under web/js, and GitHub Actions.
  • Renovate is enabled with a dependency dashboard and focuses on updates that do not overlap Dependabot (for example, grouped Action bumps). If two bots open the same update, close one and keep the preferred PR.
Lire les instructions complètes ↗
Développement et contributions

4.6. Testing

README.md

CI runs pytest, Ruff, and npm ci in web/js (.github/workflows/pytest.yml), plus comfy-test on push/PR to main / master. Locally: uv sync –extra dev, then uv run pytest, uv run ruff check ., and optionally cd web/js && npm ci. See docs/Testing.md for details, comfy-test.toml, and AGENTS.md for agent/contributor workflow (including headless pytest notes).
Lire les instructions complètes ↗

4.7. Development

README.md

To run linting and formatting on commit (JSON and Python):

  1. Install dev dependencies: pip install -e “.[dev]” or uv sync –extra dev.
  2. Install pre-commit hooks: pre-commit install. Pre-commit will format JSON (key order preserved) and run Ruff (lint + format) on Python. To run on all files: pre-commit run –all-files.
Lire les instructions complètes ↗

4.8. Contributing

README.md

See CONTRIBUTORS.md for dev setup, tests, and dependency automation (Dependabot / Renovate). For AI assistants and deeper change workflow (ordered checklist, Context7 for libraries), see AGENTS.md.
Lire les instructions complètes ↗

4.9. Contributing to ComfyUI-UML

CONTRIBUTORS.md

Thanks for helping improve ComfyUI-UML.
Lire les instructions complètes ↗
Documentation source

3 documents lus parmi 3 candidats.

5. Fonctions et composants 2

Enregistrement du module
Le fichier __init__.py charge le paquet nodes sous le nom unique comfyui_uml_nodes pour éviter un conflit avec le module nodes de ComfyUI. Il expose les correspondances de classes et le dossier web de l’extension.
Rendu et visualiseur
Le dossier nodes sépare la génération de diagrammes, les échanges Kroki et les liens du visualiseur. WEB_DIRECTORY expose les ressources du navigateur et l’enregistrement des routes permet de sauvegarder depuis le visualiseur. Le rendu local et Kroki constituent des moteurs distincts.

6. Architecture

Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de ComfyUI-UML
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR

subgraph group_workflow["ComfyUI Workflow"]
  node_workflow_nodes["ComfyUI Nodes<br/>[__init__.py]"]
  node_render_node["UML Render<br/>[uml_diagram.py]"]
  node_viewer_url_node["Diagram Viewer URL<br/>[uml_viewer_url.py]"]
  node_diagram_result["Diagram Result"]
end

subgraph group_rendering["Diagram Rendering"]
  node_diagram_defaults["Diagram Defaults<br/>[default_code.py]"]
  node_render_client["Render Backends<br/>[kroki_client.py]"]
  node_local_mermaid["Local Mermaid<br/>[render_mermaid.mjs]"]
end

subgraph group_generation["LLM Generation"]
  node_prompt_engine["Prompt Engine"]
  node_llm_call["LLM Call<br/>[uml_llm_call.py]"]
  node_code_assistant["LLM Code Assistant<br/>[uml_llm.py]"]
  node_llm_shared["LLM Providers<br/>[uml_llm_shared.py]"]
  node_prompt_templates["Prompt Templates"]
end

subgraph group_viewer["Viewer Experience"]
  node_frontend_extension["ComfyUI Extension<br/>[ComfyUI-UML.js]"]
  node_viewer_shell["Viewer Shell<br/>[viewer_shell.mjs]"]
  node_url_utils["Viewer URL Utilities<br/>[viewerUrlUtils.mjs]"]
  node_view_registry["View Registry<br/>[view_manifest.js]"]
  node_format_views["Format Views"]
end

node_user(("ComfyUI User"))
node_kroki["Kroki API"]

node_user -->|"configures"| node_workflow_nodes
node_workflow_nodes -->|"runs"| node_render_node
node_prompt_engine -->|"supplies prompt"| node_llm_call
node_llm_call -->|"calls provider"| node_llm_shared
node_code_assistant -->|"calls provider"| node_llm_shared
node_prompt_engine -->|"loads templates"| node_llm_shared
node_prompt_engine -.->|"loads presets"| node_prompt_templates
node_code_assistant -.->|"loads presets"| node_prompt_templates
node_code_assistant -->|"provides diagram code"| node_render_node
node_render_node -->|"uses defaults"| node_diagram_defaults
node_render_node -->|"requests rendering"| node_render_client
node_render_client -->|"posts diagram"| node_kroki
node_render_client -->|"runs local renderer"| node_local_mermaid
node_render_node -.->|"returns output"| node_diagram_result
node_render_node -->|"provides Kroki URL"| node_viewer_url_node
node_viewer_url_node -->|"opens preview"| node_frontend_extension
node_render_node -->|"opens viewer"| node_frontend_extension
node_frontend_extension -->|"builds viewer query"| node_url_utils
node_frontend_extension -.->|"opens viewer"| node_viewer_shell
node_viewer_shell -->|"infers format"| node_url_utils
node_viewer_shell -->|"selects view"| node_view_registry
node_view_registry -->|"loads format view"| node_format_views
node_viewer_shell -.->|"fetches diagram"| node_diagram_result


class node_workflow_nodes,node_render_node,node_viewer_url_node,node_diagram_result,node_user toneBlue
class node_diagram_defaults,node_render_client,node_local_mermaid toneAmber
class node_prompt_engine,node_llm_call,node_code_assistant,node_llm_shared,node_prompt_templates,node_kroki toneMint
class node_frontend_extension,node_viewer_shell,node_url_utils,node_view_registry,node_format_views toneRose

Des nœuds ComfyUI qui créent une source de diagramme, effectuent le rendu avec Kroki ou des moteurs locaux, puis exposent les images, fichiers et liens de visualisation. Des nœuds de modèle de langage peuvent générer la source en amont.

Composants
19
Connexions
23
Liens appuyés par le code
18/23
Version texte du diagramme
  • Texte du diagramme → Nœud ComfyUI enregistré
  • Nœud ComfyUI enregistré → Moteur local
  • Nœud ComfyUI enregistré → Service Kroki
  • Moteur local → Image et liens du visualiseur
  • Service Kroki → Image et liens du visualiseur
Suivre un parcours dans le code

Partez de NODE_CLASS_MAPPINGS, puis suivez un nœud vers son moteur de rendu. Le chargeur utilise une spécification de module explicite, car ComfyUI peut importer l’extension directement depuis un chemin de fichier.

7. Dossier technique

Établi à partir du code au commit 1f14115 (49 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.

7.1. Couches et modules

Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.

Mermaid Vue en couches
flowchart TB
  subgraph L_presentation["Présentation"]
    direction TB
    presentation_0["web/views<br/>8 fichiers"]
    presentation_1["web<br/>5 fichiers"]
    presentation_2["web/js<br/>3 fichiers"]
  end
  subgraph L_interface["Points d’entrée et API"]
    direction TB
    interface_0["nodes<br/>1 fichier"]
  end
  subgraph L_application["Services applicatifs"]
    direction TB
    application_0["nodes<br/>1 fichier"]
    application_1["scripts<br/>1 fichier"]
  end
  subgraph L_infrastructure["Données et infrastructure"]
    direction TB
    infrastructure_0["nodes<br/>1 fichier"]
  end
  subgraph L_core["Source principale"]
    direction TB
    core_0["nodes<br/>7 fichiers"]
    core_1["(root)<br/>3 fichiers"]
  end
  subgraph L_tests["Tests"]
    direction TB
    tests_0["tests<br/>5 fichiers"]
    tests_1["(root)<br/>1 fichier"]
    tests_2["web<br/>1 fichier"]
  end
  subgraph L_hosting["Build, CI et hébergement"]
    direction TB
    hosting_0[".github<br/>10 fichiers"]
  end
  L_presentation ~~~ L_interface
  L_interface ~~~ L_application
  L_application ~~~ L_infrastructure
  L_infrastructure ~~~ L_core
  L_core ~~~ L_tests
  L_core ~~~ L_hosting
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
nodesSource principale106.py
web/viewsPrésentation80.mjs .js
webPrésentation50.html .mjs .js
(root)Source principale30.py
web/jsPrésentation30.mjs .js
scriptsServices applicatifs12.py

7.2. Modèle C4

Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.

UML 1 · Contexte du système
1 · Contexte du système

La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System(SYS, "ComfyUI-UML", "ComfyUI-UML ajoute des nœuds de diagrammes à ComfyUI")
System_Ext(E0, "Kroki")
System_Ext(E1, "Anthropic API")
System_Ext(E2, "Google Cloud / Firebase")
System_Ext(E3, "Ollama")
System_Ext(E4, "OpenAI API")
Rel(P_cli, SYS, "Utilise")
Rel(SYS, E0, "Appelle")
Rel(SYS, E1, "Appelle")
Rel(SYS, E2, "Appelle")
Rel(SYS, E3, "Appelle")
Rel(SYS, E4, "Appelle")
@enduml
UML 2 · Conteneurs
2 · Conteneurs

Un niveau plus près : les parties qui s’exécutent séparément dans le projet, leur langage principal et le chemin des appels entre elles. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System_Boundary(SYS, "ComfyUI-UML") {
  Container(APP, "ComfyUI-UML", "TypeScript")
}
System_Ext(E0, "Kroki")
System_Ext(E1, "Anthropic API")
System_Ext(E2, "Google Cloud / Firebase")
System_Ext(E3, "Ollama")
System_Ext(E4, "OpenAI API")
Rel(P_cli, APP, "Utilise")
Rel(APP, E0, "Appelle")
Rel(APP, E1, "Appelle")
Rel(APP, E2, "Appelle")
Rel(APP, E3, "Appelle")
Rel(APP, E4, "Appelle")
@enduml
UML 3 · Composants et couches
3 · Composants et couches

Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "ComfyUI-UML") {
Boundary(L0, "Présentation", "layer") {
Component(M0_0, "web/js", "TypeScript, .mjs, JavaScript", "61 fichiers")
Component(M0_1, "web/views", ".mjs, JavaScript", "8 fichiers")
Component(M0_2, "web", "HTML, .mjs, JavaScript", "5 fichiers")
}
Boundary(L1, "Points d’entrée et API", "layer") {
Component(M1_0, "nodes", "Python", "1 fichiers")
}
Boundary(L2, "Services applicatifs", "layer") {
Component(M2_0, "nodes", "Python", "1 fichiers")
Component(M2_1, "scripts", "Python", "1 fichiers")
}
Boundary(L3, "Domaine et règles métier", "layer") {
Component(M3_0, "web/js", "TypeScript, JavaScript", "15 fichiers")
}
Boundary(L4, "Données et infrastructure", "layer") {
Component(M4_0, "nodes", "Python", "1 fichiers")
}
Boundary(L5, "Source principale", "layer") {
Component(M5_0, "nodes", "Python", "7 fichiers")
Component(M5_1, "(root)", "Python", "3 fichiers")
}
Boundary(L6, "Tests", "layer") {
Component(M6_0, "web", "TypeScript, .mjs", "23 fichiers")
Component(M6_1, "tests", "Python", "5 fichiers")
Component(M6_2, "(root)", "Python", "1 fichiers")
}
Boundary(L7, "Build, CI et hébergement", "layer") {
Component(M7_0, ".github", ".yml, .md", "10 fichiers")
}
}
@enduml
UML 4 · Code
4 · Code

Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "ComfyUI-UML" {
package "nodes/uml_llm_call.py" as F0 {
class "LLMCall" as T0_0 {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
}
package "nodes/uml_viewer_url.py" as F1 {
class "UMLViewerURL" as T1_0 {
  INPUT_TYPES()
  run()
}
}
}
@enduml

7.3. Flux de données

Les appels du diagramme GitDiagram, dans l’ordre où on les rencontre depuis les points d’entrée. GitDiagram produit ce graphe par IA; les chemins de fichiers cités ont été comparés à l’arbre du dépôt.

Mermaid Diagramme de séquence
sequenceDiagram
  autonumber
  participant P0 as Prompt Engine
  participant P1 as LLM Call
  participant P2 as LLM Providers
  participant P3 as Prompt Templates
  participant P4 as LLM Code Assistant
  participant P5 as UML Render
  participant P6 as ComfyUI User
  participant P7 as ComfyUI Nodes
  participant P8 as Diagram Defaults
  participant P9 as Render Backends
  participant P10 as Diagram Result
  participant P11 as Diagram Viewer URL
  participant P12 as ComfyUI Extension
  participant P13 as Kroki API
  participant P14 as Local Mermaid
  P0->>P1: supplies prompt
  P0->>P2: loads templates
  P0--)P3: loads presets
  P4->>P2: calls provider
  P4--)P3: loads presets
  P4->>P5: provides diagram code
  P6->>P7: configures
  P1->>P2: calls provider
  P5->>P8: uses defaults
  P5->>P9: requests rendering
  P5--)P10: returns output
  P5->>P11: provides Kroki URL
  P5->>P12: opens viewer
  P7->>P5: runs
  P9->>P13: posts diagram
  P9->>P14: runs local renderer
Étapes en texte
  1. Prompt Engine vers LLM Call supplies prompt
  2. Prompt Engine vers LLM Providers loads templates
  3. Prompt Engine vers Prompt Templates loads presets
  4. LLM Code Assistant vers LLM Providers calls provider
  5. LLM Code Assistant vers Prompt Templates loads presets
  6. LLM Code Assistant vers UML Render provides diagram code
  7. ComfyUI User vers ComfyUI Nodes configures
  8. LLM Call vers LLM Providers calls provider
  9. UML Render vers Diagram Defaults uses defaults
  10. UML Render vers Render Backends requests rendering
  11. UML Render vers Diagram Result returns output
  12. UML Render vers Diagram Viewer URL provides Kroki URL
  13. UML Render vers ComfyUI Extension opens viewer
  14. ComfyUI Nodes vers UML Render runs
  15. Render Backends vers Kroki API posts diagram
  16. Render Backends vers Local Mermaid runs local renderer
  17. Diagram Viewer URL vers ComfyUI Extension opens preview
  18. ComfyUI Extension vers Viewer URL Utilities builds viewer query
  19. ComfyUI Extension vers Viewer Shell opens viewer
  20. Viewer Shell vers Viewer URL Utilities infers format
  21. Viewer Shell vers View Registry selects view
  22. Viewer Shell vers Diagram Result fetches diagram
  23. View Registry vers Format Views loads format view

7.4. Interface publique

Du code extérieur peut utiliser tout ce qui est listé ici. Le projet déclare aussi 8 types publics.

UML Cas d’utilisation
Cas d’utilisation

Chaque acteur est un type d’appelant, relié à ce qu’il peut demander au projet. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
left to right direction
actor "Utilisateur CLI" as A_cli
rectangle "ComfyUI-UML" {
  usecase "Commande generate" as U0
  usecase "Commande normalize" as U1
  usecase "Commande sync-formats" as U2
}
A_cli --> U0
A_cli --> U1
A_cli --> U2
@enduml

Ligne de commande 5

Exports du paquet (__all__)

NODE_CLASS_MAPPINGS NODE_DISPLAY_NAME_MAPPINGS WEB_DIRECTORY LLMCall LLMPromptEngine UMLLLMCodeGenerator UMLDiagram UMLViewerURL

7.5. Interface privée

Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).

Assistant préfixé _
63

7.6. Services

7.7. Logique métier

Une fois écartés le code d’interface et les services et entités ci-dessus, ces classes ont le plus de méthodes.

LLMCall Source principale, 3 méthodes
INPUT_TYPES, VALIDATE_INPUTS, run
UMLViewerURL Source principale, 2 méthodes
INPUT_TYPES, run

7.8. Base de données et persistance

7.9. Intégrations externes

Clients HTTP

requests httpx aiohttp fetch

Hôtes nommés dans le code

7.10. Stack et dépendances

Python pyproject.toml 2 à l’exécution, 6 dev

Python >=3.12

Ouvrir le manifeste

Python requirements.txt 2 à l’exécution

Ouvrir le manifeste

Node.js web/js/package.json 2 à l’exécution

Ouvrir le manifeste

Dépendances externes

9 paquets déclarés (3 à l’exécution, 6 pour le développement) dans pyproject.toml, requirements.txt, web/js/package.json.

Tableau des paquets 9
Dépendances externes
PaquetVersionUsageRôleRegistre
kroki>=0.1.6exécutionAccess kroki from pythonpypi.org
cairosvg>=2.7développementA Simple SVG Converter based on Cairopypi.org
comfy-dynamic-widgets>=0.1.6développement—pypi.org
pre-commit>=3.6.0développementAnalyse et formatagepypi.org
pytest>=7.0développementTestspypi.org
pytest-asyncio>=0.21développementTestspypi.org
ruff>=0.8.0développementAnalyse et formatagepypi.org
beautiful-mermaid^1.0.0exécutionRender Mermaid diagrams as beautiful SVGs or ASCII art. Ultra-fast, fully themeable, zero DOM dependencies.npmjs.com
simple-chromium-ai^0.2.1exécutionSimple type-safe wrapper for Chrome's AI Prompt API - trades flexibility for ease of usenpmjs.com

7.11. Pipeline CI/CD

7 workflows GitHub Actions, 7 tâches. Chaque boîte est une tâche ; les boîtes à double bord publient ou déploient, et les flèches suivent les dépendances needs.

Mermaid Déroulement du pipeline
flowchart LR
  subgraph wf0["Act — comfy-test (Linux CPU)"]
    direction LR
    wf0_linux_test["linux-test (act)<br/>ubuntu-latest"]
  end
  subgraph wf1["CodeQL"]
    direction LR
    wf1_analyze["Analyze<br/>ubuntu-latest"]
  end
  subgraph wf2["Dependency review"]
    direction LR
    wf2_dependency_review["Dependency review<br/>ubuntu-latest"]
  end
  subgraph wf3["Publish to Comfy registry"]
    direction LR
    wf3_publish_node[["Publish Custom Node to registry<br/>ubuntu-latest"]]
  end
  subgraph wf4["Pytest"]
    direction LR
    wf4_pytest["pytest<br/>ubuntu-latest"]
  end
  subgraph wf5["Stale"]
    direction LR
    wf5_stale["Mark stale issues and PRs<br/>ubuntu-latest"]
  end
  t0(["lancement manuel"])
  t1(["push · demande de fusion"])
  t2(["demande de fusion"])
  t3(["lancement manuel · push"])
  t4(["demande de fusion · push · lancement manuel"])
  t5(["planification · lancement manuel"])
  t0 --> wf0_linux_test
  t1 --> wf1_analyze
  t2 --> wf2_dependency_review
  t3 --> wf3_publish_node
  t4 --> wf4_pytest
  t5 --> wf5_stale
Workflows, déclencheurs, tâches et cibles
WorkflowDéclencheursTâchesPublie vers
Act — comfy-test (Linux CPU)
.github/workflows/act-comfy-test-linux.yml
lancement manuel
  • linux-test (act) ubuntu-latest
    Free disk space · actions/setup-python · ComfyUI requirements fingerprint · actions/cache · Create venv and install uv · Clone ComfyUI
—
CodeQL
.github/workflows/codeql.yml
push, demande de fusion
  • Analyze ubuntu-latest
    Checkout repository · Initialize CodeQL · Set up uv · Install project + dev deps for analysis · Perform CodeQL Analysis
—
Dependency review
.github/workflows/dependency-review.yml
demande de fusion
  • Dependency review ubuntu-latest
    Checkout · Dependency Review
—
Publish to Comfy registry
.github/workflows/publish-node.yml
lancement manuel, push
  • Publish Custom Node to registry ubuntu-latest
    Check out code · Publish Custom Node
—
Pytest
.github/workflows/pytest.yml
demande de fusion, push, lancement manuel
  • pytest ubuntu-latest
    actions/checkout · Install uv · Sync dev environment · Ruff check · Run pytest · Set up Node
—
Stale
.github/workflows/stale.yml
planification, lancement manuel
  • Mark stale issues and PRs ubuntu-latest
    Stale
—
Workflow Tests
.github/workflows/workflow-tests.yml
demande de fusion, push
  • test
—

7.12. Déploiement

Mermaid Schéma de déploiement
flowchart LR
  repo[("Dépôt GitHub")]
  ci[["GitHub Actions<br/>7 workflows"]]
  pub_Container_registry[("Registre de conteneurs")]
  repo -->|"push ou demande de fusion"| ci
  ci -->|"publie"| pub_Container_registry

Où il s’exécute

Publié vers

7.13. Supervision

Ce que le code consigne, mesure et expose pour savoir s’il fonctionne.

7.14. Sécurité

Contrôles

Chaîne d’approvisionnement

Variables d’environnement 8

La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.

BEAUTIFUL_MERMAID_ASCII_USE_ASCII BEAUTIFUL_MERMAID_THEME COMFYUI_UML_SKIP_COMFY_ENV BEAUTIFUL_MERMAID_OUTPUT COMFYUI_UML_PYTEST COMFY_UI_UML_MOCK_LLM GITHUB_ACTIONS OLLAMA_BASE_URL

7.15. Tests automatisés

Fichiers de test
7
Fichiers source
30
Cas de test, environ
49
Tests unitaires
7

Aucun rapport chiffré de couverture dans les sources analysées.

Où sont les tests

tests 5 . 1 web/tests 1

Intégration continue

Pytest
pytest, ruff
CodeQL
codeql
UML Pipeline CI
Pipeline CI

Le workflow GitHub Actions principal suit ces étapes. Les tâches lancées en parallèle sont côte à côte. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
title Pytest
start
partition "pytest" {
  :actions/checkout;
  :Install uv;
  :Sync dev environment;
  :Ruff check;
  :Run pytest;
  :Set up Node;
  :npm ci (web/js local Mermaid);
}
stop
@enduml

Rien trouvé pour: Entités.

8. Types et structure des fichiers

11 types déclarés, dont 11 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class tb654476aede8["KrokiError"] {
}
class t50d2adfa6e30["UMLDiagram"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tf5d8a3add21d["UMLLLMCodeGenerator"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class t54e8aa4c2ef3["LLMCall"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tad1d573d8063["LLMPromptEngine"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tf971647cbde8["UMLViewerURL"] {
  INPUT_TYPES()
  run()
}
class t12ed9326b7d8["Args"] {
}
class t00114166eb81["Args"] {
}
class tc2da0bee5d97["Obj"] {
}
class t0087e40115b2["Obj"] {
}
class ta16414e60e88["Obj"] {
  __str__()
}
class b60d1d89f176e["Exception"] {
  <<unresolved_base>>
}
b60d1d89f176e <|-- tb654476aede8

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

9. Référence

39 / 39 fichiers admissibles lus (330 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

11. Fichiers à lire 3

12. Glossaire

Dépôt

Les fichiers source, la configuration et l’historique versionné d’un projet.

README

Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.

Dépendance

Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.

HTTP

Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.

Port publié

Un port de l’hôte associé au port d’un service dans un conteneur. Sa publication peut rendre le service accessible hors du réseau des conteneurs.

Interface en ligne de commande

Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.

Compilation

Les étapes qui transforment les sources et dépendances en programme exécutable ou en livrable distribuable.

Intégration continue

Des vérifications automatiques lors des changements de source, comme la compilation, les tests et l’analyse statique. Elles ne couvrent que ce qu’elles vérifient.

Mermaid

Un langage de diagrammes textuel. Les nœuds et liens décrivent un modèle ; le diagramme n’exécute pas le projet.

GPU

Un processeur conçu pour les calculs parallèles, dont le rendu graphique et de nombreuses opérations numériques.

Backend

Une implémentation derrière une interface commune. Selon le contexte, il peut s’agir d’un service côté serveur ou d’une implémentation graphique, d’entrée ou de stockage.

13. Références

  1. antoinebou12. (2026, 5 novembre). ComfyUI-UML. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). ComfyUI-UML: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). __init__.py. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). nodes/uml_diagram.py. [Source file] github.com.
  5. antoinebou12. (2026, 5 novembre). nodes/kroki_client.py. [Source file] github.com.
  6. Boucher, A. (2026, 20 octobre). ComfyUI-UML : des diagrammes sous forme de nœuds et d’images. [Project article] antoineboucher.info.
  7. Boucher, A. (2026, 23 octobre). ComfyUI-UML : Le rendu de diagrammes dans un graphe de nœuds. [Project article] antoineboucher.info.

Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.