ComfyUI Node

FLUXCorrector

The self-refinement pass, minus the LLM

By BNP1111·Created about a year ago·Updated about a year ago· 4
FLUXCorrector
  • latent_in
  • positive
  • negative
  • corrector_model
  • latent
steps10
denoise_end0.25
cfg7.0
sampler_name

FLUX Corrector: the self-refinement pass, minus the LLM

You know the feeling: Flux hands you 80% of a great image and then quits - hands a little waxy, hair that stops making sense, edges that smear. FLUXCorrector exists for exactly that, by running your latent through a second model fine-tuned to be a corrector instead of a generator.

The weights are research, not a hobbyist's fine-tune. They come from diffusion-cot's FLUX-Corrector, a reflection-tuned Flux.1-dev fine-tune built for the ICCV 2025 paper From Reflection to Perfection (the ReflectionFlow framework). The paper's full idea is a loop: generate → have a verifier (usually an LLM) critique the image → rewrite the prompt → generate again. This node is only the last half of that loop - the corrector step, with no ChatGPT in sight. For most of us that's the useful half anyway.

How it works

The node is a thin wrapper around ComfyUI's own sampler. It takes the latent_in from your main generation and runs a short sampling pass using the corrector model instead of your base model, with your original positive/negative conditioning. The denoise_end input (default 0.25) caps how much of the schedule it touches: the code runs exactly int(steps × denoise_end) steps, so the stock settings (10 steps × 0.25) give the corrector only a couple of steps of light touch-up. That's the design - the corrector was trained to refine, not regenerate. Crank denoise_end toward 1.0 and you've turned it into a full second generation, which is slower and usually defeats the point.

It's a one-way pass, not a loop. No verifier, no prompt rewriting, no "thinking." The author's own docstring calls it "low-noise refinement," and that's the honest description: a polish pass over an already-decent latent.

The inputs that matter

Everything is required, which keeps the node small and obvious:

  • latent_in - the LATENT out of your main Flux pass (or a VAE-encoded image you want refined).
  • positive / negative - the same conditioning you already encoded. Wire the same CLIP text-encode outputs straight in.
  • corrector_model - the FLUX-Corrector weights, loaded as a MODEL. This is the whole point of the node.
  • denoise_end - default 0.25. Lower = lighter touch, higher = more correction. This is the one you'll actually tune.
  • steps, cfg, sampler_name - defaults 10, 7, and any sampler you like. Notice the cfg: 7, not the 3.5 everyone runs on vanilla Flux dev. The author tuned around higher guidance, so don't import your Flux habit here.

Output is a single latent, which you feed straight into your VAE decode. It drops into the wire between your sampler and your decoder.

Install

ComfyUI Manager (search "comfyui_flux_corrector"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/BNP1111/comfyui_flux_corrector

Restart ComfyUI. There's no requirements.txt and no pip deps - the real dependency is the model, which the README links to on HuggingFace (diffusion-cot/FLUX-Corrector) and leaves you to download yourself. Important detail: the HF repo ships only pytorch_lora_weights.safetensors, a LoRA. So you load Flux.1-dev, apply it with a LoRA loader, and feed the merged model into corrector_model. Expect this to add ~460MB of weights.

The gotcha that matters

Honesty time: this node targets a specific ComfyUI era. Its own docstring pins compatibility at 0.3.28+, and that's the era its code actually matches - it reaches into comfy.samplers internals (create_sampler, plus the steps=/end_step= call signature on KSampler.sample) that ComfyUI's 2026 sampler refactor removed. On a current build, expect an AttributeError the moment you queue the workflow. If you're on a recent ComfyUI and it errors, that's the pack, not you.

It's also a tiny pack - one node, one commit, a wrapper around a research model - so don't expect documentation or a support channel. And a quick note: Flux dev normally ignores negatives; this node hands yours to the corrector with real CFG at whatever cfg you set. Whether that negative does anything depends on how the corrector was trained - start with the defaults and A/B it.

Honestly? It's a niche utility for people who want the reflection-tuning idea without the orchestration. If you've ever wished your Flux output got one more picky pass before the VAE, this is precisely that - when it runs on your ComfyUI version.

CategoryFlux

Inputs (8)

NameTypeDefaultDescription
latent_inLATENT
positiveCONDITIONING
negativeCONDITIONING
corrector_modelMODEL
stepsINT101–50
denoise_endFLOAT0.250–1
cfgFLOAT7.01–15
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38

Outputs (1)

NameTypeDescription
latentLATENT