AUN Inputs Wan2.2 Basic
Wan 2.2 Wants Two Models and One Forgetful Dropdown — a Loader That Handles the Rest
- MODEL high
- MODEL low
- CLIP
- VAE
- CLIP_VISION
- high model name
- low model name
- sampler
- scheduler
- cfg_high
- cfg_low
- boundary
- sigma_shift
- steps
- seed
- fps
- frame_rate
- frames
Wan 2.2 is the last open Wan, and its fiddliness is architectural: it splits denoising between a high-noise expert (motion, composition) and a low-noise expert (detail). That's why the stock wiring is nine nodes of plumbing you never touch - two diffusion-model loaders, two LoRA loaders, a CLIP loader on a specific architecture, a VAE, ModelSamplingSD3 or two, then the sampler settings.
AUNInputsWan22Basic squashes that into one node: same idea as the pack's AUNInputsBasic, with Wan's two-expert contract baked in.
What it actually does
Under the hood it's the boring, correct route: load_diffusion_model twice, a CLIPLoader, a VAELoader, an optional CLIPVisionLoader, and LoRA applied per expert.
First, the LoRAs are applied with clip strength 0 - the weights hit the model, not the text encoder, and the CLIP socket is shared. If you select the same LoRA file for both experts it loads the weights once instead of twice, which matters when you're loading a 14B expert next to another 14B expert.
Second, it probes the model to work out how many latent channels it wants (Wan is 16, SD-era stuff is 4) and stamps that on the model so the sampler runs the right latent in/out processing.
The fields you'll actually set
Two model dropdowns. high_noise_name is the first MoE stage, low_noise_name the second. Mirror what the official ComfyUI i2v blueprint ships and you can't go wrong: wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors / wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors, umt5_xxl_fp8_e4m3fn_scaled.safetensors as the CLIP, and wan_2.1_vae.safetensors as the VAE. Those files belong in models/diffusion_models, models/text_encoders and models/vae.
Then clip_type - and here's the trap. The dropdown is built from ComfyUI's CLIPType enum sorted alphabetically, and the default is the first entry, which is Ace. Ace is not Wan. Set it to Wan before you queue, or you'll be debugging a clip that loaded with the wrong architecture.
The rest is the MoE sampler's settings, exported as sockets: cfg_high (default 4), cfg_low (3), boundary (0.875 for t2v, 0.9 for i2v), sigma_shift (8, or -1 to leave the models unpatched), steps (20), seed, plus lora_high_name/lora_low_name with independent strengths, and clip_vision_name - set it only for i2v, None skips vision loading entirely. fps defaults to 16 and length to 81; odd frame counts suit Wan's temporal alignment.
Every one of those has a matching *_input override socket that wins when connected, so an upstream string node can swap the whole model set. If an override name isn't in the folder listing the node warns in the console and falls back to the widget value.
Outputs and what they wire into
MODEL high and MODEL low go to the MoE sampler's two model inputs. CLIP goes into your CLIP Text Encodes. VAE goes to the sampler's vae and to your latent/decode chain. CLIP_VISION goes through a CLIP Vision Encode into WanImageToVideo. The sampler settings fan out as cfg_high, cfg_low, boundary, sigma_shift, steps, seed (and sampler/scheduler, which are any-type so they connect to converted KSampler inputs). fps is a FLOAT for VHS Video Combine, frame_rate the matching INT, and frames is your frame count - feed it to a Wan latent source's length.
Note what isn't here: a LATENT output. Use WanImageToVideo (start_image optional, so it'll build a t2v latent too) or a Wan-specific latent node.
Install
ComfyUI Manager → search the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/loz2754/AUN-ComfyUI-Nodes
Restart, and if you cloned by hand and see a missing module, install the pack's runtime deps (piexif, opencv-python-headless, imageio-ffmpeg, requests):
pip install -r custom_nodes/AUN-ComfyUI-Nodes/requirements.txt
Where people get burned
- The Ace default, covered above. It's the single most likely reason your first Wan render comes out as noise.
- "A high-noise diffusion-model file is required." The dropdowns list
models/diffusion_models(plus the legacyunetfolder). Wan experts dropped intomodels/checkpointsare invisible, and the placeholder entry trips a runtime error rather than a red node. - No cached freebie. The node declares
IS_CHANGEDas NaN, the same always-dirty idiom random pickers use, so it re-reads both experts off disk on every queue. If you're used to ComfyUI skipping unchanged nodes, that shows up as a long pause before a "nothing changed" run starts. - Speed LoRAs. The community compromise after the "speed LoRAs kill everything good in Wan 2.2" blowup was to apply them to the low-noise pass only, at reduced strength. This node's separate slots are that workflow:
lora_low_name= your lightx2v LoRA at 0.4–0.6, high-noise slot empty. With those LoRAs, CFG wants to be 1.0 and steps drop to 3–4. - Two 14B experts is real VRAM. fp8 or a GGUF quant isn't optional on a 24GB card. And if you use cg-use-everywhere, note the two
MODELoutputs share a type whilesampler/schedulerare deliberately non-broadcastable - link those two directly.
Inputs (37)
| Name | Type | Default | Description |
|---|---|---|---|
| high_noise_name | COMBO | High-noise diffusion expert file (first MoE stage). | |
| low_noise_name | COMBO | Low-noise diffusion expert file (second MoE stage). | |
| clip_name | COMBO | CLIP file to pair with the diffusion experts (umt5 for Wan2.2). | |
| clip_type | COMBO | Ace | Clip architecture to use when loading the diffusion experts. |
| vae_name | COMBO | VAE checkpoint for decoding Wan2.2 latents. | |
| clip_vision_name | COMBO | None | CLIP Vision file for image-to-video. 'None' skips vision loading (text-to-video). |
| lora_high_name | COMBO | None | LoRA file for the high-noise expert. 'None' disables. |
| lora_high_strength | FLOAT | 1.000–4 | LoRA strength for the high-noise expert. |
| lora_low_name | COMBO | None | LoRA file for the low-noise expert. 'None' disables. |
| lora_low_strength | FLOAT | 1.000–4 | LoRA strength for the low-noise expert. |
| sampler | COMBO | Sampling algorithm for the MoE sampler. | |
| scheduler | COMBO | Noise schedule for the MoE sampler. | |
| cfg_high | FLOAT | 4.00–100 | CFG for the high-noise expert. |
| cfg_low | FLOAT | 3.00–100 | CFG for the low-noise expert. |
| boundary | FLOAT | 0.8750–1 | MoE timestep boundary. Recommended: 0.875 for t2v, 0.9 for i2v. |
| sigma_shift | FLOAT | 8.00-1–100 | Shift applied to both experts. Use -1 to bypass and leave models unpatched. |
| steps | INT | 201–10000 | Sampling steps for the MoE schedule. |
| seed | INT | 0-18446744073709550000–18446744073709550000 | Base seed shared by both experts. |
| fps | FLOAT | 16.01–120 | Frames per second. FLOAT output wires into VHS Video Combine. |
| length | INT | 811–10000 | Video length in frames. Odd counts (81/121) suit Wan2.2 temporal alignment. |
| high_noise_inputopt | STRING | High-noise diffusion filename override. When connected, replaces 'high_noise_name'. | |
| low_noise_inputopt | STRING | Low-noise diffusion filename override. When connected, replaces 'low_noise_name'. | |
| clip_inputopt | STRING | CLIP filename override. When connected, replaces 'clip_name'. | |
| vae_inputopt | STRING | VAE filename override. When connected, replaces 'vae_name'. | |
| clip_vision_inputopt | STRING | CLIP Vision filename override. When connected and non-empty, replaces 'clip_vision_name'. Connect 'None' semantics by leaving empty to skip vision loading. | |
| lora_high_inputopt | STRING | LoRA filename override for the high-noise expert. When connected, replaces 'lora_high_name'. | |
| lora_low_inputopt | STRING | LoRA filename override for the low-noise expert. When connected, replaces 'lora_low_name'. | |
| sampler_inputopt | STRING | Sampler name override. When connected and non-empty, replaces the 'sampler' widget value. | |
| scheduler_inputopt | STRING | Scheduler name override. When connected and non-empty, replaces the 'scheduler' widget value. | |
| cfg_high_inputopt | FLOAT | CFG override for the high-noise expert. | |
| cfg_low_inputopt | FLOAT | CFG override for the low-noise expert. | |
| boundary_inputopt | FLOAT | Boundary override. When connected, replaces the 'boundary' widget value. | |
| sigma_shift_inputopt | FLOAT | Sigma shift override. When connected, replaces the 'sigma_shift' widget value. | |
| steps_inputopt | INT | Steps override. When connected, replaces the 'steps' widget value. | |
| seed_inputopt | INT | Seed override. When connected, replaces the 'seed' widget value. | |
| fps_inputopt | FLOAT | FPS override. When connected, replaces the 'fps' widget value. | |
| length_inputopt | INT | Frame-length override. When connected, replaces the 'length' widget value. |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| MODEL high | MODEL | — |
| MODEL low | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |
| CLIP_VISION | CLIP_VISION | — |
| high model name | STRING | — |
| low model name | STRING | — |
| sampler | * | — |
| scheduler | * | — |
| cfg_high | FLOAT | — |
| cfg_low | FLOAT | — |
| boundary | FLOAT | — |
| sigma_shift | FLOAT | — |
| steps | INT | — |
| seed | INT | — |
| fps | FLOAT | — |
| frame_rate | INT | — |
| frames | INT | — |