🧩AGSoft Multi LoRA Loader
Stack 20 LoRAs in one node — AGSoft's answer to Power Lora Loader
- model
- clip
- model
- clip
Every serious workflow ends up with the same wall of wires: three, four, six LoRA loaders chained model-to-model down the canvas, each holding one file and two strengths. AGSoft Multi LoRA Loader collapses that wall into a single node stacking up to twenty LoRAs - each on its own row with a toggle, a file picker and model/clip strengths - plus an info dialog that pulls the LoRA's CivitAI page, trigger words and example images by hashing the file. If you've seen rgthree's Power Lora Loader, the shape is familiar; AGSoft is the version hiding inside an oversized Russian QoL pack, and it's a genuinely well-built one.
Honest framing first: this is an obscure node from an obscure author. The comfyui-AGSoft pack (~90+ nodes) barely shows up in community chatter, and its docs live mostly in a Russian Telegram channel. You won't find a support thread waiting for you. But the loader is not a toy - it's real custom-frontend work, and if you already run the pack for its other nodes, it beats a chain of stock loaders.
How it works
Under the hood it's nothing clever - which is exactly why you can trust it. For each enabled slot, the node loads the LoRA file from models/loras, converts it and applies the patch through ComfyUI's own LoRA machinery (comfy.lora.load_lora plus add_patches on a cloned model), threading the result into the next slot. Same math as the built-in LoraLoader, just looped and chained. Slots apply top to bottom, so order matters the same way it does with a manual chain: your "base style" LoRA should sit above the character one that builds on it.
The inputs that matter
You only truly configure three things per row, and they repeat 20 times:
enabled_N- the toggle. Off means the row is skipped entirely, so you can keep a stack configured and A/B it by flipping switches instead of rewiring.lora_N- the file picker, which opens as a folder tree with a filter rather than a flat dropdown.model_strength_Nandclip_strength_N- strength for the diffusion model and text-encoder halves, each from −10 to 10 in 0.01 steps.
Rows are added and removed with the + Add LoRA / – Remove buttons, and Toggle All flips every row at once. And note the optional clip input: it's genuinely optional. Leave it unplugged and the node skips clip patching and passes your CLIP through untouched - the right call if you're only stacking U-Net/Dit LoRAs anyway. Outputs are the patched model and clip, wired straight into your KSampler.
The CivitAI info dialog
The row's info button is where this pulls ahead of a plain multi-loader. It hashes the local file (SHA256) and asks CivitAI's by-hash API for that exact version: page link, trigger words, example images/videos with their prompts, even the sampler and CFG they were made with. Results cache to disk, so the second time you ask it's instant. You can also store per-LoRA notes locally - a friendly name, and Strength Min/Max that clamp that row's stepper so you can't accidentally nuke a style at +8. Local notes live in your ComfyUI user directory under agsoft/lora_meta.json, keyed by filename. First lookup needs network, nothing else; if your CivitAI mirror isn't the default, point it elsewhere with the AGSOFT_CIVITAI_API / AGSOFT_CIVITAI_WEB env vars.
Installing it
No model downloads, nothing exotic:
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft.git
# then restart ComfyUI
Or open ComfyUI Manager and search "comfyui-AGSoft". The pack's declared dependencies are numpy, opencv-python and translators - those last two serve the pack's video and translate nodes, not this loader, so nothing heavy lands on your GPU stack.
Where people get burned
The usual LoRA footguns apply, and this node won't protect you. Stack a Pony LoRA on a non-Pony checkpoint and ComfyUI silently applies it, gives you no warning, and your output quietly degrades - same as any loader. Keep your base model and LoRA families matched. Two more to watch:
- An enabled slot pointing at a missing file fails validation with "enabled but not installed" - flip the row off or pick a real file rather than staring at a red node.
- Per-LoRA Strength Min/Max set in the info dialog will clamp the stepper, which can feel like the node is stuck if you set a tight range and forgot. That's not a bug; it's the clamp working.
- Every run re-reads and re-converts every enabled LoRA from disk, so a full 20-slot stack costs real load time. Disable what you're not testing.
The pack may look overwhelming and the docs may be in another language, with no community forum to rescue you - but for "all my character/style LoRAs in one tidy node with trigger words a click away," this one does the job.
Inputs (84)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Input model to patch with the enabled LoRAs. --- Входная модель, к которой применяются включённые LoRA. | |
| active_loras | INT | 20–20 | Internal: how many slots are applied. Controlled by the + Add LoRA / – Remove buttons in the UI (the widget itself is hidden). --- Служебный: сколько слотов применяется. Управляется кнопками + Add LoRA / – Remove в UI (сам виджет скрыт). |
| toggle_all | BOOLEAN | true | Bulk switch: flips every slot toggle at onceThe server applies each slot's own toggle. --- Массовый переключатель: включает/выключает все слоты сразуСервер применяет тумблер каждого слота. |
| enabled_1 | BOOLEAN | true | Slot 1: enable/disable this LoRA. --- Слот 1: включить/выключить эту LoRA. |
| lora_1 | COMBO | __none__ | Slot 1: LoRA file from models/loras. '__none__' = empty slot. --- Слот 1: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_1 | FLOAT | 1.00-10–10 | Slot 1: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 1: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_1 | FLOAT | 1.00-10–10 | Slot 1: strength for the CLIP (text encoder) part of the LoRA. --- Слот 1: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_2 | BOOLEAN | true | Slot 2: enable/disable this LoRA. --- Слот 2: включить/выключить эту LoRA. |
| lora_2 | COMBO | __none__ | Slot 2: LoRA file from models/loras. '__none__' = empty slot. --- Слот 2: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_2 | FLOAT | 1.00-10–10 | Slot 2: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 2: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_2 | FLOAT | 1.00-10–10 | Slot 2: strength for the CLIP (text encoder) part of the LoRA. --- Слот 2: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_3 | BOOLEAN | true | Slot 3: enable/disable this LoRA. --- Слот 3: включить/выключить эту LoRA. |
| lora_3 | COMBO | __none__ | Slot 3: LoRA file from models/loras. '__none__' = empty slot. --- Слот 3: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_3 | FLOAT | 1.00-10–10 | Slot 3: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 3: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_3 | FLOAT | 1.00-10–10 | Slot 3: strength for the CLIP (text encoder) part of the LoRA. --- Слот 3: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_4 | BOOLEAN | true | Slot 4: enable/disable this LoRA. --- Слот 4: включить/выключить эту LoRA. |
| lora_4 | COMBO | __none__ | Slot 4: LoRA file from models/loras. '__none__' = empty slot. --- Слот 4: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_4 | FLOAT | 1.00-10–10 | Slot 4: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 4: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_4 | FLOAT | 1.00-10–10 | Slot 4: strength for the CLIP (text encoder) part of the LoRA. --- Слот 4: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_5 | BOOLEAN | true | Slot 5: enable/disable this LoRA. --- Слот 5: включить/выключить эту LoRA. |
| lora_5 | COMBO | __none__ | Slot 5: LoRA file from models/loras. '__none__' = empty slot. --- Слот 5: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_5 | FLOAT | 1.00-10–10 | Slot 5: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 5: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_5 | FLOAT | 1.00-10–10 | Slot 5: strength for the CLIP (text encoder) part of the LoRA. --- Слот 5: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_6 | BOOLEAN | true | Slot 6: enable/disable this LoRA. --- Слот 6: включить/выключить эту LoRA. |
| lora_6 | COMBO | __none__ | Slot 6: LoRA file from models/loras. '__none__' = empty slot. --- Слот 6: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_6 | FLOAT | 1.00-10–10 | Slot 6: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 6: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_6 | FLOAT | 1.00-10–10 | Slot 6: strength for the CLIP (text encoder) part of the LoRA. --- Слот 6: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_7 | BOOLEAN | true | Slot 7: enable/disable this LoRA. --- Слот 7: включить/выключить эту LoRA. |
| lora_7 | COMBO | __none__ | Slot 7: LoRA file from models/loras. '__none__' = empty slot. --- Слот 7: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_7 | FLOAT | 1.00-10–10 | Slot 7: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 7: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_7 | FLOAT | 1.00-10–10 | Slot 7: strength for the CLIP (text encoder) part of the LoRA. --- Слот 7: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_8 | BOOLEAN | true | Slot 8: enable/disable this LoRA. --- Слот 8: включить/выключить эту LoRA. |
| lora_8 | COMBO | __none__ | Slot 8: LoRA file from models/loras. '__none__' = empty slot. --- Слот 8: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_8 | FLOAT | 1.00-10–10 | Slot 8: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 8: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_8 | FLOAT | 1.00-10–10 | Slot 8: strength for the CLIP (text encoder) part of the LoRA. --- Слот 8: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_9 | BOOLEAN | true | Slot 9: enable/disable this LoRA. --- Слот 9: включить/выключить эту LoRA. |
| lora_9 | COMBO | __none__ | Slot 9: LoRA file from models/loras. '__none__' = empty slot. --- Слот 9: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_9 | FLOAT | 1.00-10–10 | Slot 9: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 9: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_9 | FLOAT | 1.00-10–10 | Slot 9: strength for the CLIP (text encoder) part of the LoRA. --- Слот 9: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_10 | BOOLEAN | true | Slot 10: enable/disable this LoRA. --- Слот 10: включить/выключить эту LoRA. |
| lora_10 | COMBO | __none__ | Slot 10: LoRA file from models/loras. '__none__' = empty slot. --- Слот 10: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_10 | FLOAT | 1.00-10–10 | Slot 10: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 10: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_10 | FLOAT | 1.00-10–10 | Slot 10: strength for the CLIP (text encoder) part of the LoRA. --- Слот 10: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_11 | BOOLEAN | true | Slot 11: enable/disable this LoRA. --- Слот 11: включить/выключить эту LoRA. |
| lora_11 | COMBO | __none__ | Slot 11: LoRA file from models/loras. '__none__' = empty slot. --- Слот 11: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_11 | FLOAT | 1.00-10–10 | Slot 11: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 11: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_11 | FLOAT | 1.00-10–10 | Slot 11: strength for the CLIP (text encoder) part of the LoRA. --- Слот 11: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_12 | BOOLEAN | true | Slot 12: enable/disable this LoRA. --- Слот 12: включить/выключить эту LoRA. |
| lora_12 | COMBO | __none__ | Slot 12: LoRA file from models/loras. '__none__' = empty slot. --- Слот 12: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_12 | FLOAT | 1.00-10–10 | Slot 12: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 12: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_12 | FLOAT | 1.00-10–10 | Slot 12: strength for the CLIP (text encoder) part of the LoRA. --- Слот 12: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_13 | BOOLEAN | true | Slot 13: enable/disable this LoRA. --- Слот 13: включить/выключить эту LoRA. |
| lora_13 | COMBO | __none__ | Slot 13: LoRA file from models/loras. '__none__' = empty slot. --- Слот 13: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_13 | FLOAT | 1.00-10–10 | Slot 13: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 13: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_13 | FLOAT | 1.00-10–10 | Slot 13: strength for the CLIP (text encoder) part of the LoRA. --- Слот 13: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_14 | BOOLEAN | true | Slot 14: enable/disable this LoRA. --- Слот 14: включить/выключить эту LoRA. |
| lora_14 | COMBO | __none__ | Slot 14: LoRA file from models/loras. '__none__' = empty slot. --- Слот 14: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_14 | FLOAT | 1.00-10–10 | Slot 14: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 14: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_14 | FLOAT | 1.00-10–10 | Slot 14: strength for the CLIP (text encoder) part of the LoRA. --- Слот 14: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_15 | BOOLEAN | true | Slot 15: enable/disable this LoRA. --- Слот 15: включить/выключить эту LoRA. |
| lora_15 | COMBO | __none__ | Slot 15: LoRA file from models/loras. '__none__' = empty slot. --- Слот 15: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_15 | FLOAT | 1.00-10–10 | Slot 15: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 15: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_15 | FLOAT | 1.00-10–10 | Slot 15: strength for the CLIP (text encoder) part of the LoRA. --- Слот 15: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_16 | BOOLEAN | true | Slot 16: enable/disable this LoRA. --- Слот 16: включить/выключить эту LoRA. |
| lora_16 | COMBO | __none__ | Slot 16: LoRA file from models/loras. '__none__' = empty slot. --- Слот 16: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_16 | FLOAT | 1.00-10–10 | Slot 16: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 16: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_16 | FLOAT | 1.00-10–10 | Slot 16: strength for the CLIP (text encoder) part of the LoRA. --- Слот 16: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_17 | BOOLEAN | true | Slot 17: enable/disable this LoRA. --- Слот 17: включить/выключить эту LoRA. |
| lora_17 | COMBO | __none__ | Slot 17: LoRA file from models/loras. '__none__' = empty slot. --- Слот 17: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_17 | FLOAT | 1.00-10–10 | Slot 17: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 17: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_17 | FLOAT | 1.00-10–10 | Slot 17: strength for the CLIP (text encoder) part of the LoRA. --- Слот 17: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_18 | BOOLEAN | true | Slot 18: enable/disable this LoRA. --- Слот 18: включить/выключить эту LoRA. |
| lora_18 | COMBO | __none__ | Slot 18: LoRA file from models/loras. '__none__' = empty slot. --- Слот 18: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_18 | FLOAT | 1.00-10–10 | Slot 18: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 18: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_18 | FLOAT | 1.00-10–10 | Slot 18: strength for the CLIP (text encoder) part of the LoRA. --- Слот 18: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_19 | BOOLEAN | true | Slot 19: enable/disable this LoRA. --- Слот 19: включить/выключить эту LoRA. |
| lora_19 | COMBO | __none__ | Slot 19: LoRA file from models/loras. '__none__' = empty slot. --- Слот 19: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_19 | FLOAT | 1.00-10–10 | Slot 19: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 19: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_19 | FLOAT | 1.00-10–10 | Slot 19: strength for the CLIP (text encoder) part of the LoRA. --- Слот 19: сила для CLIP (текстовый энкодер) части LoRA. |
| enabled_20 | BOOLEAN | true | Slot 20: enable/disable this LoRA. --- Слот 20: включить/выключить эту LoRA. |
| lora_20 | COMBO | __none__ | Slot 20: LoRA file from models/loras. '__none__' = empty slot. --- Слот 20: файл LoRA из models/loras. '__none__' = пустой слот. |
| model_strength_20 | FLOAT | 1.00-10–10 | Slot 20: strength for the MODEL (unet/dit) part of the LoRA. --- Слот 20: сила для MODEL (unet/dit) части LoRA. |
| clip_strength_20 | FLOAT | 1.00-10–10 | Slot 20: strength for the CLIP (text encoder) part of the LoRA. --- Слот 20: сила для CLIP (текстовый энкодер) части LoRA. |
| clipopt | CLIP | Optional input CLIP. If not connected, clip strengths are ignored and the CLIP output passes through as-is. --- Опциональный входной CLIP. Если не подключён, силы clip игнорируются, выход CLIP проходит как есть. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |