ComfyUI Node

ComfyDoctor Report

The node that tells you why your ComfyUI got slow and weird

By Kurdknight·Created 2 years ago·Updated about a month ago· 7
ComfyDoctor Report
    • report
    • health
    formatsummary

    ComfyUI runs every custom node in one shared Python environment. There's no isolation - node A pins transformers==4.30, node B wants >=4.40, and pip resolves it however pip resolves it. Add a node whose requirements.txt pulls plain torch from PyPI over your CUDA build, and nothing errors at startup. Renders are just 20-50× slower, forever, with no obvious cause. The r/comfyui ecosystem thread on this is real: "Feels like I am downloading models and installing missing nodes 90% of the time."

    ComfyDoctor Report is the graph-facing tip of a bigger tool (the ComfyDoctor pack, by Kurdknight) that scans your environment for exactly those silent failures. Instead of guessing, it reads your installed packages' metadata, cross-checks them against each other, and hands you a written report plus a 0-100 health score right inside your workflow.

    What it actually does

    The node runs a full scan on every execution - IS_CHANGED returns NaN, so ComfyUI never serves a cached result even if your environment changes mid-session in another window. Findings are grouped by severity and cover the stuff that bites in practice: CPU-only PyTorch on an NVIDIA machine, mismatched torch/torchvision/torchaudio builds (the operator torchvision::nms does not exist family), xformers/flash-attn compiled against a different PyTorch, both onnxruntime variants installed, multiple OpenCVs fighting over cv2, numpy 2.x against numpy-1-built packages, and custom nodes that failed to import - with the why cross-referenced.

    The clever part is how it checks. It reads .dist-info metadata via importlib.metadata and queries nvidia-smi; it does not import your packages. That matters because importing an attention backend built against a mismatched PyTorch doesn't raise a clean error - it aborts the whole process. The one package it must probe directly, torch, gets probed in an isolated subprocess so a crashing CUDA/driver pairing is reported rather than fatal.

    The inputs and outputs

    One input, format, which is honestly the whole control surface:

    • summary (default) - the full report, problems and all
    • markdown - a report ready to paste into a GitHub issue or Discord
    • problems_only - just the problems, no healthy-package noise

    Two outputs:

    • report (STRING) - the text. Wire it into a text-overlay node, or save it beside a batch render so every output image carries the environment state that produced it.
    • health (INT) - a 0-100 score. Handy for gating logic: below some threshold, stop and fix before rendering.

    Installing it

    Via ComfyUI Manager, search ComfyDoctor and hit Install. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Kurdknight/Kurdknight_comfycheck
    

    Then restart ComfyUI. The dependency list is refreshingly small - just psutil and packaging, both of which ComfyUI already installs. The pack is deliberately careful here: a tool that diagnoses dependency conflicts refuses to be a source of one, so it does not declare torch in requirements.txt at all.

    When things go wrong

    The node's natural blind spot is its worst case: if a broken PyTorch stops ComfyUI from booting, no node can load. ComfyDoctor handles that with a standalone CLI that shares the same engine - run doctor.py from the pack folder (or double-click comfydoctor.bat on Windows) and it finds your real Python interpreter and prints the diagnosis. Exit codes are 0 clean, 1 warnings, 2 errors, so you can gate a launch script on it. One more gotcha: fixing via the sidebar panel runs only server-generated commands with shell=False, and one repair at a time - two concurrent pip processes writing the same site-packages is how a recoverable environment becomes an unrecoverable one. If your old workflows reference the earlier SystemCheck/SystemViz nodes, they still load - those names alias onto this one.

    Is it a must-install? If you run five or more custom nodes, yes - this is the difference between "my GPU got slow" and a finding that names the offending package and offers a one-click fix.

    Categoryutils/ComfyDoctor

    Inputs (1)

    NameTypeDefaultDescription
    formatCOMBOsummary3 options: summary, markdown, problems_only

    Outputs (2)

    NameTypeDescription
    reportSTRING
    healthINT