ComfyUI Node

JoyLTX LoRA Stack

Four LoRA slots in one node, model-only, with a cross-generation safety net

By jlucasmcrell·Created 27 days ago·Updated 24 days ago· 2
JoyLTX LoRA Stack
  • model
  • MODEL
lora_1(none)
strength_11.00
lora_2(none)
strength_20.00
lora_3(none)
strength_30.00
lora_4(none)
strength_40.00

Sticking LoRAs on a model in ComfyUI means a chain of LoraLoader nodes, one per file, each adding its own slot to the graph. JoyLTX LoraStack collapses that to one node with four slots: lora_1 through lora_4, each with a strength. It's model-only - it uses ComfyUI's own LoraLoaderModelOnly underneath - so it works with the LTX-2.5 character and style LoRAs that don't touch the Gemma text encoder. Anything that loads in a plain LoraLoader loads here.

The slots are cheap to leave empty: a slot set to (none) or a strength of exactly 0 costs nothing and is skipped. strength_1 defaults to 1, the rest to 0, so adding a second LoRA is just picking a file and raising its strength. Values range -4 to 4, which is more headroom than you'll usually need - LTX LoRAs are generally applied in the 0.4–1.0 band.

Two things make this worth using over a plain chain. First, the distilled LoRA guidance is baked in: on a dev merge of Joy-LTX 2.5 (the model without the official distill baked), the README and the node agree that 0.4–0.6 is the working range for the distilled LoRA. Second, and this is the one that saves you an evening, the node cross-checks generation. LTX-2.3 and LTX-2.5 LoRAs are not interchangeable, and audio-branch LoRAs are the trap: an LTX-2.3 LoRA with audio keys applied to an LTX-2.5 model transplants the video side but not the audio side, and the pack measured that as garbled or vanishing voices around 30 seconds into a take. If you do it, the node prints a warning naming the file and tells you to use the _VIDEOONLY variant or the 2.5 distilled LoRA. Video-only keys from the other generation are fine and it says so instead of scolding you.

It also reads the model's source path (stamped by JoyLTX Load Model) so it only warns when it can actually tell what generation the model is. Handy detail: VALIDATE_INPUTS is lenient, so a LoRA name that moved into a subfolder gets reported at run time in apply() with "pick it again in slot N" rather than failing at queue time.

Wire your MODEL in, get the same MODEL out, feed the sampler. The one-node pitch is real: a four-LoRA stack that used to be four nodes plus four reroutes is now a single compact block, and the "(none)" slots keep it readable at a glance. If you're only ever applying one LoRA, the stock loader is fine - this earns its place when you're stacking character + style + distill and don't want a six-node rat's nest.

CategoryJoyLTX

Inputs (9)

NameTypeDefaultDescription
modelMODEL
lora_1COMBO(none)1 options: (none)
strength_1FLOAT1.00-4–4
lora_2COMBO(none)1 options: (none)
strength_2FLOAT0.00-4–4
lora_3COMBO(none)1 options: (none)
strength_3FLOAT0.00-4–4
lora_4COMBO(none)1 options: (none)
strength_4FLOAT0.00-4–4

Outputs (1)

NameTypeDescription
MODELMODEL