Introduction

If your first FLUX 3 Image Klein renders looked oddly generic, you weren't imagining it, and Black Forest Labs just said so out loud. On Oct 17 at 14:42 UTC, BFL posted updated Klein workflows "to fix some issues and help you get the best results from the model." The headline instruction is simple: update to ComfyUI v0.41.3, load the new workflow, and always put Klein's prompt upsampler in front of the model at 2K resolution.

Klein is BFL's 5.6B open-weights image model (text-to-image, editing with up to 10 references, and bounding-box layout) that we covered at launch on Oct 15. It's still the number-one trending image-to-image repo on Hugging Face, so this patch lands on a lot of desks at once. Here's what actually changed and how to get the good pictures.

What BFL Changed

The rule: no upsampler, no Klein

BFL's README is now blunt: "Do not use either model without the prompt upsampler." Klein was trained on the long captions its upsampler writes, so a short prompt typed straight into the model gives "noticeably weaker results." The upsampler model card goes further and calls it required for text-to-image, editing, and layout alike, whether you use BFL's upsampler or your own LLM.

  • The upsampler is a 9B vision-language model, a full fine-tune of Qwen3.5-9B, released under Apache 2.0
  • It turns a one-liner like "A man walking with his dog, afternoon sun" into a roughly 220-word caption covering medium, lighting, camera, and each subject's colors and position
  • It reads up to 10 reference images and keeps any bounding boxes you pass exactly, citing each box by id
  • Output is always English, but your request can be in any language

BFL also says the best results come at 2K resolutions, and its Hugging Face Space now defaults to 2K.

The ComfyUI templates got rebuilt

The Comfy-Org workflow templates went through several Klein updates over Oct 16–17, and ComfyUI v0.41.3 bundles template version 0.11.87:

  • The image-edit template now includes a prompt upsampling step (a CLIPLoader, a TextGenerate node, and the FLUX 3 Image Klein Layout Prompt node) instead of feeding your edit text straight through
  • The templates load the w4a8 upsampler build (about 6.7 GB); the template notes say to use the bf16 upsampler (about 18.8 GB) instead if you have more than 24 GB of VRAM, for captions that follow your references more closely
  • Model files moved to BFL's new hyphenated names, such as flux3-image-klein-int8-convrot; the old files stay on the hub, so existing downloads still work
  • The old "4–16 steps" note was removed from the distilled templates; BFL lists the distilled model at 16 steps with no CFG

One more fix was merged on GitHub a few hours after v0.41.3 and should arrive with the next template update: changing the image seed no longer re-runs the upsampler. Because the upsampler decodes greedily and returns the same caption anyway, seed-hopping should get a lot quicker once you have it.

Small parameter shifts in the reference code

If you followed our launch guide, two numbers moved in BFL's reference inference code on Oct 17:

  • Klein Base guidance went from CFG 3.5 to CFG 4 (still 50 steps)
  • A sampling parameter called alpha in the generate function went from 6.93 to 16.0 by default

The distilled checkpoint behind the BFL API still runs 16 steps without CFG.

How to Run It Right Today

In ComfyUI

Update ComfyUI to v0.41.3, open the FLUX 3 Klein template from the template browser, and let it pull the files it lists. For 8 GB cards, BFL still points to the INT8 files in the black-forest-labs/flux-3-image-klein-comfy repo on Hugging Face, which is gated, so accept the license while you're signed in. Keep the upsampler nodes in the graph even if you write long prompts yourself.

With BFL's reference code on a smaller GPU

When the upsampler and the image model won't fit on your GPU together, BFL's README runs them in two passes: caption first, then generate with the upsampler switched off.

python -m flux3.pup --prompt "A man walking with his dog, afternoon sun" --out prompt.txt
python scripts/cli.py "$(cat prompt.txt)" --model distilled --fp8 --no-pup --out out.png

The fp8 flag needs an Ada, Hopper, or Blackwell card. On RTX 30-series and older, use the INT8 files in ComfyUI instead.

With any other LLM

If you can't run BFL's upsampler at all, the repo now includes the four system prompts it uses (t2i, i2i, t2i_bbox, and i2i_bbox) in a file called pup_prompts_external_vlm.json. Give the right one to your own vision-language model, paste its answer into Klein, and skip the built-in upsampler. For edits, BFL's model card formats the user message as three lines after the reference images:

Reference images follow in order (the first image, the second image, ...).
User request: put a red bandana around the dog's neck
Output the caption.

BFL decodes greedily, with a presence penalty of 1.5 for text-to-image and 0 for edits. The files are here:

Why It Matters

Small open models increasingly lean on a writer model in front of them, and Klein is the clearest case yet. Its 5.6B image model is tuned to the upsampler's captions, so the upsampler isn't an optional extra. It's half the product. The upside is that you can now see and swap that half: Apache-licensed weights, published system prompts, and a two-pass path for modest GPUs. If Klein disappointed you on day one, it's worth a second try with the full pipeline before you write it off.

Original Source

Conclusion

Update ComfyUI to v0.41.3, keep the upsampler in the chain, render at 2K, and Klein starts acting like the model BFL demoed. Short prompts are still welcome; just let the upsampler do the long writing for you.

Try this on Gen → https://artrealmai.com/gen?utm_source=magazine&utm_campaign=gen&utm_content=flux-3-klein-workflow-fix-prompt-upsampler-2k

—Aurelia ♡