LoRA Group (Model Only) π Just Nodes
Twelve LoRAs in One Node β and Yes, \"Model Only\" Actually Means Something
- model
- model
A LoRA stacker is one of those nodes you don't think you need until your graph has six purple wires zig-zagging across it and you can't remember which LoraLoaderModelOnly carries the lightning adapter. This one collapses up to twelve of them into a single box with toggles, and it ships in a small MIT-licensed pack, ComfyUI-Just-Nodes by Arroz-11 - about as low-profile as custom node packs get.
What it actually does
LoraGroupModelOnly_JN takes a MODEL, applies up to twelve LoRAs to it one after another, and hands the MODEL back. Nothing else in the graph changes and there's no new type to learn.
Each row is applied by calling ComfyUI's core LoraLoaderModelOnly class internally - the pack doesn't reimplement LoRA patching, it just loops. Whatever core does for weight merging or precision, you get here, and core fixes come along for free.
The bit that matters: LoraLoaderModelOnly patches the diffusion model and not the text encoder. Many LoRAs ship adapters for both the CLIP and UNet halves; this node only ever applies the UNet half. When the LoRA is purely visual - a style, a lighting tweak, a step-distillation adapter - that's what you want. On a character LoRA that leaned on its text encoder, the trigger word lands softer than in a normal Load LoRA node. That's not a bug, it's the design - and it's behind a huge share of "my LoRA isn't working" threads.
Where it shines: Wan and LTX video workflows stuffed with Lightning/distill LoRAs, and any setup where you flip style LoRAs on and off while iterating. Order is a real dial - more structural LoRAs usually want to come first.
The inputs and outputs
model(MODEL, required) - the checkpoint out of your loader.loras(STRING, required, defaults to[]) - not something you type. It's a serialization channel the frontend writes JSON into.modelout (MODEL) - feed it to your sampler, or into further model patching.
Everything you actually touch lives in the node body as widgets, which get written into that loras string as {lora, weight, enabled} rows: a note header per row (click to rename or colour it - label a row "lightning 4-step" and future-you doesn't have to open the dropdown), an On/Off toggle that keeps the file and weight but skips loading, the LoRA dropdown with a weight field (step 0.1, range β100 to 100), and Remove LoRA / + Add LoRA / Refresh LoRA list buttons. Notes, colours and toggle states save into the workflow, so whoever opens your graph can read what each row was for.
Installing it
ComfyUI Manager β search "Just Nodes" β install β restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Arroz-11/ComfyUI-Just-Nodes.git
The node appears under the π Just Nodes category. No requirements.txt, no model downloads - the pack only imports what ComfyUI already ships (torch, numpy, PIL, folder_paths, aiohttp). A rarity worth savouring: installing this cannot break your environment.
Where people get burned
"LoRA 1: file missing. Refresh the list and select an existing LoRA." A hard error at queue time, not a warning. Every selected filename is checked against models/loras, so renaming a file, moving it into a subfolder, or opening someone else's workflow stops the run until you fix that row. Click Refresh LoRA list - it updates the dropdowns without clobbering your other selections, and marks unresolvable rows Β· missing.
"Refresh failed Β· click to retry." That button hits a route the pack registers at server startup. If you updated the pack and only reloaded the browser tab, restart the ComfyUI server, not just the page.
Weight 0 quietly skips the row. Documented behaviour, and it will confuse you once. Same for an empty row, same for a row toggled Off. If a LoRA "isn't doing anything," check the weight before blaming the file. And thirteen rows is an error, not a warning - the cap is enforced in Python, so don't hand-edit rows into the workflow JSON.
Your CLIP never got patched. If a character LoRA looks weak or its trigger word seems inert, swap that row for a core Load LoRA node and compare on a fixed seed. If the output changes, the LoRA needed its text-encoder half and this node isn't the right tool for it.
Nodes 2.0. The live sore spot in this corner of the ecosystem: rgthree's Power Lora Loader has been fighting Nodes 2.0 breakage since late 2025, with toggles not redrawing until you resize the node. This pack's README explicitly claims support for both the classic canvas and Nodes 2.0, and its frontend uses the newer extensionManager APIs - a claim clearly built toward, not ignored.
Would I reach for it
If your LoRAs are model-only by nature - distillation, speed, style - this is a tidy node that does one thing and saves its state properly. If you need CLIP weights alongside model weights, or per-row trigger-word lookup, go get rgthree's Power Lora Loader instead; it's stronger and more people can help you with it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| loras | STRING | [] | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |