FLUX.2 [klein] 9B
The Editing Daily Driver, Without the 21GB
- referenceImages
- lora
- acceleratorOptions
- advancedFeatures.watermark.image
- image
FLUX.2 [klein] 9B is the model that became the default local image editor in the first half of 2026 - and this node runs that exact model in the cloud, which matters because the 9B distilled variant is the one people actually drive daily. "Klein" is German for small, and small is the point: BFL distilled the 32B Flux 2 down to a 9B student that does text-to-image, single-reference editing, and multi-reference editing in one checkpoint. Locally, the 9B distilled still wants ~19.6GB of VRAM and a 21.7GB base-model sibling exists for training. With this node you get the same weights running on Runware's GPUs and a native IMAGE back - no VRAM roulette.
The one thing to know before you build a habit around it: the 9B carries the FLUX Non-Commercial License. If you're a hobbyist or a researcher, fine. If you're shipping client work, the 4B klein is the Apache-2.0 pick and the pro/flex tiers exist for hosted commercial use. This node is the cloud version of the weights you can't quite legally use for money.
What you set
Required: positivePrompt, width, height (128–2048, stepped by 16). Then the useful defaults are already sane:
- steps - this node does not gate it; it's a plain integer defaulting to 4. That's the distilled-model signature: the whole release runs at 4 steps, because distillation collapses the denoising trajectory into a few big jumps. Cranking it to 50 on the distilled model doesn't buy you quality - it buys you a bigger bill.
- CFGScale - plain float, default 3.5 (1–20). The distilled model's sweet spot is low single digits; the community default template was 4 steps at CFG 1.
- scheduler - 76 options,
(default)is right. - acceleration - a hosted speedup dropdown (
none/low/medium/high). Higher = faster cloud runs = cheaper per image, at some quality cost. Try medium before you pay for high.
Then the sockets that make it a real editor: referenceImages for single/multi-reference edits, lora (there's a whole klein LoRA ecosystem now), negativePrompt, and acceleratorOptions for cache/tea-cache tuning. Output is one image.
Why you'd reach for it
Editing, mostly. Klein's superpower is that you don't maintain separate generation and edit checkpoints - one model does both, and it does multi-reference editing (character sheets, "this person wearing that jacket") better than anything open before it. In the cloud, you get that capability without the ~20GB footprint, and the 4-step speed means fast, cheap iterations.
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, or install "Runware" via ComfyUI Manager; API key in Settings → Runware API key or RUNWARE_API_KEY. Cost shows per run on the title bar. And one last thing: don't mix klein LoRA sizes - 4B and 9B LoRAs aren't interchangeable, a mess the community already made on CivitAI.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024128–2048 | Width of the generated media in pixels. |
| height | INT | 1024128–2048 | Height of the generated media in pixels. |
| referenceImagesopt | IMAGE | — | |
| loraopt | RUNWARE_LORA | — | |
| acceleratorOptionsopt | RUNWARE_ACCELERATOROPTIONS | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| seedopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 41–50 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| scheduleropt | COMBO | (default) | Scheduler to use for the diffusion process. |
| CFGScaleopt | FLOAT | 3.501–20 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| accelerationopt | COMBO | (default) | Optimization level. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |