LoRA Stack (WAN-style remap)
4 LoRAs in, one remapped WAN stack out
- lora
- LORA
The reason IAMCCS-nodes exists is a bug that drove people crazy: in native WANAnimate workflows - no WanVideoWrapper - LoRA weights mostly failed to load, so your character LoRA silently did nothing and consistency fell apart. IAMCCS_WanLoRAStack is the fix. It merges up to four LoRAs into one bundle, remaps their keys into the shape native Wan expects, and hands that bundle to a matching apply node. Stack here, apply there, done.
Why it works
The technical story from the README is that native WANAnimate pipelines skip the internal LoRA merge functions the wrapper used. IAMCCS's answer is two nodes: this stack (which replaces the missing load phase) and IAMCCS_ApplyLoRAHooksToConditioning or IAMCCS_ModelWithLoRA (which injects the bundle at the Torch level). The key word is remap. The source code converts Wan 2.1 lora_down/lora_up keys into Wan 2.2's lora_A/lora_B format, and normalizes whatever naming convention the file shipped in (transformer.*, pipe.dit.*, blocks.*, lora_unet__*) into the diffusion_model.* form ComfyUI's Wan path expects. That's the cross-compatibility trick: it's why character LoRAs, the LightX2V distill LoRAs, and WAN Boost Realism all just work on the same slot.
The inputs that matter
Four slots, one model_type:
lora1–lora4, each with its ownstrength1–strength4. Pick "no" to leave a slot empty; a slot with strength 0.0 is skipped too.model_type-wan2x,flow, orstandard. This picks the remapping logic.flowis the default and the safe choice for WAN 2.2 and other flow-matching DiTs; usewan2xfor the WAN 2.x-specific path,standardto skip remapping entirely.- Optional
lorainput (type LORA) - chain another stack here to go past four LoRAs. The README's bigger animation graphs concatenate stacks this way.
Output is a single LORA bundle. That's it. It's an intermediate node - it does not touch a model - so if you wire it straight to a sampler you've built a no-op. It feeds the apply node.
Where it sits in a workflow
Load your base WAN 2.2 / LightX2V model, build this stack with your character + style + speed LoRAs, then run the bundle through IAMCCS_ApplyLoRAHooksToConditioning (which applies it via the same comfy.sd.load_lora_for_models path as core's LoRA Loader - no per-step hook patching, which matters because that stalls 14B offloaded models) and send the resulting model to your sampler. If you'd rather skip the two-node dance, the pack also offers LoRA Stack (Model In→Out) WAN, which merges stack + apply into one node.
Install
- ComfyUI Manager → search "IAMCCS" → install → restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI. Pack requirements: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8, with CUDA 12.6/12.8 in the README's example setups. No extra model downloads - it reads whatever .safetensors is in your loras folder. That's the point: this is a compatibility layer, not a model.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| lora1 | COMBO | no | 1 options: no |
| strength1 | FLOAT | 1.00-5–5 | — |
| lora2 | COMBO | no | 1 options: no |
| strength2 | FLOAT | 0.00-5–5 | — |
| lora3 | COMBO | no | 1 options: no |
| strength3 | FLOAT | 0.00-5–5 | — |
| lora4 | COMBO | no | 1 options: no |
| strength4 | FLOAT | 0.00-5–5 | — |
| model_type | COMBO | flow | 3 options: wan2x, flow, standard |
| loraopt | LORA | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LORA | LORA | — |