FunPack LoRA Loader
The loader that just loads — no learning, no surprises
- model
- clip
- lora_stack
- MODEL
- CLIP
- lora_stack
- status
FunPack splits "thinking about LoRAs" from "applying LoRAs" on purpose. FunPack LoRA Loader is the dumb half: it takes a MODEL and a FUNPACK_LORA_STACK and applies the stack, no learning, no rating, no suggestions. It's the workhorse that actually patches the weights - and the reason it exists is so the "smart" part (FunPack Apply LoRA Weights and the Refiner) can hand it a prepared stack and trust the loading to be boring.
How it works
Three inputs. model is your base diffusion model. lora_stack is the stack produced by Apply LoRA Weights - the node consumes it, applies each LoRA with its configured weight, and passes the same stack through unchanged on the lora_stack output so the Refiner downstream can read what was actually used. clip is optional; when omitted, the CLIP gets zero strength (the LoRAs load on the model only).
Outputs: MODEL (patched), CLIP (patched, when clip connected), lora_stack (passthrough), and status (which path each LoRA took).
The one bit of real intelligence
The docs make a point of describing per-block mode, and it's worth knowing because it's a genuine differentiator. When enabled on an ltx2 stack, the loader keeps your visible global weight but derives per-block weights from the LoRA's actual patch layout. With multiple supported LoRAs it compares their block fingerprints before loading and gently boosts or dampens blocks where they compete, guided by each LoRA's type hint - character and action LoRAs get more protection in contested semantic blocks, quality LoRAs stay supportive, style/general yield more readily.
The status output tells you which path each LoRA took: global, per-block, smart-per-block, or a fallback. The smart-per-block status includes the strongest detected blocks and the largest overlap score - that's your tool for spotting two LoRAs fighting over the same region. Wan and other non-LTX workflows fall back to plain global loading even with per_block on, so it's an LTX feature, not a universal one.
Install
It's part of ComfyUI-FunPack:
cd ComfyUI/custom_nodes
git clone https://github.com/olivv-cs/ComfyUI-FunPack
pip install -r requirements.txt
or ComfyUI Manager → search "ComfyUI-FunPack". No extra dependencies.
Where it fits
The canonical chain: FunPack Apply LoRA Weights → FunPack LoRA Loader → FunPack Video Refiner V2. Apply picks the weights, Loader loads them, Refiner updates the suggestions after you rate. If you don't want the learning loop at all, you can also use this loader with a stack built by hand - but the docs are explicit that this node "does not learn from ratings. The refiner does that part." Keep it as the honest middle of the pipeline and the loop stays clean.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_list | STRING | [] | LoRAs to apply, top to bottom. Enough on its own — a stack is only needed for prompt-specific trained weights. Empty is fine: the model passes straight through. |
| clipopt | CLIP | — | |
| lora_stackopt | FUNPACK_LORA_STACK | Optional stack from FunPack Apply LoRA Weights, carrying prompt-specific trained strengths. Its LoRAs are applied first, then this node's own list. | |
| per_blockopt | BOOLEAN | false | Analyze each LoRA's block deltas and balance competing block strengths. LTX models only; a wired stack can switch this on by itself. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| lora_stack | FUNPACK_LORA_STACK | — |
| status | STRING | — |