← Workflows

FLUX.2 Klein Image

Text → Image

Text-to-image with FLUX.2 Klein 4B. High-fidelity stills from a prompt, with two optional LoRA slots.

flux2_klein8 GB VRAM8.3 GB of weightsLoRA support
A lighthouse on a rocky sea cliff at sunset, waves breaking below.
Made with flux2_klein on our own hardware. Prompt: “a lighthouse on a rocky sea cliff at sunset, long exposure photograph, no people”

Calling it

FlixML has no generate button: you tell your agent what you want and it calls the API on your install. The id is what names this workflow.

POST /api/image/generate
{
  "workflow": "flux2_klein",
  "prompt": "..."
}

Parameters

promptstrrequired

Natural language sentences, not tags — the opposite of an SDXL prompt. Subject, then action, then style, then context, in that order: word order is weight, so lead with the subject and close with atmosphere. 30-80 words suits most shots. 'A businessman in a charcoal grey suit resting his arms on a bamboo railing at a secluded beach, illustrated in a vintage woodblock print style, calm turquoise water under a hazy afternoon sky.' FLUX.2 has no negative prompt and this graph has no node for one, so describe what you want instead of what you don't — 'sharp focus throughout', not 'not blurry'. For photorealism, name a camera, lens or film stock rather than saying 'professional'.

lora_namestrdefault

Optional LoRA file in the node's loras folder. Leave empty and the slot is removed from the graph entirely. A FLUX.2 LoRA is built for one variant: a Klein 4B LoRA does not load on Klein 9B or on FLUX.2-dev, and a dev LoRA does not load here — the residual stream is 3072 wide on 4B against 6144 on dev, so the tensors do not fit. Match the LoRA's stated base model to the weights in the unet param.

lora_strengthfloatdefault 1

Weight of the first LoRA. Ignored when lora_name is empty.

lora_name_2strdefault

Second LoRA, chained after the first — for stacking a concept LoRA on top of a likeness or style one. Same variant rule as lora_name.

lora_strength_2floatdefault 1

Weight of the second LoRA. Ignored when lora_name_2 is empty.

widthintdefault 832

Output width

heightintdefault 832

Output height

seedint

Random seed (auto if omitted)

stepsintdefault 4

Klein is distilled to 4 steps; raise it only when running undistilled FLUX.2 weights through the unet param

samplerstrdefault euler
guidancefloatdefault 4

FLUX guidance scale

unetstrdefault flux-2-klein-4b-fp8.safetensors
clipstrdefault qwen_3_4b_fp4_flux2.safetensors
vaestrdefault flux2-vae.safetensors

Your install is the source of truth: GET /api/workflows returns these parameters as they are on your machine.

What it costs to run

Defaults to FLUX.2 Klein 4B fp8 (4.07 GB) plus the fp4 Qwen3-4B encoder (3.85 GB), about 8.3 GB of weights with the VAE. Klein is the distilled line and renders in 4 steps. TESTED 2026-09-19 at 1024x1024, 4 steps, same prompt and seed on both cards: fp8 on an 8 GB RTX 2060 Super took 29 s, bf16 (7.75 GB) on a 12 GB RTX 4070 Ti took 37 s, and the two outputs are visually identical — fp8 costs nothing here. The unet and clip params reach any FLUX.2 weights present on the node; FLUX.2-dev (35 GB fp8 plus a 12 GB Mistral encoder) wants 24 GB VRAM and spills badly below that — 32 min for a single image on the 4070 Ti — so dev belongs on flux2_dev_lora, the only workflow the dev-trained LoRAs load into.

Same input, different job