ComfyUI Node

Loader

One loader for Flux, SDXL, WAN, HunyuanVideo — and it picks the architecture itself

By FXTD-Studios·Created 9 months ago·Updated about 12 hours ago· 250
Loader
  • lora_stack
  • model
  • clip
  • vae
  • lora_stack
  • model_meta
◄presetCustom►
◄unet_name▾►
◄weight_dtypedefault►
◄model_typeAuto-Detect►
◄vae_name▾►
◄clip_lNone►
◄clip_gNone►
◄t5xxlNone►
◄llm_encoderNone►
◄text_projectionNone►
◄clip_dtypedefault►
◄offload_modenone►
◄check_vramOn►
◄use_cacheOn►
◄lora_on_errorraise►
◄auto_downloadtrue►
◄model_shift0.00►

Every new model architecture means a new loader: Flux loader, SDXL loader, WAN loader, and God help you if you mix up which one takes which CLIP. ◎ Radiance Unified Loader is the "just load it" node: it auto-detects the architecture from the checkpoint's own keys, loads the right text encoders into named slots, lets you chain LoRAs and a ControlNet in the same node, and even downloads a missing model for you. It's the pack's answer to "stop swapping loaders, start loading."

The KB's VAE essay is the subtext here: the modern generation problem isn't image quality, it's getting the right components (diffusion model, CLIP/T5, VAE, right channel count) to agree. This node exists to make that agreement automatic.

How it works

It fingerprints the model: Auto-Detect reads the checkpoint's state-dict key names and matches them against a ranked set of architecture heuristics (Flux, SD3/SD3.5, SDXL, SD 1.5, WAN, HunyuanVideo, LTX, PixArt, Lumina2, etc.). The codebase notes the heuristics are ordered so more specific patterns win - there's even a documented bugfix where a generic Wan key was silently misdetecting Wan as LTX until the ordering was corrected. The presets dropdown (Flux Dev, Flux Schnell, Flux Dev Low VRAM, SD3.5 Large/Medium/Turbo, SDXL, Wan 2.1, HunyuanVideo, etc.) does the same configuration the manual way, and overrides model_type, dtypes, offload mode, and which CLIP slots you need.

The CLIP handling is the part that saves real pain: clip_l, clip_g, t5xxl, and llm_encoder are separate named slots, each with its own dtype. Load Flux and it uses CLIP-L + T5-XXL; load SDXL and it needs CLIP-L + CLIP-G; WAN uses T5-XXL. The node wires them into the right places, and the latent_format output (e.g. flux_16ch) carries the channel count forward to the sampler so encode/decode stay consistent.

LoRAs are a first-class citizen: a chainable LORA_STACK input (from RadianceLoraStack) plus three inline LoRA slots, each with independent model and CLIP strengths. There's also an optional ControlNet with start/end and strength, and lora_on_error lets you choose warn (skip a broken LoRA, keep going) or raise.

The inputs that matter

  • preset - pick a model family and most of the rest configures itself.
  • unet_name and vae_name - the files (dropdowns populate from your folders).
  • weight_dtype - default or fp8_e4m3fn (~40% VRAM savings on the UNET, per the tooltip) when VRAM is tight.
  • offload_mode - none, cpu_offload, or sequential for 8–12GB GPUs.
  • auto_download - if a selected model is missing, fetch it from the pack's mirrors (a curated map covering common Flux/SDXL files).

Outputs: MODEL, CLIP, VAE, CONTROLNET, the lora_stack, plus load_info, latent_format, and model_meta (JSON) for downstream validation.

How to install it

It's part of the radiance pack. ComfyUI Manager → "Radiance", or:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_windows.txt

Restart, and it's under FXTD Studios/Radiance/Generate. No models ship with the pack - you point it at files you already have (or let auto_download fetch the common ones).

Common issues

