Nodes/ComfyUI-EasyControl/EasyControl Loader
ComfyUI Node

EasyControl Loader

The half of EasyControl that quietly expects a whole FLUX diffusers install

By open-ghibli·Created about a year ago·Updated about a year ago· 6
EasyControl Loader
    • pipe
    base_path
    ckpt_name
    lora_name
    lora_weight1.00
    cond_size512

    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 from models/checkpoints (the example uses flux1-dev-fp8.safetensors).
    • lora_name + lora_weight - the EasyControl control LoRA and its strength (0.0–2.0, default 1.0). The example is easycontrol-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's cond_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.

    CategoryEasyControl

    Inputs (5)

    NameTypeDefaultDescription
    base_pathSTRING
    ckpt_nameCOMBO0 options:
    lora_nameCOMBO0 options:
    lora_weightFLOAT1.000–2
    cond_sizeINT512256–1024

    Outputs (1)

    NameTypeDescription
    pipeMODEL_EASYCONTROL