flux2Klein / createImage
Pick your 4B or 9B, skip the download
- loras
- api_config
- images
- errors
- workflow_id
- raw_json
Flux 2 Klein is the small-model line Black Forest Labs shipped to fix Flux 2's "nobody can run it" problem - and it's genuinely small, which means this cloud node is the cheap way into the Flux 2 family. Where the Flux 2 Dev recipe is a heavyweight job, Klein runs four checkpoints - 4B and 9B, each in distilled and base form - and this node lets you pick which one via a model_version dropdown. No model files land on your machine; the sdcpp fleet does the work and bills you in Buzz.
The pick that matters is 4b vs 9b. The 4B is Apache 2.0, the commercially-usable one, and community testing found it genuinely underrated - fast and capable, especially for a first pass. The 9B carries the FLUX non-commercial license and is the better-looking daily driver. Distilled (just "4b"/"9b") is what you generate with; the -base variants are training foundations that BFL itself says aren't meant for generation quality. If this is your first Klein render, start with 4b - it's the one you can actually do something with.
How it works
Standard pack client: submit engine: sdcpp, ecosystem: flux2Klein, operation: createImage with modelVersion selecting the checkpoint, long-poll, get a ComfyUI IMAGE back. Note the category here is just Civitai/Image/flux2Klein - the engine is still sdcpp, the menu just doesn't show it because Klein isn't reachable through another engine.
The inputs that matter
- prompt (required) - Klein's Qwen3-4B/8B encoder wants natural language; write sentences.
- model_version -
4b,4b-base,9b, or9b-base. Default4b. Don't mix LoRAs across the 4B/9B lines - they're not interchangeable. - steps / cfg_scale - 20 / 5 defaults. The distilled variants are trained for very few steps (4-ish locally), but this recipe defaults to 20; dropping steps is where you'll actually save Buzz.
- width / height - 1024 default, 512–2048 range.
- negative_prompt - exists; Klein, like the rest of Flux 2, barely needs one.
- loras - via a Civitai LoRA Selector; most Klein LoRAs target
9b-baseand are applied at inference.
Install
Pack install: ComfyUI Manager → search "Civitai Comfy Nodes" (publisher civitai) → Install → restart. Or git clone https://github.com/civitai/civitai-comfy-nodes.git into custom_nodes, pip install -r civitai-comfy-nodes/requirements.txt (just requests), restart.
Common issues
Credentials first: Civitai Auth node into api_config or the CIVITAI_API_TOKEN env var (from civitai.com/user/account); headless installs need the env var.
The Klein-specific mistakes are version confusion and LoRA mixing. Picking 9b-base because "base must be better" gives you the training foundation, not the good generator - that's the most common disappointment. And applying a 4B LoRA to a 9B run (or vice versa) silently degrades quality rather than erroring.
And because each generation costs Buzz, remember the distilled variants are the whole point: if you're just iterating, low steps on 4b is the cheapest path to a decent result.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| widthopt | INT | 1024512–2048 | — |
| heightopt | INT | 1024512–2048 | — |
| seedopt | INT | 00–4294967295 | — |
| quantityopt | INT | 11–4 | — |
| cfg_scaleopt | FLOAT | 5.001–20 | — |
| stepsopt | INT | 204–50 | — |
| sample_methodopt | COMBO | 16 options: , euler, heun, dpm2, dpm++2s_a, dpm++2m, +10 | |
| scheduleopt | COMBO | 12 options: , simple, discrete, karras, exponential, ays, +6 | |
| negative_promptopt | STRING | — | |
| lorasopt | CIVITAI_LORAS | — | |
| model_versionopt | COMBO | 4b | 4 options: 4b, 4b-base, 9b, 9b-base |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |