VRGDG Optional Multi LoRA Model Only
Stack Twenty LoRAs, Safely, Without Breaking Someone Else's Workflow
- model
- first_pass_model
- second_pass_model
- lora_names
VRGDG_OptionalMultiLoraModelOnly applies up to 20 model-only LoRAs to a checkpoint, with the twist that every slot defaults to [none] - so a shared workflow loads cleanly even for people who don't own your LoRA files. It also doubles as an LTX two-pass strength splitter, handing you two models from one stack.
The node's own description nails the design goal: "Defaults to [none], so shared workflows do not warn about missing LoRA files." That's the killer feature, and it's one the ecosystem needs. Any ComfyUI regular has downloaded a workflow that screams about a missing LoRA in lora_1 the instant it loads, even when the node's toggle is off. This node sidesteps the whole class of problem by making "no LoRA here" the natural default state - [none] is a valid choice, not an error.
Inputs that matter
model- the base checkpoint. Model-only LoRA means the LoRAs patch the diffusion model itself, not the text encoder - the right call for modern video models like LTX, which use a big LLM text encoder you generally don't want to touch.use_custom_loras- the master switch. Off (default) passes the model through completely unchanged and ignores every slot. This is the "safe to share" mode.lora_count- how many slots to show (0–20). Zero applies none.ltx_two_pass_mode- the LTX two-pass behavior. On (default), the node outputs two models:first_pass_modelat half strength andsecond_pass_modelat full strength.lora_1…lora_20- the LoRA pickers, each defaulting to[none], each with its ownstrength_N(full-strength value; in two-pass mode the first pass uses half of it).
Outputs: first_pass_model, second_pass_model, and lora_names (the applied names as a string, handy for logging or filename prefixes).
The two-pass trick
LTX's best-looking results come from a two-stage render: draft at low strength, then refine at full strength - the model family's multiscale approach in workflow form. This node bakes that in: wire first_pass_model into a low-strength draft pass and second_pass_model into the refine pass, and your LoRA stack applies coherently to both without you managing two separate LoRA loaders. Half-strength first, full-strength second is a sensible default for a style/character LoRA that's present but not overwhelming in the draft.
Why "optional" matters for sharing
If you publish or share graphs, this is the LoRA node to use. Everyone who opens your workflow gets a clean load - no missing-file warnings, no "install my 14 LoRAs first" onboarding - and can enable use_custom_loras if they've got the files. It's a small design choice with a big effect on whether a shared graph actually gets used.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
Restart ComfyUI; it's under VRGDG/Loaders. ComfyUI Manager: search vrgamedev. No extra downloads - it loads whatever LoRAs you already have.
Honest note
Model-only LoRAs are the right kind for LTX but the wrong kind for older SD/SDXL workflows that expect CLIP-encoder patches - don't reach for this node in a 1.5 graph. And remember the strengths are baked per-slot: if you want a different strength for first vs second pass per LoRA (say, 0.3 and 1.2), that's exactly what the sibling node VRGDG_OptionalMultiLoraTwoPassStrengths is for.
Inputs (44)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| use_custom_loras | BOOLEAN | false | Off passes the model through unchanged and ignores all LoRA slots. |
| lora_count | INT | 00–20 | How many LoRA slots to show and apply. Zero applies none. |
| ltx_two_pass_mode | BOOLEAN | true | When enabled, first_pass_model uses half strength and second_pass_model uses full strength. |
| lora_1 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_1 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_2 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_2 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_3 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_3 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_4 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_4 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_5 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_5 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_6 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_6 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_7 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_7 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_8 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_8 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_9 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_9 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_10 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_10 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_11 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_11 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_12 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_12 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_13 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_13 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_14 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_14 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_15 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_15 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_16 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_16 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_17 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_17 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_18 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_18 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_19 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_19 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
| lora_20 | COMBO | [none] | Choose [none] to leave this slot unused. |
| strength_20 | FLOAT | 1.00-100–100 | Full-strength value. In LTX two-pass mode, first pass uses half of this. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| first_pass_model | MODEL | — |
| second_pass_model | MODEL | — |
| lora_names | STRING | — |