🧬 LoRA Loader
Stack every LoRA in your workflow from one node
- model
- clip
- model
- clip
- triggers
- label
Stacking LoRAs in stock ComfyUI means chaining one LoraLoader node per file - wire model in, LoRA in, model out, repeat, and if the second one is a dud the whole queue dies mid-load. FiL's LoRA Loader collapses that into one node: a dynamic stack loader that takes a whole list of LoRA filenames, applies them in order to your model and clip, and hands you the trigger words and a watermark label on the side. It's the kind of convenience that's quietly infuriating once you've felt it - you stop hand-wiring five chained loaders and just edit a text list.
There's a layer deeper worth knowing: LoRAs are architecture-bound, so a stack only makes sense on the base it was trained for, and the old 0.5–0.8 weight rule of thumb is SDXL advice that doesn't transfer to every architecture (Z-Image users routinely run 1.0+ because dropping it costs likeness). This node won't police any of that for you - it just applies weights faithfully and lets you stack a few, which is the normal way people actually use LoRAs.
How it works
You type the stack into lora_list, one file per line, and the node applies each through ComfyUI's built-in LoraLoader onto the same incoming model/clip - functionally the same math as a chain of core loader nodes, minus the wiring. The list format is where it gets useful, because weights ride inline on the line:
my_lora.safetensors:0.8:0.5
detail_slider.safetensors:0.6
# disabled_lora.safetensors
<lora:style.safetensors:1.0>
name:model:clip - the second number is the CLIP strength; one number sets both. A line starting with # is a disabled toggle (keep it in the list, flip it on when you want it). The <lora:...> form is accepted too, for the muscle memory from A1111-style syntax.
Two extras make the node feel finished rather than a toy:
filter_pattern- a wildcard (e.g.*cyber*) that restricts which stack lines actually apply. Handy for keeping one big master list and enabling a subset per workflow.- Trigger aggregation - the node reads each LoRA's trigger words from its sidecar files (a
<name>.txt, or thetrainedWords/tagsinside.civitai.info/.json), concatenates them, and emits them ontriggers. No more digging through Civitai pages to remember whether this one needsghibli styletyped in your prompt.
Inputs and outputs that matter
Inputs: lora_list (the stack), model and clip (both optional - model-only wiring is fine and is the norm for Flux/LLM-encoder checkpoints where LoRAs don't touch the text encoder), strength_model / strength_clip as defaults that inline weights override, and skip_on_error (on by default: a corrupt file logs a warning and the stack continues instead of nuking your queue).
Outputs: model and clip with the full stack applied - wire them on to your sampler and text encoder - plus triggers (aggregated trigger words) and label, a formatted summary like LoRA Stack [3]: ... meant for watermark/label display downstream (this pack's sibling nodes love feeding text into image overlays).
One honest heads-up: the README's node table paints this as an auto-cycling adapter switcher (per-run auto_advance, a bypass slot, cycle modes). The shipped node as of v1.1.3 - check the actual schema on your canvas - is the deterministic stack loader above: same list in, same stack out, every run. If you wanted per-run cycling, that's the pack's Model Cycler's job for checkpoints; this one stacks.
Installing FiL_Design_ImageMind
Needs ComfyUI 0.3.60+ (V3 node API) or the nodes won't load. ComfyUI Manager → search FiL_Design_ImageMind → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/FiL-Design-Ai/FiL_Design_ImageMind.git
pip install -r FiL_Design_ImageMind/requirements.txt
Windows portable installs: run install_requirements.bat (it targets python_embeded). Dependencies are light - requests, aiohttp, PyYAML, Pillow, numpy, pydantic - and nothing here downloads model weights or needs an API key. This node doesn't touch the LLM side of the pack at all.
Troubleshooting
- Nothing applied, output label reads "Bypass (None)" - the stack parsed to zero active entries: empty list, all lines
#-disabled, or the filter matched nothing. - A file fails to load - with
skip_on_erroron you get a console warning and the run continues (good for a 30-LoRA folder of mixed provenance). Flip it off when you actually want the crash to tell you which file is broken. triggerscomes back empty - there's no sidecar.txt/.civitai.info/.jsonnext to that LoRA. The node can only aggregate what's on disk; files downloaded outside Civitai often carry nothing.- You wired neither
modelnorclip- the node blocks the run with a clear message telling you to connect one. Model-only is fine for Flux; just don't wire nothing. - "Please select a valid model" style errors elsewhere - check that the LoRA's base architecture actually matches your checkpoint; the loader won't catch that mismatch for you.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_list | STRING | List of LoRA filenames to cycle through (one per line). Supports inline weights: 'my_lora.safetensors:0.8:0.5'. | |
| filter_pattern | STRING | Wildcard (e.g. '*cyberpunk*'). Left empty the whole stack runs; set, only stack entries matching it are applied. | |
| strength_model | FLOAT | 1.00-10–10 | Default MODEL strength (overridden by inline weight if provided). |
| strength_clip | FLOAT | 1.00-10–10 | Default CLIP strength (overridden by inline weight if provided). |
| skip_on_error | BOOLEAN | true | If a LoRA file fails to load, log warning and skip to next LoRA instead of crashing queue. |
| modelopt | MODEL | Input diffusion MODEL to apply the active LoRA adapter to. | |
| clipopt | CLIP | Input CLIP encoder to apply the active LoRA adapter to. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | MODEL signal with all active stacked LoRAs applied. |
| clip | CLIP | CLIP signal with all active stacked LoRAs applied. |
| triggers | STRING | Aggregated trigger words from all active LoRA adapters. |
| label | STRING | Formatted watermark label summarizing applied LoRA stack. |