Nodes/AAA Metadata System/Multi-LoRA Loader (Model Only)
ComfyUI Node

Multi-LoRA Loader (Model Only)

The one Multi-LoRA loader that works with any model

By EricRollei·Created 10 months ago·Updated 9 months ago· 13
Multi-LoRA Loader (Model Only)
  • model
  • model
  • prompt
  • prompt_with_triggers
  • loaded_loras_info
  • all_trigger_words
  • filter_info
  • filtered_loras_list
prompt
search_directory
search_filename
search_categoryAny
search_trigger_word
filter_architectureAny
min_rating0
refresh_listsfalse
query_civitaifalse
force_civitai_fetchfalse
trigger_positionfront
trigger_separator,
lora_1_enablefalse
lora_1_nameNone
lora_1_strength1.00
lora_2_enablefalse
lora_2_nameNone
lora_2_strength1.00
lora_3_enablefalse
lora_3_nameNone
lora_3_strength1.00
lora_4_enablefalse
lora_4_nameNone
lora_4_strength1.00
lora_5_enablefalse
lora_5_nameNone
lora_5_strength1.00
lora_6_enablefalse
lora_6_nameNone
lora_6_strength1.00
lora_7_enablefalse
lora_7_nameNone
lora_7_strength1.00
lora_8_enablefalse
lora_8_nameNone
lora_8_strength1.00

Somewhere between "one LoRA per loader node" and "a whole platform-specific loader family" there's this node: the generalist. Multi-LoRA Loader (Model Only) takes a MODEL and no CLIP, applies up to eight LoRAs to it, and returns a model plus a trigger-word-aware prompt. No CLIP in, no CLIP out - that's the whole point.

Why would you want that? Because plenty of modern models don't route their text conditioning through a CLIP object in a way you'd patch with the standard LoraLoader. Video models like Wan, and most diffusion models where you're only nudging the UNet/DiT weights, are exactly this case. This loader is the "if you don't know which one you need, or you have an odd model, this one" option of the pack - and it's also the most filter-heavy of them all.

How it works

Unlike the platform-specific siblings, which hardcode a directory filter, this one gives you the full search toolbox:

  • search_directory and search_filename - comma-separated substring matches on paths and filenames (prefix a term with a dash to exclude, the classic pattern).
  • search_category - filter by a category list (style, character, pose, clothing, effect…).
  • search_trigger_word - match against trigger words from the pack's local LoRA database.
  • filter_architecture - SD1.5, SDXL, Flux, Pony, Illustrious, Noobai, SD3.5, HiDream, Stable Cascade, and more. It sniffs architecture hints from filenames and paths and lets you cut the list down hard.
  • min_rating - 0–5, from the DB's quality ratings.

Then the eight slots (lora_1_enable / lora_1_name / lora_1_strength, up to slot 8). Just model strength per slot - there's no CLIP strength here because there's no CLIP.

The trigger-word machinery is the same as the rest of the family: query_civitai fetches trigger words from the Civitai API when the local DB has none, force_civitai_fetch bypasses the cache, and trigger_position/trigger_separator control how injected words land in your prompt.

Outputs

  • model - your patched model, straight into the sampler.
  • prompt_with_triggers - prompt plus injected trigger words; feed to your encoder.
  • prompt - your prompt back unchanged (useful if you only want the loader for the model patch).
  • filter_info and filtered_loras_list - the reports that tell you what your filters actually matched.
  • all_trigger_words and loaded_loras_info - every trigger found and a per-LoRA load summary.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt

Restart ComfyUI (or install "AAA Metadata System" from ComfyUI Manager). No model downloads. CC BY-NC licensed for non-commercial use; commercial use needs a license from the author.

Common issues

  • The dropdown lists everything, filters change nothing visible - expected. Filters apply at execution time, and the refresh_lists tooltip says it plainly: "Filters are applied during execution - check filter_info output to see results." Toggle refresh_lists to rescan the filesystem.
  • filter_architecture hides nothing - architecture is guessed from names/paths; badly-named LoRAs fall through to "Unknown" and match Any only. Don't rely on it as a hard wall.
  • No triggers injected - DB entry missing and query_civitai off. Enable it, or type the trigger yourself.

It's the least glamorous node in the family - no cute platform branding, no special handling - which is exactly why it's the one to reach for when your model doesn't fit the pre-made buckets. If your LoRAs live in a flat pile and you'd rather filter than reorganize folders, start here.

Categoryloaders/multi-lora

Inputs (37)

NameTypeDefaultDescription
modelMODEL
promptSTRING
search_directorySTRINGSearch in directory/path names. Use commas to separate multiple terms.
search_filenameSTRINGSearch in LoRA filenames. Use commas to separate multiple terms.
search_categoryCOMBOAny26 options: Any, unknown, style, character, concept, pose, +20
search_trigger_wordSTRINGSearch in trigger words from database. Use commas to separate multiple terms.
filter_architectureCOMBOAny14 options: Any, Unknown, SD1.5, SDXL, Flux, Pony, +8
min_ratingINT00–5Minimum quality rating from database (0 = show all)
refresh_listsBOOLEANfalseToggle to refresh. Filters are applied during execution - check filter_info output to see results.
query_civitaiBOOLEANfalseAutomatically query Civitai for trigger words when LoRA has none
force_civitai_fetchBOOLEANfalseForce fetch from Civitai even if tags already exist
trigger_positionCOMBOfront2 options: front, back
trigger_separatorSTRING,
lora_1_enableBOOLEANfalse
lora_1_nameCOMBONone1 options: None
lora_1_strengthFLOAT1.00-10–10
lora_2_enableBOOLEANfalse
lora_2_nameCOMBONone1 options: None
lora_2_strengthFLOAT1.00-10–10
lora_3_enableBOOLEANfalse
lora_3_nameCOMBONone1 options: None
lora_3_strengthFLOAT1.00-10–10
lora_4_enableBOOLEANfalse
lora_4_nameCOMBONone1 options: None
lora_4_strengthFLOAT1.00-10–10
lora_5_enableBOOLEANfalse
lora_5_nameCOMBONone1 options: None
lora_5_strengthFLOAT1.00-10–10
lora_6_enableBOOLEANfalse
lora_6_nameCOMBONone1 options: None
lora_6_strengthFLOAT1.00-10–10
lora_7_enableBOOLEANfalse
lora_7_nameCOMBONone1 options: None
lora_7_strengthFLOAT1.00-10–10
lora_8_enableBOOLEANfalse
lora_8_nameCOMBONone1 options: None
lora_8_strengthFLOAT1.00-10–10

Outputs (7)

NameTypeDescription
modelMODEL
promptSTRING
prompt_with_triggersSTRING
loaded_loras_infoSTRING
all_trigger_wordsSTRING
filter_infoSTRING
filtered_loras_listSTRING