ComfyDoctor Report
The node that tells you why your ComfyUI got slow and weird
- report
- health
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 allmarkdown- a report ready to paste into a GitHub issue or Discordproblems_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.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| format | COMBO | summary | 3 options: summary, markdown, problems_only |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| report | STRING | — |
| health | INT | — |