💀Prepack Loras
Three LoRAs in one node, with the trigger-text baggage handled for you
- model
- clip
- model
- clip
- lora_path
- lora_text
LoRAs are how you get a specific character, style, or concept into a generation - small adapter files that patch the model's behavior instead of replacing it. The catch is that most workflows need several at once (style + character + a detail booster), and each one wants a strength setting for the model and a separate one for the CLIP text encoder. Vanilla ComfyUI makes you stack a LoraLoader per file. The 💀Prepack Loras node does up to three in a single node - and it has one trick the vanilla loaders don't: it can pull in the trigger-word text documents that often ship next to a LoRA.
That last part is the sleeper feature. Load a LoRA, and you can also select the .txt file that lives beside it in a same-named folder, and the node outputs that document's content as text you can pipe into your prompt - so the trigger tags a LoRA author wants in the prompt end up there without you hand-typing them.
How it works
The node takes model and clip inputs and up to three LoRA slots (lora_name_1 through lora_name_3). Each slot has its own pair of strengths - strength_model for the diffusion model and strength_clip for the text encoder - plus a lora_text field where the associated document gets selected. The dropdowns populate from whatever's in your loras folder, and "None" skips a slot.
It applies each LoRA through ComfyUI's own load_lora_for_models, so the mechanism is the standard one - a LoRA here behaves exactly like a LoRA on a native loader, with the same rules of compatibility (a LoRA trained for SDXL won't work on Flux, etc.). The node caches loaded weights, so stacking the same LoRA repeatedly doesn't re-read the file from disk every run.
The four outputs are where it gets interesting:
modelandclip- the patched pair, wired onward into your CLIP encode and sampler.lora_path- a formatted STRING like<lora:filename:1.00>per applied LoRA. This is a convenience summary you can push into a save node's metadata or a pipe.lora_text- the concatenated content of the selected text documents, comma-joined. Wire this into your prompt text before encoding and the trigger words ride along automatically.
Where people get burned
The lora_text field is a plain string input that gets auto-populated by the pack's bundled HTTP endpoint - it scans for a folder named after the LoRA file and lists .txt files in it. If that auto-population doesn't happen, the folder just doesn't exist next to your LoRA, and you can type the trigger words manually instead. Not a bug, just missing metadata on the LoRA's side.
Strength is the other classic trap. The sliders allow −100 to +100, but the tooltip is clear: the typical range is −2.0 to 2.0, and 0 disables. Crank a LoRA to 2.0+ and you'll get a garish over-applied mess - the "default 1.0 is often too strong, 0.5–0.8 is common" rule from the LoRA community applies here exactly. If one LoRA seems to swallow the others, that's a stacking-strength problem, not a node problem.
Installing it
It's in the Prepack pack:
cd ComfyUI/custom_nodes
git clone https://github.com/S4MUEL-404/ComfyUI-Prepack.git
pip install -r ComfyUI-Prepack/requirements.txt
Or search "Prepack" in ComfyUI Manager. Dependencies are just PyTorch, NumPy, and Pillow. Restart, find it under 💀Prepack. No model downloads - just have your LoRAs in ComfyUI/models/loras/ as usual.
If a LoRA silently does nothing, check the console for a [Prepack] Warning: Failed to load LoRA line - the node skips a LoRA it can't load rather than crashing, and a skipped LoRA looks exactly like a strength-0 LoRA.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The diffusion model to apply LoRA adapters to. | |
| clip | CLIP | The CLIP encoder to apply LoRA adapters to. | |
| lora_name_1 | COMBO | Select the first LoRA file to apply (choose 'None' to skip). | |
| strength_model_1 | FLOAT | 1.00-100–100 | Strength for the diffusion model. Typical range [-2.0, 2.0]; 0 disables. |
| strength_clip_1 | FLOAT | 1.00-100–100 | Strength for the CLIP encoder. Typical range [-2.0, 2.0]; 0 disables. |
| lora_text_1 | STRING | None | Select text document associated with the first LoRA (automatically populated). |
| lora_name_2opt | COMBO | None | Select the second LoRA file to apply (optional, choose 'None' to skip). |
| strength_model_2opt | FLOAT | 0.00-100–100 | Strength for the diffusion model. Typical range [-2.0, 2.0]; 0 disables. |
| strength_clip_2opt | FLOAT | 1.00-100–100 | Strength for the CLIP encoder. Typical range [-2.0, 2.0]; 0 disables. |
| lora_name_3opt | COMBO | None | Select the third LoRA file to apply (optional, choose 'None' to skip). |
| strength_model_3opt | FLOAT | 0.00-100–100 | Strength for the diffusion model. Typical range [-2.0, 2.0]; 0 disables. |
| strength_clip_3opt | FLOAT | 1.00-100–100 | Strength for the CLIP encoder. Typical range [-2.0, 2.0]; 0 disables. |
| lora_text_2opt | STRING | None | Select text document associated with the second LoRA (automatically populated). |
| lora_text_3opt | STRING | None | Select text document associated with the third LoRA (automatically populated). |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | The diffusion model with up to 3 LoRAs applied. |
| clip | CLIP | The CLIP model with up to 3 LoRAs applied. |
| lora_path | STRING | Text description of applied LoRAs and their strengths (can be empty if no LoRAs applied). |
| lora_text | STRING | Content of selected text documents from all LoRAs, separated by commas (can be empty if no texts selected). |