The honest caveats: auto_download only knows the handful of models in its map, so "downloads a missing model" doesn't mean "every model." And while caching is fingerprint-based (use_cache keyed on mtime + size so stale cache hits are avoided), a cached model can still go stale if a file changes without a size/time change - rare, but disable the cache if you're iterating on a file in place. If Auto-Detect guesses wrong on an unusual checkpoint, that's what the manual model_type override is for - the tooltip says it plainly. And one community note: a "unified" loader is only as unified as its heuristics, so on brand-new architectures check model_meta to confirm what it detected before you blame the sampler.

For anyone juggling more than one model family, this is the loader that makes switching a dropdown instead of a rebuild.

CategoryFXTD STUDIOS/Radiance/Generate

Inputs (18)

NameTypeDefaultDescription
presetCOMBOCustomQuick-configure for common architectures. Overrides model_type, dtypes, offload_mode, and hints which CLIP slots are needed.
unet_nameCOMBOMain diffusion model (UNET / DiT / Transformer).
weight_dtypeCOMBOdefaultUNET weight precision. fp8_e4m3fn saves ~40% VRAM vs fp16.
model_typeCOMBOAuto-Detect'Auto-Detect' reads the checkpoint's key names to determine architecture. Override manually if detection fails.
vae_nameCOMBOVAE for encoding/decoding latents. 'Baked VAE (from UNET)' extracts it from the checkpoint, for architectures whose standard release bundles the VAE into the main file instead of shipping it separately.
clip_loptCOMBONoneCLIP-L (text encoder). Used by: SD1.5, SDXL, Flux, SD3.
clip_goptCOMBONoneCLIP-G (text encoder). Used by: SDXL, SD3, SD3.5.
t5xxloptCOMBONoneT5-XXL (text encoder). Used by: Flux, SD3, SD3.5, Wan, PixArt, LTX (pre-2.3). 'Baked (from UNET)' loads it from the main checkpoint -- AuraFlow ships no standalone text encoder file.
llm_encoderoptCOMBONoneLLM encoder. Used by: HunyuanVideo (Llava-Llama3), LTX 2.3 (Gemma 3), Lumina2 (Gemma-2), Z-Image (Qwen3), Flux.2 (Mistral-3/Qwen3).
text_projectionoptCOMBONoneText projection matrix. Used by: LTX 2.3 (with Gemma 3 llm_encoder). 'Baked (from UNET)' loads it from the main LTX 2.3 checkpoint, like the native LTXV Audio Text Encoder Loader.
clip_dtypeoptCOMBOdefaultCLIP weight precision. Independent from UNET. For Flux T5XXL: fp8 saves ~4.7 GB vs fp16.
offload_modeoptCOMBOnonenone = GPU only. cpu_offload = CLIP loaded to CPU RAM. sequential = enable ComfyUI sequential CPU offload (8–12 GB GPUs).
lora_stackoptLORA_STACKAccept a LORA_STACK from a LoRA Stack node.
check_vramoptCOMBOOnEstimate VRAM before load and warn if tight.
use_cacheoptCOMBOOnCache loaded models. Skips disk I/O when re-running with the same files. Cache auto-invalidates if files change.
lora_on_erroroptCOMBOraise'warn' skips failed LoRA and continues. 'raise' stops execution.
auto_downloadoptBOOLEANtrueIf a selected model is missing and is one Radiance knows, download it on first run from its pinned Hugging Face source, checked against its SHA-256 before it is installed (large: 4 to 60 GB). Gated repositories (FLUX.2-dev, FLUX.2-klein 9B, LTX-2.5) need their licence accepted on Hugging Face and HF_TOKEN set. RADIANCE_ALLOW_DOWNLOADS=0 always stops downloads.
model_shiftoptFLOAT0.000–100Noise-schedule shift written into the model, as ModelSamplingAuraFlow does, for flow models such as Qwen-Image. 0 keeps the model's own. The Qwen-Image presets set their templates' 3.1. The Sampler's flux_shift applies on top of it.

Outputs (5)

NameTypeDescription
modelMODEL—
clipCLIP—
vaeVAE—
lora_stackLORA_STACK—
model_metaSTRING—