ComfyUI Node

toobusy Flux2 Klein

The whole Flux2 Klein 9B reference graph in one node

By nicekriss·Created about a year ago·Updated 3 days ago· 16
toobusy Flux2 Klein
  • toobusy_bundle
  • model_override
  • clip_override
  • vae_override
  • reference_1_image
  • reference_2_image
  • reference_3_image
  • reference_4_image
  • reference_5_image
  • image
  • latent
  • width
  • height
  • model
  • model_clean
  • clip
  • vae
  • positive
model_nameFLUX2/flux-2-klein-9b-kv-fp8.safetensors
clip_nameflux2/qwen_3_8b_fp8mixed.safetensors
vae_nameflux2/flux2-vae.safetensors
positiveshopping mall clothing detail shot, studio product photo, clean white background, mint wide pants, no human
size_modefrom reference
ratio_preset1:1
megapixels1.00
divisible_by32
batch_size1
seed1
steps4
sampler_nameeuler
lora_slots0
reference_slots3
bundle_reference_orderauto
lora_1_enablefalse
lora_1_nameNone
lora_1_strength1.00
lora_2_enablefalse
lora_2_nameNone
lora_2_strength1.00
lora_3_enablefalse
lora_3_nameNone
lora_3_strength1.00
lora_4_enablefalse
lora_4_nameNone
lora_4_strength1.00
lora_5_enablefalse
lora_5_nameNone
lora_5_strength1.00
use_bundle_prompttrue
use_bundle_lorastrue
width0
height0

Flux2 Klein 9B became the default local image editor of 2026 - the distilled model that does text-to-image, single-reference editing, and multi-reference editing in one checkpoint, at ~4 steps. The catch is that a proper multi-reference Klein workflow in ComfyUI is a wall of nodes: the model loader, the KV cache, the Qwen text encoder, the VAE, three reference-conditioning steps, a guider, noise, scheduler, empty latent, sampler, and decode. toobusy Flux2 Klein folds that entire graph - the README counts thirteen replaced nodes - into one node that takes reference images and a prompt and returns an image.

How it works

Internally it calls the exact native chain: UNETLoader + FluxKVCache (the kv-fp8 caching that stops reference images from being recomputed every pass), CLIPLoader + VAELoader, CLIPTextEncode, three Klein reference-conditioning nodes, then BasicGuider + RandomNoise + KSamplerSelect + Flux2Scheduler + EmptyFlux2LatentImage + SamplerCustomAdvanced + VAEDecode. Your reference_1_image through reference_5_image fill the reference slots; the defaults it ships with - flux-2-klein-9b-kv-fp8.safetensors, the Qwen3 8B text encoder, and flux2-vae.safetensors - are exactly the files the official example uses.

Two behaviors are worth knowing before you touch anything. First, size_mode: from reference (the default) matches reference #1's size and ignores the ratio/megapixel fields - that's the Klein-native behavior. Pick ratio + megapixels to force a 9:16, or manual for explicit width/height. Second, the bundle integration: connect a toobusy_bundle and its empty reference slots get filled from bundle roles, its resolved_prompt replaces the positive text, and its LoRA cards apply - that's how this node plugs into the Reference Board → Prompt Director flow. bundle_reference_order set to auto follows whatever swap flags the Director set.

The inputs that matter

  • model_name / clip_name / vae_name - auto-detected with fuzzy scanning; override if it grabs the wrong file.
  • positive - the edit instruction. Klein is a Photoshop-command model, not a "dream me a scene" one; "direct, technical, post-processing prompts" beat poetic ones for edits.
  • reference_1_image ... reference_5_image - applied in order; reference #1 also drives the default output size.
  • size_mode + ratio_preset/megapixels or width/height - see above; the 9:16-with-full-body gotcha is below.
  • steps (4), sampler_name (euler), seed - the distilled defaults are genuinely what people run: 4 steps, euler, CFG-1-ish via the native scheduler.
  • lora_slots (0–5) and the lora_N_enable/name/strength triplets - Klein tolerates LoRA stacking well; this is the built-in stack.
  • use_bundle_prompt / use_bundle_loras (both on) - how much the bundle overrides manual entries.

Outputs and where they go

  • image - the result, into a Save Image / preview.
  • latent - the sampled latent, for a second pass without re-running the graph.
  • model, model_clean, clip, vae, positive - passthroughs for building an external refine loop. Use model when continuing at the same resolution; model_clean is safer when you're changing resolution or swapping LoRAs.

