Nodes/PlagueKind-Nodes/LoRA Loader Stack ( LTX / MiniMax H3 Compatible )
ComfyUI Node

LoRA Loader Stack ( LTX / MiniMax H3 Compatible )

Stack ten LoRAs on LTX-2.3 with separate audio and video strength

By PlagueKind·Created 4 months ago·Updated 3 days ago· 140
LoRA Loader Stack ( LTX / MiniMax H3 Compatible )
  • model
  • clip
  • model
  • clip
modenormal
stack_data[]

LTX-2.3 is the Lightricks model that finally pulled people off Wan - 22B params, and the party trick that matters here: the transformer has separate audio and video branches. Stock LoRA loaders don't know that. They apply every weight uniformly, which is fine for the visual half and blind to the audio half. This node is a 10-slot LoRA stacker that lets you weight the two branches independently, and it doubles as a perfectly normal LoRA loader for everything else.

The pitch is simple: per-slot you get S (master strength), V (video branch multiplier), and A (audio branch multiplier). Effective video strength is S×V, effective audio is S×A. Set A to 0.3 on a style LoRA that's wrecking your dialogue and leave V at 1 - the picture stays, the sound stops getting mangled. That's the thing no ordinary loader can do, and it's the whole reason this node exists.

How it works

The actual node is thin: model + clip in, model + clip out, with a stack_data STRING holding a JSON array of your slots (LoRA name, on/off, S/V/A). The interesting logic lives in how it splits weights. It scans the LoRA's keys and routes anything under diffusion_model.transformer_blocks.* containing audio to the audio branch, everything else to video, then applies each with comfy.lora.load_lora_for_models at S×V and S×A respectively.

The fallback is what makes it useful beyond LTX: an SDXL or Flux LoRA won't match either prefix, so the whole dict gets applied as one slot. It just becomes a normal LoRA stack loader - at effective strength S×V. Worth remembering, because it means V is a second strength knob on non-LTX models and A is ignored.

The frontend (a 567-line JS file) does the heavy lifting: 10 draggable slots, per-slot enable toggles, a searchable picker with folder grouping, and a missing-file warning. It even calls a local /plaguekind/ltx_lora_loader/keycounts endpoint to show how many video vs audio keys each LoRA actually has - the closest thing to a "is this the right kind of LoRA" meter you'll get. The whole stack serializes into stack_data, so it survives save/load and copy-paste of workflows.

What to reach for it for

  • LTX-2.3 LoRA stacks where audio matters - characters, music videos, lipsync, the distilled LoRA (use 1.1, not 1.0, which mumbles out of the first sampler stage).
  • Any multi-LoRA image workflow, since it behaves like rgthree's Power Lora Loader for non-LTX models.
  • Discipline: overweighted LTX-2.3 LoRAs are the leading cause of the "diseased skin" artifact, so keep strength modest and favor the V/A split over cranking S.

Install

ComfyUI Manager (search "PlagueKind-Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/PlagueKind/ComfyUI-PlagueKind-Nodes.git

Restart ComfyUI. No extra dependencies - just torch, comfy.utils, comfy.lora, and the aiohttp that ships with ComfyUI.

Troubleshooting

  • Slot shows 0/0 on the video/audio counts - the LoRA either isn't an LTX LoRA (fine, it'll load whole) or the file's missing. Check the picker's missing-file warning first.
  • Garbage in stack_data - the node catches bad JSON, logs "Failed to parse stack_data", and passes the model through unchanged. Safe, but also silent: check the console if nothing is happening.
  • No effect at all - confirm the slot is enabled (on true). Disabled slots are skipped entirely, and there's no visible indicator in every workflow view.
CategoryPlagueKind/loaders

Inputs (4)

NameTypeDefaultDescription
modelMODEL
modeCOMBOnormal3 options: normal, ltx, minimax
stack_dataSTRING[]
clipoptCLIP

Outputs (2)

NameTypeDescription
modelMODEL
clipCLIP