Nodes/FiL_Design_ImageMind/🧬 LoRA Loader
ComfyUI Node

🧬 LoRA Loader

Stack every LoRA in your workflow from one node

By FiL-Design-Ai·Created 2 months ago·Updated 2 days ago· 3
🧬 LoRA Loader
  • model
  • clip
  • model
  • clip
  • triggers
  • label
lora_list
filter_pattern
strength_model1.00
strength_clip1.00
skip_on_errortrue

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 the trainedWords/tags inside .civitai.info / .json), concatenates them, and emits them on triggers. No more digging through Civitai pages to remember whether this one needs ghibli style typed 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_error on 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.
  • triggers comes back empty - there's no sidecar .txt/.civitai.info/.json next to that LoRA. The node can only aggregate what's on disk; files downloaded outside Civitai often carry nothing.
  • You wired neither model nor clip - 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.
Category🎨 FiL Design/🧰 Tools

Inputs (7)

NameTypeDefaultDescription
lora_listSTRINGList of LoRA filenames to cycle through (one per line). Supports inline weights: 'my_lora.safetensors:0.8:0.5'.
filter_patternSTRINGWildcard (e.g. '*cyberpunk*'). Left empty the whole stack runs; set, only stack entries matching it are applied.
strength_modelFLOAT1.00-10–10Default MODEL strength (overridden by inline weight if provided).
strength_clipFLOAT1.00-10–10Default CLIP strength (overridden by inline weight if provided).
skip_on_errorBOOLEANtrueIf a LoRA file fails to load, log warning and skip to next LoRA instead of crashing queue.
modeloptMODELInput diffusion MODEL to apply the active LoRA adapter to.
clipoptCLIPInput CLIP encoder to apply the active LoRA adapter to.

Outputs (4)

NameTypeDescription
modelMODELMODEL signal with all active stacked LoRAs applied.
clipCLIPCLIP signal with all active stacked LoRAs applied.
triggersSTRINGAggregated trigger words from all active LoRA adapters.
labelSTRINGFormatted watermark label summarizing applied LoRA stack.