LoraThree
The retired three-LoRA stack you'll still find in old workflows
- model
- clip
- MODEL
- CLIP
- TRIGGERS
First, the honest headline: LoraThree is deprecated. The source literally carries the comment "deprecated 2024-08-22 / do not use anymore." The author kept it registered so older workflows don't break, which is exactly why you might have just landed here - you loaded a shared workflow, ComfyUI complained about a missing node, you installed the pack, and there it is. If you're building something new, use LoRA S5 (LoraStackFiveSimple) from the same pack instead. If you're just trying to keep an old graph alive, read on - this node still runs fine.
What it is
A three-slot LoRA stack. It takes a MODEL and CLIP, applies up to three LoRAs in sequence, and outputs the blended MODEL, CLIP, and a TRIGGERS string. It's the more feature-rich ancestor of LoRA S5: instead of one shared strength, each LoRA gets a separate model strength and clip strength, plus its own explicit trigger "preset" dropdown. That split-strength control is the one thing S5 dropped, and it's the only real reason to miss this node.
How it works
Each slot is four inputs: the LoRA file, a preset file, a model strength (l1_mstr), and a clip strength (l1_cstr). On run it loads each selected .safetensors and patches model and clip via comfy.sd.load_lora_for_models with those two strengths independently - so you can run the model hot while keeping the clip influence light, which some character LoRAs genuinely prefer.
The trigger system works off the preset dropdown, which scans your whole loras folder for files ending in .txt or .preset and lists them (plus "None"). Pick one and the node reads its first line, wraps it in parentheses, and joins the three results with , \n\n - meaning the TRIGGERS output is basically prompt-ready, emphasis included. That's a deliberate format choice: (word1, word2) style emphasis is the standard ComfyUI way to boost a token.
Inputs and outputs
- model, clip - your base pipeline.
- lora1 / lora2 / lora3 - dropdowns of your installed LoRAs, plus "None".
- l1_preset … l3_preset - the trigger preset dropdown (
.txt/.presetfiles). - l1_mstr … l3_mstr - model-side strength, default 1.0, −16 to 16.
- l1_cstr … l3_cstr - clip-side strength, same range.
- Outputs MODEL, CLIP, TRIGGERS.
Installing it
Part of the ComfyKit Custom Nodes pack (bobmagicii/comfykit-custom-nodes). Via ComfyUI Manager, search "ComfyKit Custom Nodes"; or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bobmagicii/comfykit-custom-nodes
Restart afterwards. There's no requirements.txt and nothing to download - the whole pack is plain Python over ComfyUI's core modules.
Troubleshooting
A few things to expect. Like its sibling loaders, IS_CHANGED returns a constant, so the node always re-executes on every queue - you won't get node caching on it. If a trigger preset file is missing, the node logs a warning and just skips that LoRA's triggers rather than failing. And the usual LoRA rules still apply: missing trigger words, over-1.0 strengths, and architecture mismatches are the top three reasons a stack "does nothing." Since this node is deprecated, don't expect bugfixes - if something misbehaves, migrate the graph to LoRA S5 and move on.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora1 | COMBO | 1 options: None | |
| l1_preset | COMBO | 1 options: None | |
| l1_mstr | FLOAT | 1.0-16–16 | — |
| l1_cstr | FLOAT | 1.0-16–16 | — |
| lora2 | COMBO | 1 options: None | |
| l2_preset | COMBO | 1 options: None | |
| l2_mstr | FLOAT | 1.0-16–16 | — |
| l2_cstr | FLOAT | 1.0-16–16 | — |
| lora3 | COMBO | 1 options: None | |
| l3_preset | COMBO | 1 options: None | |
| l3_mstr | FLOAT | 1.0-16–16 | — |
| l3_cstr | FLOAT | 1.0-16–16 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| TRIGGERS | STRING | — |