LoRA Stack
Sixty rows, three modes, and no more chain of LoraLoader nodes
- lora_stack
Five LoRAs means five LoraLoader nodes chained model-through-model, each one re-patching and each one a place to mistype a strength. LoRA Stack [SML2] replaces the chain with a table: one node holding the rows, one wire out to LoRA Stack Apply, and the whole setup savable as a preset.
What it holds
Rows of LoRA files, up to 60 per node, each with a strength - one or two depending on the mode. Per row you get a bypass toggle that keeps its values (so you can A/B a LoRA without losing the 0.65 you tuned), arrows to reorder, a rename button, a source/integrity panel, and a delete. Repeated files and negative strengths are both fine. Empty rows are ignored at execution, which means you can keep four spare slots in a preset without them erroring.
There's one shared Mode bar and it applies to every row in the node:
- Model (default) -
STRpatches all compatible diffusion-model weights, including audio weights. CLIP passes through untouched. - CLIP split -
STRfor the model plus a separateCLIP STR. SetSTRto 0 for a CLIP-only row, orCLIP STRto 0 for a model-only row. - Audio (LTX) -
STRfor non-audio model keys,AUDIO STRfor keys containingaudio, including cross-modal ones. Both patch the same LTX audio-video model; CLIP passes through.
Switching modes keeps the hidden strengths. That's deliberate: flip back and your values are still there.
The input and output
One input: configuration, the STRING the editor writes. One output: lora_stack, of type SML2_LORA_STACK - a custom type, which means it only connects to LoRA Stack Apply, not to anything else. And note what's missing: there's no incoming stack socket, so you can't chain two stacks together. All rows live in one node.
Presets save the mode and all rows - order, bypass state, source/hash metadata, every strength - into templates/lora-stack/, kept separate from model presets. The Local integrity policy stays outside the preset, which makes sense: it's a machine-level policy, not a setup.
Why a separate Apply node
Because a stack really is just a list. Patching needs a MODEL, and for CLIP strength it needs a CLIP, and for LTX it needs a model with the right audio-video structure. Keeping application separate means you can build the setup once and point it at whichever model/CLIP pair you're running, and it lets the apply step validate everything before touching tensors.
The pack's recommended pipe wiring, for what it's worth: extract model and clip with IO Checkpoint Loader, run them through Apply, then merge the results back into a pipe with a second IO node before conditioning and sampling. Two extra nodes, but it keeps Smart Model Loader's own LoRA section out of the picture so the strengths don't double-apply.
Downloading into an empty row
Neat trick, and the source of it is the pack's Download Manager. Add an empty row, click i, choose CivitAI, and paste only the AIR reference - filename and hash can stay blank. Open in Download Manager, pick the file, queue it, start it. When the download verifies, that same row gets its filename, exact source and SHA-256 filled in automatically, with your strength and ordering intact. Until there's a filename, the row is ignored at execution, so a half-built setup won't break a run.
Installing it
ComfyUI Manager → search Smart Model Loader Nova, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_SmartModelLoader_Nova.git
cd ComfyUI_SmartModelLoader_Nova
python -m pip install -r requirements.txt
ComfyUI's Python environment, restart, then Add Node → 🌒 Smart Model Loader Nova → Tools. Base requirements only; Nunchaku adapters are used if your Nunchaku install is present, but nothing here requires it.
Where people get burned
Architecture mismatch is invisible to this node. An SDXL LoRA on a Flux model doesn't load - the controls can't make an incompatible adapter compatible. This is the oldest LoRA fact there is and it still catches people.
Model mode vs the loader's LoRA section. Smart Model Loader's own LoRA rows apply one shared strength to model and compatible CLIP weights. Use stack Model mode when you want CLIP left alone, and CLIP split when you want two numbers.
Audio (LTX) split needs an LTXAV model. Those split targets are rejected on unrelated models and on Nunchaku backends. If Apply errors about the model, that's why.
Rename doesn't propagate. The ✎ button renames the file and its sidecars, but other nodes and saved presets keep the old filename and you have to reselect. Finish queued prompts first.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| configuration | STRING | {"entries":[],"integrity":"off","mode":"model","version":1} | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lora_stack | SML2_LORA_STACK | — |