Choose your path
You can run FLUX 3 Klein locally in ComfyUI, with the official reference CLI, or from Python through Diffusers. ComfyUI is the simplest path, and it is the one tied to the INT8 file for an 8 GB NVIDIA card. The reference CLI is the path for BF16, FP8, and NVFP4. Diffusers is the path when the model has to sit inside your own Python code.
| Path | What it is for | Precision the verified notes tie to it |
|---|---|---|
| ComfyUI | Simplest install, official templates from v0.41.0 | int8 for 8 GB cards such as the RTX 3070. ComfyUI files are BF16 11.1 GB, int8 5.8 GB, NVFP4 5.3 GB |
| Reference CLI | The publisher’s inference code on GitHub, Apache-2.0 | BF16, FP8, and NVFP4. NVFP4 needs a Blackwell GPU. The CLI download is about 52 GB |
| Diffusers | Python integration | ModularPipeline from the Diffusers git main branch. It does not run the upsampler for you |
The model card says: “Do not use the model without a prompt upsampler.” That rule applies on all three paths. The official upsampler is flux-3-image-klein-pup, a 9B model, BF16 file 18.8 GB. Any LLM with the official system_prompts.json is the documented substitute.
Pick ComfyUI if you want the templates and the 5.8 GB int8 file. Pick the CLI if you are on a GPU that matches the BF16, FP8, or NVFP4 builds and you want the reference commands. Pick Diffusers if a notebook or a service of your own has to call the model. The file-and-folder detail for ComfyUI is on the ComfyUI page. The memory table is on the VRAM page. This page is the order of operations.
Step 0: Hugging Face account
The weight repositories are gated with an “auto” gate. Create a Hugging Face account, open the repository, accept the terms, and access is granted automatically. The upsampler repository is not gated. The distilled weights are black-forest-labs/flux-3-image-klein. Klein Base is black-forest-labs/flux-3-image-klein-base. ComfyUI files are black-forest-labs/flux-3-image-klein-comfy.
Log in with the Hugging Face CLI before a gated download. The ComfyUI repository id, and only that id, is:
hf download black-forest-labs/flux-3-image-klein-comfy
No extra flags are added here. The verified notes do not record an include filter or a local directory for that command. An anonymous request will not receive the gated files.
Reference CLI
The inference code is the GitHub repository black-forest-labs/flux-3-image-klein, under Apache-2.0. The reference CLI download is about 52 GB. That figure is the README’s download size for this path, not the size of one checkpoint. The blog’s generator files are smaller and measure something else: BF16 11.2 GB and FP8 5.6 GB.
NVFP4 on this path needs a Blackwell GPU. The ComfyUI NVFP4 file is 5.3 GB, and the same Blackwell requirement is in the GitHub notes. Do not treat a small NVFP4 file as a build for an older GeForce card.
The distilled checkpoint defaults to 16 steps with no guidance. Klein Base defaults to 50 steps at CFG 3.5. The GitHub README lists CFG 4 for Base. Use 3.5 as the template default. Text-to-image and image-edit examples are in that README. The exact command lines for those two examples were not copied into the verified fact table, so they are not retyped here. Copy them from the README rather than from a reconstructed flag list.
If the upsampler and the generator do not fit together, the README’s method is to run the upsampler first and then generate without it. That is the next section. It is still one run of FLUX 3 Klein. The prompt is expanded before the image step.
Diffusers
Install Diffusers from git main, which is the install line recorded for this model:
pip install git+https://github.com/huggingface/diffusers.git
The model card says to use ModularPipeline. Diffusers will not run the prompt upsampler automatically. Load flux-3-image-klein-pup yourself with Transformers, or expand the prompt with another LLM and the official system prompts, and pass the expanded text in.
There is no pinned Diffusers version number in the verified table, so this page does not invent one. “Git main” is the instruction. A release pin that is not in the table would be a guess about which commit the card was written against.
Klein in that pipeline is the distilled checkpoint: 16 steps, no guidance, the same checkpoint the API uses. The API model id is flux-3-image-klein. The blog says: “Pricing starts at $0.009 per 1K image.” That price is the hosted API, not a local Diffusers bill. Local weight use is the license question, not a per-image API charge.
Upsampler doesn’t fit?
The upsampler’s BF16 file is 18.8 GB. On an 80 GB card that official BF16 upsampler adds about 28 GB while it runs. Our measurement used the w4a8 upsampler (6.7 GB file) and added about 5.8 GB of peak VRAM, not 28 GB. The B200 peaks of 31 GB BF16, 26 GB FP8, and 25 GB NVFP4 were measured at 1024×1024 with the upsampler off. A machine that can hold the generator can still fail when the BF16 upsampler is loaded with it.
The official CLI method is sequential. Run the upsampler by itself:
python -m flux3.pup
Then generate with the upsampler disabled:
--no-pup
The prompt has already been expanded. --no-pup does not mean “skip expansion.” It means “do not load the upsampler again inside the generator process.”
The other documented option is any LLM plus the official system_prompts.json. ComfyUI also ships int8 and w4a8 upsampler files. Byte sizes from the Hugging Face API put the w4a8 upsampler at 6.72 GB. The 5.8 GB int8 figure is the ComfyUI generator file, not an upsampler.
By file size, using those API bytes, the int8 generator is 5.83 GB, the int8 text encoder is 4.86 GB, the w4a8 upsampler is 6.72 GB, and the VAE is 0.34 GB. Together that is about 17.8 GB, so the full stack with the upsampler cannot be resident on an 8 GB card. The official 8 GB figure must refer to running without the upsampler resident, or to offloading or sequential loading. Whether an 8 GB card actually runs it is not something we tested.
Troubleshooting
No troubleshooting notes are on this page. None were supplied from a local run. This guide does not invent a driver version, a CUDA error, or a missing-file fix that nobody recorded.
When a real snag is written down, the useful record is the path you took, the GPU, the driver, the ComfyUI or CLI or Diffusers revision, the file precision, whether the upsampler was in memory, and the error text. Until that note exists, the steps above are the whole procedure, and the commands that were not in the verified table stay in the GitHub README where they were published.