toobusy Flux2 Klein
The whole Flux2 Klein 9B reference graph in one node
- 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
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/megapixelsorwidth/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 thelora_N_enable/name/strengthtriplets - 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. Usemodelwhen continuing at the same resolution;model_cleanis 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.
Inputs (43)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | FLUX2/flux-2-klein-9b-kv-fp8.safetensors | 1 options: FLUX2/flux-2-klein-9b-kv-fp8.safetensors |
| clip_name | COMBO | flux2/qwen_3_8b_fp8mixed.safetensors | 1 options: flux2/qwen_3_8b_fp8mixed.safetensors |
| vae_name | COMBO | flux2/flux2-vae.safetensors | 1 options: flux2/flux2-vae.safetensors |
| positive | STRING | shopping mall clothing detail shot, studio product photo, clean white background, mint wide pants, no human | — |
| size_mode | COMBO | from reference | Where 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_preset | COMBO | 1:1 | 7 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +1 |
| megapixels | FLOAT | 1.000.1–4 | — |
| divisible_by | INT | 328–128 | — |
| batch_size | INT | 11–64 | — |
| seed | INT | 10–18446744073709550000 | — |
| steps | INT | 41–100 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| lora_slots | INT | 00–5 | — |
| reference_slots | INT | 30–5 | — |
| bundle_reference_order | COMBO | auto | How TOOBUSY_BUNDLE cards fill empty reference slots. 'auto' follows the Director swap buttons (flags.reference_order); pick a value to force it. |
| lora_1_enable | BOOLEAN | false | — |
| lora_1_name | COMBO | None | 2 options: None, None |
| lora_1_strength | FLOAT | 1.00-10–10 | — |
| lora_2_enable | BOOLEAN | false | — |
| lora_2_name | COMBO | None | 2 options: None, None |
| lora_2_strength | FLOAT | 1.00-10–10 | — |
| lora_3_enable | BOOLEAN | false | — |
| lora_3_name | COMBO | None | 2 options: None, None |
| lora_3_strength | FLOAT | 1.00-10–10 | — |
| lora_4_enable | BOOLEAN | false | — |
| lora_4_name | COMBO | None | 2 options: None, None |
| lora_4_strength | FLOAT | 1.00-10–10 | — |
| lora_5_enable | BOOLEAN | false | — |
| lora_5_name | COMBO | None | 2 options: None, None |
| lora_5_strength | FLOAT | 1.00-10–10 | — |
| toobusy_bundleopt | TOOBUSY_BUNDLE | Universal toobusy Bundle from Reference Board / Prompt Director. Empty reference slots are filled from bundle roles. | |
| use_bundle_promptopt | BOOLEAN | true | When enabled, Bundle resolved_prompt replaces the positive text if present. |
| use_bundle_lorasopt | BOOLEAN | true | When enabled and no manual LoRA slot is active, LoRA cards in the Bundle are applied. |
| widthopt | INT | 00–8192 | 0 = use reference #1 size when connected; otherwise ratio_preset + megapixels. Set width AND height > 0 for manual size. |
| heightopt | INT | 00–8192 | 0 = use reference #1 size when connected; otherwise ratio_preset + megapixels. Set width AND height > 0 for manual size. |
| model_overrideopt | MODEL | — | |
| clip_overrideopt | CLIP | — | |
| vae_overrideopt | VAE | — | |
| reference_1_imageopt | IMAGE | Reference #1. Applied in order in the Klein conditioning chain (reference #1 also drives the default size). | |
| reference_2_imageopt | IMAGE | Reference #2. Applied in order in the Klein conditioning chain (reference #1 also drives the default size). | |
| reference_3_imageopt | IMAGE | Reference #3. Applied in order in the Klein conditioning chain (reference #1 also drives the default size). | |
| reference_4_imageopt | IMAGE | Reference #4. Applied in order in the Klein conditioning chain (reference #1 also drives the default size). | |
| reference_5_imageopt | IMAGE | Reference #5. Applied in order in the Klein conditioning chain (reference #1 also drives the default size). |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| latent | LATENT | — |
| width | INT | — |
| height | INT | — |
| model | MODEL | — |
| model_clean | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| positive | CONDITIONING | — |