Add FLUX.2-klein multi-reference workflow

This commit is contained in:
Morpheus
2026-08-15 18:06:19 +00:00
parent dd757541be
commit c9f39e7f2f
2 changed files with 620 additions and 0 deletions
@@ -0,0 +1,52 @@
# FLUX.2-klein Multi-Reference 3-Image Workflow
## Summary
Same-day Hugging Face workflow pack for `FLUX.2-klein 9B` with a practical multi-reference graph. This is the kind of reference-control workflow worth watching because it aims at composition and identity control, not just a style demo.
## Model Family
- `flux2klein`
## Status
- `imported-only`
## Source
- Model page: <https://huggingface.co/geceff/Flux2Klein9B-comfyui>
- Workflow file: <https://huggingface.co/geceff/Flux2Klein9B-comfyui/raw/main/workflow/Flux2image-reference-api-3image.json>
- Original publisher: `geceff`
- Date imported: `2026-08-15`
## Developer notes
- The source repo ships a full `FLUX.2-klein` ecosystem plus multiple workflow JSONs and packaged weights.
- This graph uses three reference images and a `FluxKontextMultiReferenceLatentMethod` node, so it is more focused on practical reference handling than a plain text-to-image template.
## Our notes
- Worth testing if you want a more functional FLUX.2-klein reference workflow than the standard edit templates.
- The source pack looks broad and somewhat opinionated, so treat it as a workflow donor rather than a clean official baseline.
- On an `RTX 3070 8 GB`, expect this to be heavy. It is more of a benchmark or tuned workflow than a comfy default.
## Required custom nodes
- `FluxKontextMultiReferenceLatentMethod` or the Comfy/Flux extension that provides it
- Current Comfy `FLUX.2-klein` template nodes such as `ResolutionSelector`, `ReferenceLatent`, `ScheduledCFGGuidance`, `ModelSamplingAuraFlow`, `CLIPVisionLoader`, and `unCLIPConditioning`
## Required model files
- `Flux2Klein_9B_v4BaseFp8.safetensors`
- `Flux2Klein_base-bf16_master_v4.safetensors`
- `fulx2vbase-lora-master.safetensors`
- `flux-2-klein-9b_extracted_lora_rank_128-fp32.safetensors`
- `bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors`
- `qwen-3-8b-flux-klein.safetensors`
- `flux.2vae-bf16.safetensors`
- `clip_vision_g.safetensors`
## Notes
- The workflow file still uses `example.png` placeholders for the image inputs.
- This is a promising reference-control donor, not a proven replacement for the current `FLUX.2-klein` edit masters.
@@ -0,0 +1,568 @@
{
"1": {
"inputs": {
"text": "",
"clip": [
"2",
1
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"2": {
"inputs": {
"lora_name": "fulx2vbase-lora-master.safetensors",
"strength_model": 1,
"strength_clip": 1,
"model": [
"6",
0
],
"clip": [
"5",
0
]
},
"class_type": "LoraLoader",
"_meta": {
"title": "Load LoRA (Model and CLIP)"
}
},
"3": {
"inputs": {
"image": "example.png"
},
"class_type": "LoadImage",
"_meta": {
"title": "Load Image"
}
},
"5": {
"inputs": {
"clip_name": "qwen-3-8b-flux-klein.safetensors",
"type": "flux2",
"device": "default"
},
"class_type": "CLIPLoader",
"_meta": {
"title": "Load CLIP"
}
},
"6": {
"inputs": {
"unet_name": "diffusion_models/Flux2Klein_base-bf16_master_v4.safetensors",
"weight_dtype": "default"
},
"class_type": "UNETLoader",
"_meta": {
"title": "Load Diffusion Model"
}
},
"7": {
"inputs": {
"lora_name": "flux-2-klein-9b_extracted_lora_rank_128-fp32.safetensors",
"strength_model": 0.75,
"model": [
"2",
0
]
},
"class_type": "LoraLoaderModelOnly",
"_meta": {
"title": "Load LoRA"
}
},
"8": {
"inputs": {
"lora_name": "bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors",
"strength_model": 0.75,
"model": [
"7",
0
]
},
"class_type": "LoraLoaderModelOnly",
"_meta": {
"title": "Load LoRA"
}
},
"10": {
"inputs": {
"vae_name": "fulx2vae-master.safetensors"
},
"class_type": "VAELoader",
"_meta": {
"title": "Load VAE"
}
},
"18": {
"inputs": {
"noise": [
"19",
0
],
"guider": [
"98",
0
],
"sampler": [
"20",
0
],
"sigmas": [
"105",
0
],
"latent_image": [
"32",
0
]
},
"class_type": "SamplerCustomAdvanced",
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"19": {
"inputs": {
"noise_seed": 513383871972281
},
"class_type": "RandomNoise",
"_meta": {
"title": "RandomNoise"
}
},
"20": {
"inputs": {
"sampler_name": "euler"
},
"class_type": "KSamplerSelect",
"_meta": {
"title": "KSamplerSelect"
}
},
"23": {
"inputs": {
"samples": [
"18",
0
],
"vae": [
"10",
0
]
},
"class_type": "VAEDecode",
"_meta": {
"title": "VAE Decode"
}
},
"24": {
"inputs": {
"images": [
"23",
0
]
},
"class_type": "PreviewImage",
"_meta": {
"title": "Preview Image"
}
},
"30": {
"inputs": {
"image": "example.png"
},
"class_type": "LoadImage",
"_meta": {
"title": "Load Image"
}
},
"32": {
"inputs": {
"width": [
"91",
0
],
"height": [
"91",
1
],
"batch_size": 1
},
"class_type": "EmptyLatentImage",
"_meta": {
"title": "Empty Latent Image"
}
},
"34": {
"inputs": {
"text": "text.UI.HUD.logo,watermark,bad anatomy,bad finger,artifact,blurry,censored,",
"clip": [
"5",
0
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"44": {
"inputs": {
"shift": 3,
"model": [
"8",
0
]
},
"class_type": "ModelSamplingAuraFlow",
"_meta": {
"title": "ModelSamplingAuraFlow"
}
},
"50": {
"inputs": {
"image": "example.png"
},
"class_type": "LoadImage",
"_meta": {
"title": "Load Image"
}
},
"91": {
"inputs": {
"aspect_ratio": "16:9 (Widescreen)",
"megapixels": 1,
"multiple": 16
},
"class_type": "ResolutionSelector",
"_meta": {
"title": "Resolution Selector"
}
},
"98": {
"inputs": {
"cfg": 2,
"start_percent": 0,
"end_percent": 0.9,
"model": [
"44",
0
],
"positive": [
"37:51",
0
],
"negative": [
"37:46",
0
]
},
"class_type": "ScheduledCFGGuidance",
"_meta": {
"title": "Scheduled CFG Guidance"
}
},
"105": {
"inputs": {
"scheduler": "simple",
"steps": 4,
"denoise": 1,
"model": [
"44",
0
]
},
"class_type": "BasicScheduler",
"_meta": {
"title": "BasicScheduler"
}
},
"42:13": {
"inputs": {
"clip_name": "clip_vision_g.safetensors"
},
"class_type": "CLIPVisionLoader",
"_meta": {
"title": "Load CLIP Vision"
}
},
"42:27": {
"inputs": {
"crop": "none",
"clip_vision": [
"42:13",
0
],
"image": [
"30",
0
]
},
"class_type": "CLIPVisionEncode",
"_meta": {
"title": "CLIP Vision Encode1"
}
},
"37:36": {
"inputs": {
"pixels": [
"30",
0
],
"vae": [
"10",
0
]
},
"class_type": "VAEEncode",
"_meta": {
"title": "VAE Encode1"
}
},
"42:48": {
"inputs": {
"crop": "none",
"clip_vision": [
"42:13",
0
],
"image": [
"50",
0
]
},
"class_type": "CLIPVisionEncode",
"_meta": {
"title": "CLIP Vision Encode2"
}
},
"37:45": {
"inputs": {
"pixels": [
"50",
0
],
"vae": [
"10",
0
]
},
"class_type": "VAEEncode",
"_meta": {
"title": "VAE Encode2"
}
},
"42:16": {
"inputs": {
"crop": "none",
"clip_vision": [
"42:13",
0
],
"image": [
"3",
0
]
},
"class_type": "CLIPVisionEncode",
"_meta": {
"title": "CLIP Vision Encode"
}
},
"37:35": {
"inputs": {
"pixels": [
"3",
0
],
"vae": [
"10",
0
]
},
"class_type": "VAEEncode",
"_meta": {
"title": "VAE Encode"
}
},
"42:43": {
"inputs": {
"conditioning": [
"34",
0
]
},
"class_type": "ConditioningZeroOut",
"_meta": {
"title": "Conditioning Zero Out"
}
},
"37:40": {
"inputs": {
"conditioning": [
"42:43",
0
],
"latent": [
"37:35",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent"
}
},
"42:17": {
"inputs": {
"strength": 0.5,
"noise_augmentation": 0,
"conditioning": [
"1",
0
],
"clip_vision_output": [
"42:16",
0
]
},
"class_type": "unCLIPConditioning",
"_meta": {
"title": "unCLIPConditioning"
}
},
"37:41": {
"inputs": {
"conditioning": [
"37:40",
0
],
"latent": [
"37:36",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent1"
}
},
"42:28": {
"inputs": {
"strength": 0.5,
"noise_augmentation": 0,
"conditioning": [
"42:17",
0
],
"clip_vision_output": [
"42:27",
0
]
},
"class_type": "unCLIPConditioning",
"_meta": {
"title": "unCLIPConditioning"
}
},
"37:46": {
"inputs": {
"conditioning": [
"37:41",
0
],
"latent": [
"37:45",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent2"
}
},
"42:49": {
"inputs": {
"strength": 0.5,
"noise_augmentation": 0,
"conditioning": [
"42:28",
0
],
"clip_vision_output": [
"42:48",
0
]
},
"class_type": "unCLIPConditioning",
"_meta": {
"title": "unCLIPConditioning"
}
},
"37:38": {
"inputs": {
"conditioning": [
"42:49",
0
],
"latent": [
"37:35",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent"
}
},
"37:39": {
"inputs": {
"conditioning": [
"37:38",
0
],
"latent": [
"37:36",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent1"
}
},
"37:47": {
"inputs": {
"conditioning": [
"37:39",
0
],
"latent": [
"37:45",
0
]
},
"class_type": "ReferenceLatent",
"_meta": {
"title": "Set Reference Latent5"
}
},
"37:51": {
"inputs": {
"reference_latents_method": "index",
"conditioning": [
"37:47",
0
]
},
"class_type": "FluxKontextMultiReferenceLatentMethod",
"_meta": {
"title": "Edit Model Reference Method"
}
}
}