SAX Diffusion Loader
For the split checkpoints with no single file to load
- PIPE
- SEED
Most checkpoints are one file with the model, text encoder, and VAE baked together. A growing slice of the 2026 generation isn't - models like Anima ship as separate UNET, CLIP, and VAE weights you load independently. SAX Diffusion Loader is the SAX_Bridge answer to that: it loads all three from their own folders, plus an optional LoRA, and builds the exact same PIPE that SAX Loader produces, so every downstream SAX node works unchanged. If you're on a split-distribution model, this is the loader you want; if you're on a normal checkpoint, the regular SAX Loader is simpler and this one is irrelevant to you.
What it loads
unet_name- the diffusion model fromdiffusion_models, with aweight_dtypedropdown (default, or the fp8 optionsfp8_e4m3fn/fp8_e4m3fn_fast/fp8_e5m2) that applies the same dtype mapping as ComfyUI's built-in UNETLoader.clip_name- the text encoder fromtext_encoders. The pack auto-detects the CLIP type from the state dict (it knows Anima's Qwen3 0.6B, for instance), so you don't hand-pick an architecture.vae_name- always an external VAE here; there's no baked option.lora_name+lora_model_strength- optional LoRA, applied to both model and CLIP with one strength value.
Then the same sampler set as SAX Loader: seed, steps, cfg, sampler_name, scheduler_name, denoise, width, height, batch_size. Outputs are the identical PIPE and SEED pair, so you can swap SAX Loader for this node in an existing graph without rewiring anything downstream.
The clever bit: latent channels
Split diffusion models don't share the SDXL 4-channel latent. The empty latent this loader creates starts at 4 channels, and the KSampler has a fix_empty_latent_channels step that adapts it to whatever the model actually wants - 16-channel and 3-dimensional latents (the newer flow-matching architectures) need no extra setup on your part. That's exactly the kind of thing that used to be a "why is my latent the wrong shape" detour, now handled inside the pack.
What's deliberately missing
There's no clip_skip and no v_pred here, and that's correct, not an omission: these models use flow-based sampling and LLM-style text encoders, where CLIP skip and V-prediction simply don't apply (the KB's concepts doc covers why CLIP skip is meaningless on the new encoders). If you find yourself wishing for a clip_skip field, you're probably loading a model that doesn't need one.
Installing and using
Same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/so16tm/SAX_Bridge
Restart, and it's under SAX/Bridge/Loader. Drop your files in the standard folders (diffusion_models, text_encoders, vae) and they'll appear in the dropdowns. The fp8 weight dtypes are the move when VRAM is tight - same story as GGUF/fp8 everywhere else: a bit of quality for a chunk of memory. Start with default for quality, switch to fp8 if you're swapping.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| clip_name | COMBO | 0 options: | |
| vae_name | COMBO | 0 options: | |
| lora_name | COMBO | 1 options: None | |
| lora_model_strength | FLOAT | 1.00-10–10 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler_name | COMBO | 11 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +5 | |
| denoise | FLOAT | 1.000–1 | — |
| width | INT | 5128–8192 | — |
| height | INT | 5128–8192 | — |
| batch_size | INT | 11–4096 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| PIPE | PIPE_LINE | — |
| SEED | INT | — |