Nodes/Ultra Tools/Ultra Tools Model Viewer
ComfyUI Node

Ultra Tools Model Viewer

The model list you need before you post a workflow, generated for you

By Yamoon-jjang·Created 14 days ago·Updated 9 days ago· 5
Ultra Tools Model Viewer
      ◄models►

      Why you'd want this

      Sharing a workflow in ComfyUI is a small disaster by default. You post the PNG or the JSON, someone loads it, and ComfyUI tells them about six missing nodes and a missing checkpoint with a name like illustriousXL_v01Train_00001_.safetensors. They then have to guess which of the four Illustrious derivatives you actually used, and where the LoRA came from.

      Ultra Tools Model Viewer solves the boring half of that: it walks the graph that's currently open, finds every model file it can identify, and prints the names and sizes into a text box on the canvas. Copy, paste into your post. Done. It's also genuinely useful privately - it's the fastest way to answer "what did I run last week, and why is it 22 GB of models?"

      How it detects models

      This is the interesting part, because graph-scraping is fiddly and most attempts are bad.

      The frontend sends the current workflow JSON to the pack's route /Ultra-model-viewer/workflow-models. The backend then does three passes:

      1. Known loader node types. There's a hardcoded set of loader class names - CheckpointLoaderSimple, UNETLoader, LoraLoader, LoraLoaderModelOnly, VAELoader, DualCLIPLoader, PowerLoraLoader, ControlNetLoader, UpscaleModelLoader, the GGUF and Nunchaku loaders, and so on. Nodes in that set get scanned as model sources.
      2. Exact model-value keys. Widget values under names like ckpt_name, lora_name, vae_name, unet_name, text_encoder, control_net_name, upscale_model_name, ipadapter_name are treated as model references. The source is deliberately strict here - "model" alone isn't enough, and keys like profile_name or modeling_notes are excluded, because those are UI labels that would otherwise produce garbage.
      3. Text patterns. LoRA tags written into prompt strings (<lora:name:0.8>) and filename-looking strings ending in a model extension get picked up too. Subgraphs are followed, so models loaded inside a subgraph aren't silently missed.

      Each candidate reference is then resolved against ComfyUI's folder registry to find the real file and its size. Everything found lands in the models widget, grouped by category.

      The inputs

      Exactly one, and you don't type in it.

      models - a multiline string that the node fills in. The node is an output node with no return values; the display is the output.

      No outputs, no wiring. Drop it anywhere on the canvas and run the graph - the JS listens for the execution events and refreshes the report as the prompt runs. To refresh after you swap a checkpoint, just queue again; there's no separate scan button to hunt for.

      Install

      Manager → search Ultra Tools. Or:

      cd ComfyUI/custom_nodes
      git clone https://github.com/Yamoon-jjang/comfyui-Ultra-Tools
      

      Full restart plus Ctrl+F5. Zero pip dependencies - requirements.txt in the repo is a comment saying so, and the code only uses torch, Pillow, numpy, aiohttp and the stdlib.

      If you previously installed comfyui-Ultra-model-viewer as its own pack, remove that folder first. Two packs registering ModelSizeViewerWorkflow is a recipe for confusion.

      Where it gets it wrong, honestly

      Two failure modes you should expect.

      Custom loader nodes. If your workflow loads models through some third-party node the author has never seen, detection falls back to heuristics: loader-ish class name plus a model-ish key. A pack that names its widget my_checkpoint_v2 will be missed. The workaround is the other node in the pair - Ultra Tools Model Viewer (All) hasn't a clue what your workflow uses, but it will show you every file in Checkpoints, and you can read the list yourself.

      Missing files. The report reflects what's resolvable on this machine. If you've opened someone else's workflow, values that don't match a real file can't have a size attached, so the list is thinner than the graph implies - which is exactly the missing-model list you wanted, just presented as absence rather than an error. Check the graph before you assume everything is installed.

      And the general pack caveat: this is a one-person Korean-language project with no community footprint to speak of, so when something looks wrong you're reading the source, not a forum thread. Fortunately the source here is 1,700 lines of extremely defensive parsing, and the failure mode is a short list, not a corrupted model.

      CategoryUltra Tools

      Inputs (1)

      NameTypeDefaultDescription
      modelsSTRING—

      Outputs (0)

      No outputs