Power Lora Loader (Eden) π²
One node for all your LoRAs, with a dice roll per strength
- model
- clip
- MODEL
- CLIP
- settings
- strength_1
- strength_2
- strength_3
- strength_4
- strength_5
- strength_6
- strength_7
- strength_8
- strength_9
- strength_10
- strength_11
- strength_12
- strength_13
- strength_14
- strength_15
- strength_16
Stack four LoRAs to get one look and you've got four loader nodes chained in a line, each with two strength fields, and a graph that looks like a fuse box. rgthree's Power Lora Loader fixed that years ago and became one of those nodes people install before anything else. Eden's version is a reimplementation of the same idea with one extra trick: any LoRA's strength can be drawn from a range by a seed, so a workflow explores a strength space instead of one fixed point in it.
How it works
The node draws its own rows in the graph: hit β Add Lora, pick from the list ComfyUI serves at /models/loras, and you get a row with a toggle, a name and a strength. Click the π² on a row and a second line opens where you set min and max. There's a Toggle All switch at the top, and right-clicking a row gives you Move Up and Remove.
Each row serializes into the prompt as a lora_N entry; the Python side reads them in order and calls ComfyUI's own LoraLoader per row, passing the same strength to model and clip. When π² is on, the value is sampled uniformly between min and max - and the random stream isn't shared, it's derived per row from the seed plus the LoRA's file name. That's the detail that makes this usable: add a sixth LoRA, delete the second, reorder the rest, and every other row keeps the strength it had.
The inputs that matter
seed- seeds the strength sampling and nothing else. It has the usual control_after_generate dropdown, so leaving it on randomize gives every image in a queued batch fresh strengths. Queue twenty, keep the ten that landed.model- the diffusion model to apply LoRAs to. Optional, and usefully so: with nothing connected the node just samples strengths and returns them, a lottery you can feed elsewhere.clip- gets the same LoRA at the same strength as the model. Note the limit in that sentence: no separate clip strength. If a LoRA wants 0.6 on the clip and 1.0 on the UNet, this node can't express it and core LoraLoader still can.
The outputs
MODEL and CLIP go where a normal loader's outputs go. The interesting ones are settings and strength_1 β¦ strength_N.
settings is a JSON blob - the seed plus each LoRA's applied strength keyed by file basename, {"seed": 3, "loras": {"style_a": 0.72}}, disabled rows at 0.0. Run it into Save Param Dict (same pack) and every render logs what the dice rolled, which is the difference between a lucky folder of images and a dataset you can reason about later.
The strength_N outputs are one FLOAT per row, named after the LoRA in the UI - wire a sampled strength into a Math node or another loader if you want to use it elsewhere. Remove a row and the outputs compact up, so double-check links after you prune.
Installing it
You install the pack, not the node. In ComfyUI Manager search Eden Comfy Pack, or:
comfy node install eden_comfy_pipelines
Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/edenartlab/eden_comfy_pipelines.git
pip install -r eden_comfy_pipelines/requirements.txt
Restart, then look under Eden π± β Loaders. The requirements are light - scikit-learn, scipy, opencv-python, py7zr, no torch of its own - and you need ComfyUI 0.3.48+. This node wants no API key and no network.
Where people get burned
- A new row defaults to π² on, range 0.5β1. Add a LoRA, don't look, and your intended 1.0 is actually 0.73. Turn the dice off for anything you want fixed.
- "Off" is not "bypassed." The toggle zeroes the strength, but with a model connected the loader still runs
LoraLoaderon that file at 0.0. No visual effect, correct - but you don't get the load time or patch memory back either. - Sixteen rows is a hard cap. Go over and the node raises rather than quietly clipping.
- Order matters. Put the big structural LoRAs earlier and the gentle ones later; when something looks washed out, test the order before blaming the strengths.
- It's a canvas-drawn custom widget. Eden's frontend paints the rows itself, the same family as rgthree's loader - and that one took visible damage from ComfyUI's Nodes 2.0 frontend. If the rows render as a smear after an update, try the legacy canvas before rebuilding the workflow.
And the one that isn't this node's fault: if a LoRA does nothing, check it matches the base architecture, that its trigger word is in the prompt, and that Pony/Illustrious anime LoRAs often want CLIP skip 2.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00β18446744073709550000 | Seeds the strength sampling. Each LoRA draws from its own stream (seed + LoRA name), so adding, removing or reordering LoRAs doesn't change the others' samples. |
| modelopt | MODEL | Diffusion model to apply the LoRAs to. Leave empty to only sample strengths. | |
| clipopt | CLIP | CLIP model to apply the LoRAs to (same strength as the model). |
Outputs (19)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | Model with all enabled LoRAs applied. |
| CLIP | CLIP | CLIP with all enabled LoRAs applied. |
| settings | STRING | JSON with the seed and the applied strength per LoRA (by file basename), e.g. {"seed": 3, "loras": {"style_a": 0.72}}. Disabled LoRAs are listed with 0.0. |
| strength_1 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_2 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_3 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_4 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_5 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_6 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_7 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_8 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_9 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_10 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_11 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_12 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_13 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_14 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_15 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |
| strength_16 | FLOAT | Strength applied to this LoRA (0.0 when disabled). |