Leffa Loader
The Leffa Loader is a dropdown that quietly loads 34 GB of models
- pipe
This is the node that makes your first run take five minutes instead of five seconds. Leffa Loader looks like nothing - one dropdown, one wire out, zero pixels touched - but it's the load-bearing wall of the whole ComfyUI-Leffa pack. Every try-on or pose-transfer graph starts here, because everything downstream needs the LEFFA_PIPE it emits. Pick wrong and the run nodes will happily tell you off, so it's worth understanding what that dropdown actually decides.
What the task dropdown really is
The pack is built on Meta's Leffa (from the franciszzj/Leffa repo, MIT-licensed), and Leffa ships as three different trained model stacks. Your task choice picks one of them:
viton_hd- virtual try-on trained on VITON-HD. SD 1.5 inpainting +virtual_tryon.pth.viton_dc- the same job, trained on the Dress Code dataset with a different masking strategy. Also SD 1.5 inpainting, butvirtual_tryon_dc.pth.pose_transfer- reposing a person, not try-on. This one runs on an SDXL inpainting stack (pose_transfer.pth), which is why it feels different in output size and style.
So viton_hd vs viton_dc is "which try-on flavor", and pose_transfer is a whole different feature. The loader loads the diffusion model for your choice in float16, but that's not all: it also warms up the entire preprocessing chain - human parsing (onnxruntime, runs on CPU), OpenPose, DensePose, and the agnostic-mask predictor. The run nodes are then pure compute, which is the pack's whole pitch: unlike the older StartHua/Comfyui_leffa node, you never pre-compute a mask or densepose yourself.
The output: a pipe, and it matters
The single output, pipe, is an opaque handle that carries the task name with it. It exists so the run nodes know which model stack they're talking to. That's not decoration: LeffaTryOn demands a viton_hd or viton_dc pipe, and LeffaPoseTransfer demands pose_transfer. Wire the wrong one and the run node raises a ValueError instead of producing anything. It's the most common beginner stumble in the pack, and the error message tells you exactly what you did.
Installing it (the 34 GB part)
Install via ComfyUI Manager (search "ComfyUI-Leffa"), or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/Bionic-AI-Solutions/ComfyUI-Leffa
Restart ComfyUI and let it install requirements.txt (diffusers, accelerate, peft, onnxruntime, opencv, timm, and friends). Then the real cost: the weights, the whole Leffa repo from Hugging Face, ~34 GB into ComfyUI/models/Leffa:
hf download franciszzj/Leffa --local-dir ComfyUI/models/Leffa
One repo download covers all three tasks plus the preprocessors - you don't fetch per-task. A note from the pack's README worth remembering: torch, torchvision, and transformers come from your ComfyUI environment and must not be upgraded, so don't let a stray pip install drag those along.
Common issues
- First run looks like a hang. It isn't - the loader is downloading/warming every model at once. Give it a minute.
- Task switching reloads models. The pack keeps only one diffusion model resident at a time to stay inside VRAM (it's tuned around an RTX 5090's budget). Bouncing between try-on and pose transfer evicts and reloads, and you'll feel every byte.
- Not an API node. Despite the pack powering the
mcp.baisoln.com/leffa/*service, the node itself is fully local - no key, no phone-home. If your graph complains about missing weights instead, it's the 34 GB that's missing, not a credential.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| task | COMBO | 3 options: viton_hd, viton_dc, pose_transfer |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | LEFFA_PIPE | — |