Flow - Flux Preset Loader
Everything Flux needs to load, in one node — including GGUF
- model
- clip
- vae
- gen_info
Flux is a pain to load because it's three separate models: the UNet/diffusion model, two text encoders, and a VAE. Stock ComfyUI makes you wire UNETLoader + CLIPLoader + VAELoader and keep them straight. FlowFluxPresetLoader collapses all of that into one node, and it throws in the settings that make the pack's FlowKSampler run Flux correctly - guidance, sampler, scheduler - plus support for quantized .gguf UNets out of the box.
It's the Flux half of ComfyUI-Flow-Control's preset-loader pair (the checkpoint half is FlowCheckpointPresetLoader). Like its sibling, it keeps per-model presets on disk in a db file so each Flux checkpoint remembers how it likes to be sampled.
How it works
Give it a unet_name (from models/diffusion_models, and the pack extends that folder list to include .gguf files) and it loads the model. A weight_dtype dropdown handles quantization for non-GGUF files: default, fp8_e4m3fn, fp8_e4m3fn_fast (adds fp8 optimizations), and fp8_e5m2. Pick fp8 and it casts the weights on load - that's most of the VRAM savings people chase with Flux.
For .gguf files it uses a bundled copy of City96's GGUF loader, which is why the pack needs the gguf Python package installed (more on that below). The two clip_name inputs point at text encoders in models/text_encoders (typically clip_l.safetensors plus t5xxl_fp8_e4m3fn.safetensors), and vae_name points at ae.safetensors in models/vae. It loads them all into one clip and vae output.
The preset behavior mirrors FlowCheckpointPresetLoader: pick a UNet and its saved steps, guidance, sampler_name, scheduler and url populate the fields. Outputs are model, clip, vae, and gen_info - and gen_info is where it sets base to Flux, which is the signal that makes FlowKSampler run the guidance-based Flux sampling path.
The inputs that matter
unet_name- your Flux model (safetensors or .gguf).weight_dtype- fp8 options if your card is tight;defaultotherwise.vae_name,clip_name1,clip_name2- the supporting cast.guidance- Flux's analog of CFG; 3.5 is the default and a good starting point. It becomes thecfgfield in gen_info for FlowKSampler.
Install
It's part of ComfyUI-Flow-Control:
cd ComfyUI/custom_nodes
git clone https://github.com/krich-cto/ComfyUI-Flow-Control
pip install gguf # required: the pack imports gguf at startup
Restart ComfyUI. The pack itself bundles no weights - you need the Flux model, ae.safetensors, and the two text encoders in the usual model folders. The gguf install matters: nodes/gguf/ imports the gguf package at module load, and if it's missing the whole pack fails to register with "Failed to load nodes." in the console. requests is the other hard import (CivitAI lookups).
Gotchas
The startup import gguf is the big one - miss it and you lose every Flow node, not just this one. Also note the schema exposes two clip slots (clip_name1, clip_name2), so if you're following newer Flux guides that want four encoders you'll feel the squeeze. And presets for Flux live in their own db/flux_checkpoints.json, seeded only with the author's own models - fresh Flux files start blank until you save a preset or run FlowModelManager.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| vae_name | COMBO | 0 options: | |
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 0 options: | |
| base | COMBO | 2 options: , Flux | |
| hash | STRING | — | |
| steps | INT | 201–10000 | — |
| guidance | FLOAT | 3.50–100 | — |
| sampler_name | COMBO | 34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28 | |
| scheduler | COMBO | 9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3 | |
| url | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| gen_info | GENINFO | — |