FLUX 3 PE Model (GGUF)
The loader that refuses a half-downloaded file
- pe_model
You grabbed a .gguf, dropped it in ComfyUI/models/gguf, restarted, opened the dropdown, and it was empty. That's this node's personality, and it's worth understanding before you blame ComfyUI.
First contact mistake: FLUX 3 PE is not an image model. The name says FLUX 3 and the file is 5.63 GB, so the assumption is reasonable - but what you're loading is BFL's FLUX 3 Image Klein PUP checkpoint, a prompt upsampler. It writes the long caption your image model wants; the diffusion weights, Qwen3-VL encoder and FLUX.2 VAE that turn that caption into pixels are separate downloads. This node loads the writer, not the painter.
That it's open weights at all is the interesting bit. FLUX 3 shipped in July 2026 as gated early access, with the open Dev backbone still a promise - but the PUP weights are Apache-2.0, which is why one author's pack can run them through llama.cpp on your card.
What it actually does under the hood
It's not a file picker. On queue, Flux3PELoader resolves the path and reads a manifest.json sitting beside the .gguf. From that it checks the source model ID and pinned revision, checks the vision projector (mmproj-*.gguf) matches, and verifies the byte size of both files. Wrong size means a truncated download, and it says so instead of loading garbage into VRAM.
Then it picks a backend. A working llama-cpp-python import means in-process inference. Otherwise, if the packaged Windows runtime exists, it uses llama-server and checksums the patched libraries before running. Either way it hashes the configuration into a revision string, which is how the enhancement node knows its cache is stale after you swap a file.
The upside: half-downloaded GGUFs and mismatched mmproj pairs fail at load time instead of producing weirdly bad prompts three nodes later.
The inputs that matter
model_name is the only one you have to think about, and it's a dropdown built from two folders: <node folder>/models/gguf/ and ComfyUI/models/flux3_pe/. It deliberately hides mmproj-* files and .partial. download leftovers, and sorts Q4_K_M to the top since that's the quant the pack validates.
context_size is advanced, defaults to 8192, range 4096 to 32768. It's the context window, so it's also your KV-cache VRAM bill. Leave it alone unless you're feeding ten reference images and a long instruction.
backend is optional and defaults to auto, which - per the author's tooltip - "prefers a compatible installed Python wheel. Python inference does not require llama-server.exe." Force llama-cpp-python if you want a missing wheel to fail loudly rather than fall back, and llama-server if you deliberately installed the Windows runtime.
The single output is pe_model, a FLUX3_PE_MODEL handle. Nothing else in ComfyUI understands that type - wire it to FLUX 3 Prompt Enhancement and nowhere else. It is not a MODEL, so don't hand it to a sampler.
Installing it for real
Manager, search the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Flux3-PE-GGUF-T8.git Comfyui-Flux3-PE
Now the part that trips people: requirements.txt is only requests and Pillow. It does not install the inference engine. Pull flux3-klein-pup-Q4_K_M.gguf (5.63 GB), mmproj-flux3-klein-pup-F16.gguf (0.92 GB) and manifest.json from the model repo into <node folder>/models/gguf/ or ComfyUI/models/flux3_pe/ - all three, together - then install the wheel into the Python that runs ComfyUI:
python -m pip install --upgrade --only-binary=llama-cpp-python llama-cpp-python==0.3.36 \
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu132
Use the index matching your CUDA (cu124, cu132, or cpu); the pack pins >=0.3.36,<0.4, so a stray 0.2.x won't do.
Where people get burned
The dropdown is empty. You put the files in ComfyUI/models/gguf - the diffusion-GGUF folder - instead of ComfyUI/models/flux3_pe. Different registries. Only the two paths above are scanned, and the list is built at startup, so restart after moving files.
"Model artifact is missing or incomplete." The byte size on disk doesn't match the manifest. Re-download; don't rename files around it. Keep each manifest with its own model - the Heretic variant needs its own manifest.json in its own heretic/ subfolder.
auto fails and mentions llama-server. No importable wheel and no runtime/bin/llama-server.exe. On Linux that runtime doesn't exist - it's a Windows x64 / CUDA 13.4 zip - so the wheel is your only path, installed with ComfyUI's own interpreter. In the Windows portable build that's the embedded one:
.\python_embed\python.exe -m pip install llama_cpp_python-0.3.36+cu132-cp311-cp311-win_amd64.whl
Matching the cp number to the embedded Python's version matters; the wrong wheel installs cleanly and then fails at import. Letting pip build from source without a full CUDA toolchain is the slow way to learn this.
Nothing loads at all on an old install. The pack needs Python 3.10+ and a ComfyUI recent enough for the V3 node API. If neither node appears after a restart, your ComfyUI is too old - reinstalling the pack won't fix that.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| context_size | INT | 81924096–32768 | — |
| backendopt | COMBO | auto | Auto prefers a compatible installed Python wheel. Python inference does not require llama-server.exe. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pe_model | FLUX3_PE_MODEL | — |