LoRA Stack JK๐
Six LoRAs in one node, plus the prompt and metadata for free
- lora_stack
- LORA_STACK
- LORA_PROMPT
- LORA_MetaData
Stacking LoRAs is the thing ComfyUI makes quietly annoying. The stock loader takes exactly one .safetensors, so a "character + style + concept" combo means chaining three loaders and keeping their weights straight. This node is the JakeUpgrade answer: six LoRA slots in one box that also hands you the prompt tag and civitai-style metadata as separate outputs. It's part of the ComfyUI-JakeUpgrade pack, and if you've pulled any of Jake's Wan video or imgen workflows, you've already seen it in the wild.
What it does
CR LoRA Stack JK is a stacker, not an applier. It collects a list of (lora_name, model_weight, clip_weight) tuples - that's the LORA_STACK type - plus two convenience strings. You feed the stack into CR Apply LoRA Stack JK (patches model + CLIP) or CR Apply LoRA Stack Model Only JK (model only). That split is why it exists: one place to configure which LoRAs are active, one wire carrying all of them downstream.
The inputs that matter:
- input_mode -
model_onlyoradvanced. Inmodel_only, slots are skipped unless enabled, and clip weight is forced to 0.0. Inadvanced, a slot only fires when both model and clip weight are non-zero. - lora_1 โฆ lora_6 - the on/off toggle for each of the six slots, next to
lora_name_1โฆ6,model_weight_1โฆ6,clip_weight_1โฆ6. Weight range is โ10 to 10; 0.5โ0.8 is the sane landing zone for most LoRAs, 1.0 often cooks the image. - save_hash - appends the first 12 hex chars of the file's SHA-256 to the metadata output. Slows first run a hair while it hashes a multi-GB file; only useful if you're logging civitai metadata.
Outputs are LORA_STACK, LORA_PROMPT, and LORA_MetaData. The prompt output builds ComfyUI's <lora:name:weight> tags from the filenames, and metadata produces name: [hash] pairs you can drop into your civitai generation data. The optional lora_stack, lora_prompt, and lora_metadata inputs let you chain two stackers - say, a base stack and a conditional addition - into one.
Installing it
JakeUpgrade is one pack that ships a lot of nodes; this is one of them. Install the whole thing:
cd ComfyUI/custom_nodes
git clone https://github.com/jakechai/ComfyUI-JakeUpgrade
cd ComfyUI-JakeUpgrade
# Windows standalone:
install.bat
# or, manual Windows: python_embeded\python.exe -s -m pip install -r requirements.txt
# everyone else:
pip install -r requirements.txt
ComfyUI Manager works too - search "JakeUpgrade", install, restart. No model downloads for this node; it reads whatever's already in ComfyUI/models/loras, which is also what populates the dropdowns.
Troubleshooting
- A LoRA silently never applies. The stacker drops any slot where the enable toggle is off, the name is "None", or the model weight is 0. Check all three before assuming the applier is broken.
- You're feeding an advanced stack into a model-only applier. Fine - clip weights get ignored, but you built the stack with extra inputs you didn't need. Use
model_onlymode for that path. - Manager flags a conflict with IPAdapter_plus. It's this pack's
replacement/folder tripping ComfyUI Manager's conflict check; the README confirms JakeUpgrade never loads those files. Ignore it. - ComfyUI-MultiGPU. The README warns it causes CUDA errors on current ComfyUI - disable it if weird crashes start.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| input_mode | COMBO | model_only | LoRA application mode: model_only or advanced |
| lora_1 | BOOLEAN | false | Enable/disable LoRA 1 |
| lora_name_1 | COMBO | Select LoRA model 1 | |
| model_weight_1 | FLOAT | 1.00-10โ10 | Model weight for LoRA 1 |
| clip_weight_1 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 1 |
| lora_2 | BOOLEAN | false | Enable/disable LoRA 2 |
| lora_name_2 | COMBO | Select LoRA model 2 | |
| model_weight_2 | FLOAT | 1.00-10โ10 | Model weight for LoRA 2 |
| clip_weight_2 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 2 |
| lora_3 | BOOLEAN | false | Enable/disable LoRA 3 |
| lora_name_3 | COMBO | Select LoRA model 3 | |
| model_weight_3 | FLOAT | 1.00-10โ10 | Model weight for LoRA 3 |
| clip_weight_3 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 3 |
| lora_4 | BOOLEAN | false | Enable/disable LoRA 4 |
| lora_name_4 | COMBO | Select LoRA model 4 | |
| model_weight_4 | FLOAT | 1.00-10โ10 | Model weight for LoRA 4 |
| clip_weight_4 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 4 |
| lora_5 | BOOLEAN | false | Enable/disable LoRA 5 |
| lora_name_5 | COMBO | Select LoRA model 5 | |
| model_weight_5 | FLOAT | 1.00-10โ10 | Model weight for LoRA 5 |
| clip_weight_5 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 5 |
| lora_6 | BOOLEAN | false | Enable/disable LoRA 6 |
| lora_name_6 | COMBO | Select LoRA model 6 | |
| model_weight_6 | FLOAT | 1.00-10โ10 | Model weight for LoRA 6 |
| clip_weight_6 | FLOAT | 1.00-10โ10 | CLIP weight for LoRA 6 |
| save_hash | BOOLEAN | false | Include hash in LoRA metadata |
| lora_stackopt | LORA_STACK | Existing LoRA stack to extend | |
| lora_promptopt | STRING | Existing LoRA prompt to extend | |
| lora_metadataopt | STRING | Existing LoRA metadata to extend |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| LORA_STACK | LORA_STACK | โ |
| LORA_PROMPT | STRING | โ |
| LORA_MetaData | STRING | โ |