Nodes/ComfyUI-FunPack/FunPack LoRA Loader
ComfyUI Node

FunPack LoRA Loader

The loader that just loads — no learning, no surprises

By digital-garbage·Created about a year ago·Updated 2 days ago· 18
FunPack LoRA Loader
  • model
  • clip
  • lora_stack
  • MODEL
  • CLIP
  • lora_stack
  • status
lora_list[]
per_blockfalse

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.

CategoryFunPack/Model Management

Inputs (5)

NameTypeDefaultDescription
modelMODEL
lora_listSTRING[]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.
clipoptCLIP
lora_stackoptFUNPACK_LORA_STACKOptional stack from FunPack Apply LoRA Weights, carrying prompt-specific trained strengths. Its LoRAs are applied first, then this node's own list.
per_blockoptBOOLEANfalseAnalyze each LoRA's block deltas and balance competing block strengths. LTX models only; a wired stack can switch this on by itself.

Outputs (4)

NameTypeDescription
MODELMODEL
CLIPCLIP
lora_stackFUNPACK_LORA_STACK
statusSTRING