Nodes/ComfyUI_Inteliweb_nodes/Load LoRA Stack (Inteliweb)
ComfyUI Node

Load LoRA Stack (Inteliweb)

Ten LoRAs, one node, and rows that tell you when they're broken

By maoper11·Created about a year ago·Updated 9 days ago· 4
Load LoRA Stack (Inteliweb)
  • 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.

CategoryInteliweb/Loaders

Inputs (2)

NameTypeDefaultDescription
modelMODELDiffusion model that receives the enabled LoRAs in row order.
clipoptCLIPOptional CLIP model. When disconnected, LoRAs are applied only to the diffusion model.

Outputs (2)

NameTypeDescription
MODELMODELModel after applying all enabled LoRAs in order.
CLIPCLIPModified CLIP when connected; otherwise None.