Install and gotchas

Standard pack install (Manager "toobusy", or clone + restart). The three model files are yours to fetch - the pack ships none of them.

Two things bite people. First, full-body vertical shots: Klein loves to crop. The README's fix is to spell out composition in the prompt (full-length, head to toe, entire body visible, both feet on the ground) and pin 9:16 via ratio + megapixels before generating. Second, identity drift on edits is Klein's known weakness - it looks great but doesn't hold a face like Qwen-Image-Edit does; a consistency LoRA is the usual mitigation. And remember the 9B carries the FLUX non-commercial license; if you need commercial, that's the 4B's job.

Categorytoobusy/Make

Inputs (43)

NameTypeDefaultDescription
model_nameCOMBOFLUX2/flux-2-klein-9b-kv-fp8.safetensors1 options: FLUX2/flux-2-klein-9b-kv-fp8.safetensors
clip_nameCOMBOflux2/qwen_3_8b_fp8mixed.safetensors1 options: flux2/qwen_3_8b_fp8mixed.safetensors
vae_nameCOMBOflux2/flux2-vae.safetensors1 options: flux2/flux2-vae.safetensors
positiveSTRINGshopping mall clothing detail shot, studio product photo, clean white background, mint wide pants, no human
size_modeCOMBOfrom referenceWhere the output size comes from. 'from reference' = match reference #1 (Klein default — ratio/megapixels are ignored while a reference is connected); 'ratio + megapixels' = use the ratio_preset + megapixels below; 'manual' = use width/height.
ratio_presetCOMBO1:17 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +1
megapixelsFLOAT1.000.1–4
divisible_byINT328–128
batch_sizeINT11–64
seedINT10–18446744073709550000
stepsINT41–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
lora_slotsINT00–5
reference_slotsINT30–5
bundle_reference_orderCOMBOautoHow TOOBUSY_BUNDLE cards fill empty reference slots. 'auto' follows the Director swap buttons (flags.reference_order); pick a value to force it.
lora_1_enableBOOLEANfalse
lora_1_nameCOMBONone2 options: None, None
lora_1_strengthFLOAT1.00-10–10
lora_2_enableBOOLEANfalse
lora_2_nameCOMBONone2 options: None, None
lora_2_strengthFLOAT1.00-10–10
lora_3_enableBOOLEANfalse
lora_3_nameCOMBONone2 options: None, None
lora_3_strengthFLOAT1.00-10–10
lora_4_enableBOOLEANfalse
lora_4_nameCOMBONone2 options: None, None
lora_4_strengthFLOAT1.00-10–10
lora_5_enableBOOLEANfalse
lora_5_nameCOMBONone2 options: None, None
lora_5_strengthFLOAT1.00-10–10
toobusy_bundleoptTOOBUSY_BUNDLEUniversal toobusy Bundle from Reference Board / Prompt Director. Empty reference slots are filled from bundle roles.
use_bundle_promptoptBOOLEANtrueWhen enabled, Bundle resolved_prompt replaces the positive text if present.
use_bundle_lorasoptBOOLEANtrueWhen enabled and no manual LoRA slot is active, LoRA cards in the Bundle are applied.
widthoptINT00–81920 = use reference #1 size when connected; otherwise ratio_preset + megapixels. Set width AND height > 0 for manual size.
heightoptINT00–81920 = use reference #1 size when connected; otherwise ratio_preset + megapixels. Set width AND height > 0 for manual size.
model_overrideoptMODEL
clip_overrideoptCLIP
vae_overrideoptVAE
reference_1_imageoptIMAGEReference #1. Applied in order in the Klein conditioning chain (reference #1 also drives the default size).
reference_2_imageoptIMAGEReference #2. Applied in order in the Klein conditioning chain (reference #1 also drives the default size).
reference_3_imageoptIMAGEReference #3. Applied in order in the Klein conditioning chain (reference #1 also drives the default size).
reference_4_imageoptIMAGEReference #4. Applied in order in the Klein conditioning chain (reference #1 also drives the default size).
reference_5_imageoptIMAGEReference #5. Applied in order in the Klein conditioning chain (reference #1 also drives the default size).

Outputs (9)

NameTypeDescription
imageIMAGE
latentLATENT
widthINT
heightINT
modelMODEL
model_cleanMODEL
clipCLIP
vaeVAE
positiveCONDITIONING