EasyControl Loader
The half of EasyControl that quietly expects a whole FLUX diffusers install
- pipe
EasyControlLoader is the front door of this two-node pack: it loads FLUX.1-dev, bolts an EasyControl control LoRA onto the transformer's attention, and hands the assembled pipeline to its sibling EasyControlSampler. The catch is in the fine print - unlike a normal ComfyUI Flux loader there's no CLIP or VAE input, and the node will happily break if you haven't set up a full FLUX.1-dev diffusers folder on disk.
What EasyControl actually is
This pack rides a spring-2025 wave. EasyControl is a research project (Xiaojiu-z, "EasyControl: Adding Efficient and Flexible Control for Diffusion Transformer") that set out to give diffusion transformers the plugin ecosystem SD had - without paying ControlNet's price. Instead of training a duplicate of the transformer and bolting its outputs on like the SD-era recipe, EasyControl trains tiny LoRA modules injected into the Q/K/V and output projections of FLUX's attention blocks, plus a KV cache to keep the conditioning cheap. The result is a control adapter that's a few hundred MB instead of a few GB, and one small .safetensors file carries structure, style, and subject control at once.
This pack, from the account open-ghibli, describes itself as "a simple refactored version" of jax-explorer's ComfyUI-easycontrol port - which is why it ships exactly two nodes and a README that is basically two sentences long. The example workflow it bundles is the real documentation.
How it works
The loader pulls ckpt_name from your models/checkpoints folder and loads it single-file into an EasyControlFluxTransformer2DModel at bfloat16, using the diffusers transformer config found at base_path/transformer. Then it wraps every attention processor with an EasyControl LoRA processor built at your chosen cond_size, applies lora_name at lora_weight, and finally constructs a full diffusers FluxPipeline from base_path. That's the key requirement hiding behind one text field: base_path must point at a complete local FLUX.1-dev diffusers folder - text encoders (T5-XXL and CLIP), tokenizer, VAE, scheduler, the whole thing - because this node bypasses ComfyUI's native model management entirely.
Its single output is a pipe of type MODEL_EASYCONTROL, which only feeds the pack's own EasyControlSampler. There's nothing else you can wire it into.
The inputs that matter
base_path- a STRING containing the absolute path to your FLUX.1-dev diffusers folder. The bundled workflow uses/FLUX.1-dev. This is the fiddliest input in the pack and the first thing that breaks.ckpt_name- a single-file FLUX.1-dev checkpoint frommodels/checkpoints(the example usesflux1-dev-fp8.safetensors).lora_name+lora_weight- the EasyControl control LoRA and its strength (0.0–2.0, default 1.0). The example iseasycontrol-Ghibli.safetensors.cond_size- 256–1024, default 512. The square conditioning resolution, baked into the LoRA processors at load time. It must match the sampler'scond_size, or the conditioning latents won't line up with the KV bank and you'll get garbage or an outright shape error.
Installing it
Easiest route is ComfyUI Manager - search for ComfyUI-EasyControl and install. Otherwise:
cd ComfyUI/custom_nodes
git clone https://github.com/open-ghibli/ComfyUI-EasyControl
Then restart ComfyUI. The requirements are the heavy part: this pack installs diffusers, transformers, peft, sentencepiece, einops, easydict, protobuf, safetensors, and pillow into your ComfyUI environment. ComfyUI doesn't ship diffusers, so you're bringing in a second framework just to run one sampler - version clashes with other custom nodes are a real possibility.
On top of that you need three model pieces: the full FLUX.1-dev diffusers folder (a ~24GB download), a single-file dev checkpoint (fp8 will do), and an EasyControl LoRA from the Xiaojiu-Z/EasyControl HuggingFace repo - the Ghibli one is the pack's showcase. This is also the no-GGUF corner people keep hitting: you can't feed it a quantized Flux, which is why the community grumbled "devs insist on using stock 24gb flux."
Where people get burned
The README won't save you - it's an acknowledgment list. Start from the bundled easycontrol.json example, not from memory. If from_single_file throws, base_path is wrong or the transformer/ config dir is missing. And know the VRAM floor going in: the original port's thread said "easycontrol support 24GB," and a 4090 user found a single image "takes as long as it just to generate a video." It's a memory-hungry, non-commercial (FLUX Dev license) setup - fine if you want EasyControl's style control and have the card, not the node you'd reach for as a daily driver.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| base_path | STRING | — | |
| ckpt_name | COMBO | 0 options: | |
| lora_name | COMBO | 0 options: | |
| lora_weight | FLOAT | 1.000–2 | — |
| cond_size | INT | 512256–1024 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | MODEL_EASYCONTROL | — |