WAN Dual LoRA Loader
Wan 2.2 wants two LoRA loaders. This is the one node that does both.
- model_high
- model_low
- model_high
- model_low
- prompt
If you've wrestled a Wan 2.2 workflow, you know the annoyance this node exists to kill. Wan 2.2 isn't one model - it's two. There's the HIGH noise model that handles motion and composition, and the LOW noise model that refines detail, and you have to feed both into your sampler stack separately. So loading LoRAs means two LoraLoader nodes, and stacking a different set on each pass means a tangle of chains across your canvas. The WAN Dual LoRA Loader (from the small Hermes Nodes pack) collapses all of that into a single node with a two-column UI - one list of LoRAs for HIGH, one for LOW - and applies them independently in the right order.
Why does independent control matter? Because the community's hard-won Wan 2.2 wisdom is that speed LoRAs (Lightning/lightx2v) destroy what makes 2.2 good - scene composition, lighting, facial detail - so the compromise everyone lands on is speed LoRA on the LOW pass only, keep HIGH clean. That's exactly the split this node makes one click instead of a five-node rig.
How it works
On the backend it's not magic: each row you add creates a dynamic input (HIGH_LORA_* or LOW_LORA_*) carrying a filename, an on/off toggle, and a strength. On execute, the node walks those inputs and applies every enabled, non-zero-strength LoRA with ComfyUI's own load_lora_for_models - so it's using the stock loader under the hood, not some reimplementation. It also resolves wildcards in the prompt field and hands you the finished string out the prompt output, so a "random" prompt and the LoRAs stay in sync on one seed.
The UI part is the real feature. Beyond the two columns, there's an Auto-Match button that pairs HIGH/LOW files by normalized filename (strips _high/_low suffixes, so svi_high.safetensors matches svi_low.safetensors), and a preset system that saves the whole prompt-plus-LoRAs setup to a JSON file in your ComfyUI user directory, organized into Default/I2V/T2V lists.
The inputs that matter
- model_high / model_low - plug in the two WAN models from your Wan loader. Both are required; a beginner's first stumble is trying to feed it one model and wondering why it errors.
- prompt - multiline, and it supports wildcards:
{option1|option2}for random choice,__filename__to pull a random line from a wildcards file in your userwildcardsfolder, and<random:0.5:1.0>for a random float. - seed - drives the wildcard randomization only, so same seed, same wildcard picks.
Outputs are model_high, model_low (wire to your two sampler stages), and prompt (into the conditioning text).
Installation and setup
It's a zero-dependency pack - no requirements.txt, no model downloads. ComfyUI Manager users can search "Hermes Nodes"; everyone else:
cd ComfyUI/custom_nodes
git clone https://github.com/Lannister34/ComfyUI-HermesNodes
Then restart ComfyUI. The one setup gotcha is the folder layout, which the pack registers at startup but won't populate for you. It expects:
models/loras/wan/
├── I2V/HIGH/ I2V/LOW/ # LoRAs for each pass
└── T2V/HIGH/ T2V/LOW/
Drop a LoRA straight into I2V/ (not a HIGH/LOW subfolder) and it appears in both columns. Files that are actual per-pass LoRAs (trained separately for HIGH and LOW, which character LoRA trainers like musubi-tuner increasingly output) go in the subfolders.
Where people get burned
- Wrong folder = invisible LoRA. If it's not under
loras/wan/..., the node won't list it. The pack creates the directories on first launch, so check you're actually placing files there and not in plainloras/. - You still need a real WAN setup. This is a loader, not a model runner. It doesn't include the Wan 2.2 checkpoints, VAE, or the sampler chain - it just sits at the front of one. If nothing generates, the problem is upstream.
- Presets are local JSON (
user/hermes_presets/wan_lora_presets.json) - great for saving configs, but they don't travel with a shared workflow file.
Honest verdict: for a one-off generation, two stock loaders do the job. Where this earns its keep is when you're iterating on the classic high-quality/speed-LoRA tradeoff - swapping a character LoRA onto both passes at different strengths, saving the whole combo as a preset, and never rebuilding the graph. It's a niche, well-executed utility from a tiny pack with little community footprint; if it's not for you, that's fine. But if you live in Wan 2.2, it's the rare convenience node that removes an actual chore.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model_high | MODEL | The HIGH diffusion model | |
| model_low | MODEL | The LOW diffusion model | |
| prompt | STRING | — | |
| seed | INT | 00–18446744073709550000 | Seed for wildcard randomization |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model_high | MODEL | — |
| model_low | MODEL | — |
| prompt | STRING | — |