Nodes/ComfyUI-ClybsChromaNodes/ClybAdaptiveLoraLoader
ComfyUI Node

ClybAdaptiveLoraLoader

Stack 20 LoRAs in one node, without the chain

By Clybius·Created about a year ago·Updated about a month ago· 13
ClybAdaptiveLoraLoader
  • model
  • clip
  • MODEL
  • CLIP
lora_name_1
strength_model_11.00
strength_clip_11.00
lora_name_2none
strength_model_21.00
strength_clip_21.00
lora_name_3none
strength_model_31.00
strength_clip_31.00
lora_name_4none
strength_model_41.00
strength_clip_41.00
lora_name_5none
strength_model_51.00
strength_clip_51.00
lora_name_6none
strength_model_61.00
strength_clip_61.00
lora_name_7none
strength_model_71.00
strength_clip_71.00
lora_name_8none
strength_model_81.00
strength_clip_81.00
lora_name_9none
strength_model_91.00
strength_clip_91.00
lora_name_10none
strength_model_101.00
strength_clip_101.00
lora_name_11none
strength_model_111.00
strength_clip_111.00
lora_name_12none
strength_model_121.00
strength_clip_121.00
lora_name_13none
strength_model_131.00
strength_clip_131.00
lora_name_14none
strength_model_141.00
strength_clip_141.00
lora_name_15none
strength_model_151.00
strength_clip_151.00
lora_name_16none
strength_model_161.00
strength_clip_161.00
lora_name_17none
strength_model_171.00
strength_clip_171.00
lora_name_18none
strength_model_181.00
strength_clip_181.00
lora_name_19none
strength_model_191.00
strength_clip_191.00
lora_name_20none
strength_model_201.00
strength_clip_201.00

If you've ever chained five LoraLoader nodes in a row because you wanted a style, a character, and a detail LoRA all at once, this is the node that asks why you're doing it in the slow way. ClybAdaptiveLoraLoader stacks up to 20 LoRAs in a single node, with an independent strength_model and strength_clip per slot, negative strengths allowed. It's built for the Chroma habit of running several Flux LoRAs on one base - Chroma famously eats Flux LoRAs extremely well - but it works on any model you throw at it.

How it works

The mechanical trick is in how it applies them. ComfyUI's built-in chain loader clones the model once per LoRA; this node clones the model exactly once and merges every slot's patches into that single clone. If you're stacking six adapters, that's six clones saved per queue. It also caches each LoRA file's parsed weights per slot (keyed by file path), so re-running the same workflow skips re-reading files from disk. Swap a LoRA in a slot and the cache for that slot is dropped automatically - no stale weights.

The UI does the "adaptive" part: a small JS frontend reveals lora_name_2 only after you set slot 1 to a real LoRA, then lora_name_3, and so on, up to the cap of 20. Set a slot back to "none" and the trailing widgets tuck away. Hidden widget values survive workflow save/load, so sharing a packed workflow doesn't silently drop slots.

The inputs that matter

  • model / clip - the MODEL and CLIP pair you're patching. Both come back out modified.
  • lora_name_1..20 - pick the LoRA, or "none" to skip a slot.
  • strength_model_N - how hard the patch hits the diffusion model. This is the one that decides how visible the LoRA is. Goes negative if you want to subtract a LoRA's effect (a real technique for style subtraction).
  • strength_clip_N - how hard it hits the CLIP text encoder. Often you want this lower than strength_model (Flux-style LoRAs often ship with a clip strength well below 1.0).

Two behaviors worth knowing: a slot with both strengths at 0 is skipped entirely, and slots are applied in order (lowest number first), so LoRA stacking order matters exactly as much as it does in the chain loader.

Outputs and wiring

Outputs are the patched MODEL and CLIP - wire them straight into your KSampler and CLIP Text Encode as you would any loaded model. In a Chroma workflow, this is the natural place to combine a base style LoRA with one or two subject LoRAs before the sampler.

Installing

Part of the ComfyUI-ClybsChromaNodes pack; nothing extra to install beyond ComfyUI itself:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/Clybius/ComfyUI-ClybsChromaNodes.git
# restart ComfyUI

