Qwen Image 2.1 PE Local Models T8
The two-node graph that tells you why your dropdown is empty
- local_models
It lists files. That's the job.
PE Local Models T8 is the pack's flashlight. One boolean in, one JSON string out, and the entire purpose is answering the question you're about to ask the moment something goes wrong: what GGUFs does this node actually see on disk?
You'd reach for it because the other nodes populate their model dropdowns when the workflow is instantiated. New files appear only after a ComfyUI restart, and a GGUF that landed in the wrong folder is indistinguishable from a GGUF that never downloaded. This node doesn't need a restart to be truthful - it scans on every execution - so it's the fastest way to tell "wrong directory" apart from "wrong filename" apart from "still a partial file." The author ships it wired to a single PreviewAny in Qwen-PE-2.1-Local-Models-Demo.json, which is exactly the two-node graph the situation calls for. Drag that JSON in, hit Run, read the text.
What it reports, and where it looks
The output is a pretty-printed JSON object with two arrays: every .gguf it found that is a main model, and every one whose filename contains mmproj - the vision files that editing needs. It searches three places, in order: QWEN_PE_MODEL_DIR if you've set it, the pack's own models/llm/qwenimage-pe/ folder, and ComfyUI/models/llm/qwenimage-pe/. So if you half-followed the README and put weights in the ComfyUI models directory while the downloader had already stashed them next to the node, you'll see entries from both, which is genuinely useful when you're trying to work out why a 5.6 GB file exists twice.
Two naming rules are worth internalising, because the pack's matching logic uses them. Anything with mmproj in the name is a vision component; everything else is a main model, including the optional pe_t2i_heretic-Q4_K_M.gguf. So a correct install shows three main models and one vision file, and if you only count two mains, you skipped the Heretic download. And matching is by base name: the vision file has to start with the main model's name minus its quant suffix, which is how Qwen-Image-2.1-PE-I2I.mmproj-bf16.gguf pairs with Qwen-Image-2.1-PE-I2I.Q4_K_M.gguf. An mmproj from some other repo will happily show up in this list and then refuse to pair, because the list reports what's on disk, not what's compatible - the README is explicit that checking compatibility with the task you've selected is on you.
Inputs and outputs
- refresh - a BOOLEAN, default off. The honest description: the node rescans on every run anyway, so this widget is a manual trigger rather than a cache control. Toggle it if the UI looks stale; nothing behind it changes what gets scanned.
- local_models - a STRING containing the JSON. Wire it to
PreviewAnyor a text-show node. It is not a model loader and it doesn't feed anything downstream in a real generation graph.
Installing it
It comes free with the pack. Manager search qwen-image-prompt-rewrite-t8, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Qwen-Image-Prompt-Rewrite-T8.git
Then, from the node directory, with ComfyUI's own Python:
python tools/download_models.py
That fetches three Q4_K_M main GGUFs plus the BF16 I2I vision component (~18 GB total), verifying sizes and SHA256 as it goes. You do not need llama-server to run this node - listing files doesn't launch anything - but you do need it for the Rewrite node to actually work.
Reading the results
Empty arrays. The files aren't where the node looks. Put them in ComfyUI/models/llm/qwenimage-pe/ or set QWEN_PE_MODEL_DIR and re-run this node before restarting ComfyUI.
A file you know exists isn't listed. Interrupted downloads are invisible here: the downloader writes to a .part file and the scan skips those names, so a half-finished 5.6 GB blob shows up as nothing at all rather than as a truncated entry. Re-run the downloader, which resumes where it left off.
Everything looks right but the Rewrite node still says "no local GGUF found." That dropdown was built at workflow load. Restart ComfyUI - this node being correct and the dropdown being empty at the same time is the normal state of affairs right after a download.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| refresh | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| local_models | STRING | — |