Load LoRA Stack (Inteliweb)
Ten LoRAs, one node, and rows that tell you when they're broken
- model
- clip
- MODEL
- CLIP
Stacking multiple LoRAs is one of the most established moves in ComfyUI - the corpus is full of people chaining a style LoRA with a character LoRA and a detail LoRA. The standard tool for that has long been rgthree's Power Lora Loader, and for most people it's still the right answer. But rgthree famously declined to port to Nodes 2.0, which leaves a real gap: if you run the new Vue-based frontend, a multi-LoRA node that renders properly is worth having. Load LoRA Stack is that node, and it happens to be one of the better-built entries in this pack.
How it works
Each LoRA is a row in the node; rows apply top-to-bottom onto the model in order, which matters because LoRA stacking is not commutative - the same three LoRAs in a different order genuinely give a different image. Every row has an enable toggle, a strength, and a context menu to move it up or down. The state lives in the browser (node.properties), and the frontend injects it into a hidden lora_stack input right before the workflow queues. Backend then walks the rows and applies each enabled one through ComfyUI's core LoraLoader.load_lora, skipping rows whose strength is zero.
Two details in the backend are worth knowing. First, path resolution is deliberately portable: it tries an exact match, then a case-insensitive match, then a unique-filename match, and it normalizes to forward slashes so a workflow saved on Windows opens on Linux. Second, the clip input is optional - disconnect it and the node applies LoRAs to the diffusion model only (CLIP strength is forced to 0), which is exactly what you want for model-only LoRAs on architectures where touching the text encoder does nothing.
Inputs and outputs
model is the only required input; clip is optional. Outputs are MODEL and CLIP, ready to feed your KSampler. The UI does the rest: the shared-strength control shows two decimals, and rows can use separate model/CLIP strengths if you need to decouple them.
Installing it
It ships with the pack - install once:
cd ComfyUI/custom_nodes
git clone https://github.com/maoper11/comfyui_inteliweb_nodes.git
cd comfyui_inteliweb_nodes
python -m pip install -r requirements.txt
Or via ComfyUI Manager, search "ComfyUI_Inteliweb_nodes". Just psutil and nvidia-ml-py - no model files to fetch. Restart, done.
Where people get burned
The failure mode that matters: a missing LoRA fails loudly. When a file doesn't exist the row shows ⚠ Missing, and if two LoRAs share a filename it shows ⚠ Ambiguous - dimmed rows, but your original reference stays saved until you pick another file. At queue time a genuinely unresolvable path raises a clear error naming the row, which is better than the silent-does-nothing behavior that makes people think a LoRA "works" when it isn't applied. A few release-notes gotchas to know: R (or Refresh node definitions) refreshes the file list and warnings without dropping your weights or toggles, and there were fixes across v0.20.2–v0.20.4 for height calculation when the node loads off-screen and for row dimming in Classic mode. If a row renders oddly, make sure you're on a recent version - the DOM work has been churning here specifically.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Diffusion model that receives the enabled LoRAs in row order. | |
| clipopt | CLIP | Optional CLIP model. When disconnected, LoRAs are applied only to the diffusion model. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | Model after applying all enabled LoRAs in order. |
| CLIP | CLIP | Modified CLIP when connected; otherwise None. |