Or ComfyUI Manager → search "ComfyUI-ClybsChromaNodes". The LoRA dropdowns read from your normal models/loras folder - no model files are downloaded by the pack.

Common issues

Two things catch people. First, the node is flagged EXPERIMENTAL in the code, so it can lag behind ComfyUI internals after a big update - if it throws on load, update the pack before blaming your workflow. Second, the dynamic slot UI only reveals the next slot after you pick a LoRA in the previous one; if you're staring at a node with no lora_name_2 widget, that's not a bug, that's the adaptive bit doing its job. And remember the ordering rule: if a LoRA combination looks wrong, try swapping slot order before touching strengths.

Categoryloaders

Inputs (62)

NameTypeDefaultDescription
modelMODELThe diffusion model the LoRA will be applied to.
clipCLIPThe CLIP model the LoRA will be applied to.
lora_name_1COMBOThe name of the LoRA.
strength_model_1FLOAT1.00-100–100How strongly to modify the diffusion model. This value can be negative.
strength_clip_1FLOAT1.00-100–100How strongly to modify the CLIP model. This value can be negative.
lora_name_2optCOMBOnone1 options: none
strength_model_2optFLOAT1.00-100–100
strength_clip_2optFLOAT1.00-100–100
lora_name_3optCOMBOnone1 options: none
strength_model_3optFLOAT1.00-100–100
strength_clip_3optFLOAT1.00-100–100
lora_name_4optCOMBOnone1 options: none
strength_model_4optFLOAT1.00-100–100
strength_clip_4optFLOAT1.00-100–100
lora_name_5optCOMBOnone1 options: none
strength_model_5optFLOAT1.00-100–100
strength_clip_5optFLOAT1.00-100–100
lora_name_6optCOMBOnone1 options: none
strength_model_6optFLOAT1.00-100–100
strength_clip_6optFLOAT1.00-100–100
lora_name_7optCOMBOnone1 options: none
strength_model_7optFLOAT1.00-100–100
strength_clip_7optFLOAT1.00-100–100
lora_name_8optCOMBOnone1 options: none
strength_model_8optFLOAT1.00-100–100
strength_clip_8optFLOAT1.00-100–100
lora_name_9optCOMBOnone1 options: none
strength_model_9optFLOAT1.00-100–100
strength_clip_9optFLOAT1.00-100–100
lora_name_10optCOMBOnone1 options: none
strength_model_10optFLOAT1.00-100–100
strength_clip_10optFLOAT1.00-100–100
lora_name_11optCOMBOnone1 options: none
strength_model_11optFLOAT1.00-100–100
strength_clip_11optFLOAT1.00-100–100
lora_name_12optCOMBOnone1 options: none
strength_model_12optFLOAT1.00-100–100
strength_clip_12optFLOAT1.00-100–100
lora_name_13optCOMBOnone1 options: none
strength_model_13optFLOAT1.00-100–100
strength_clip_13optFLOAT1.00-100–100
lora_name_14optCOMBOnone1 options: none
strength_model_14optFLOAT1.00-100–100
strength_clip_14optFLOAT1.00-100–100
lora_name_15optCOMBOnone1 options: none
strength_model_15optFLOAT1.00-100–100
strength_clip_15optFLOAT1.00-100–100
lora_name_16optCOMBOnone1 options: none
strength_model_16optFLOAT1.00-100–100
strength_clip_16optFLOAT1.00-100–100
lora_name_17optCOMBOnone1 options: none
strength_model_17optFLOAT1.00-100–100
strength_clip_17optFLOAT1.00-100–100
lora_name_18optCOMBOnone1 options: none
strength_model_18optFLOAT1.00-100–100
strength_clip_18optFLOAT1.00-100–100
lora_name_19optCOMBOnone1 options: none
strength_model_19optFLOAT1.00-100–100
strength_clip_19optFLOAT1.00-100–100
lora_name_20optCOMBOnone1 options: none
strength_model_20optFLOAT1.00-100–100
strength_clip_20optFLOAT1.00-100–100

Outputs (2)

NameTypeDescription
MODELMODELThe modified diffusion model.
CLIPCLIPThe modified CLIP model.