ππ©π»βπ³ FlowState Chef
The two-pass editing pipeline that fixes Qwen-Image-Edit's weak polish
- chef_ingredients
- image
- latent
FlowState Chef exists to solve a specific annoyance: Qwen-Image-Edit is great at understanding "change the shirt to red" and genuinely bad at making the result look finished, while Flux is great at looking finished and hopeless at following that kind of instruction. So the Chef does what you'd do anyway, minus the wiring - it runs Qwen-Image-Edit for the edit, then re-samples the result through Flux at low denoise to polish it. Two models, one node, one seed.
What's actually happening
Stage one loads a Qwen-Image-Edit diffusion model and runs it against your image with your edit prompt (encoded via TextEncodeQwenImageEdit). The qwen_denoise default of 1.0 means it's doing a full-strength edit pass. Stage two takes that output, encodes it back into latents with a Flux VAE, appends FluxGuidance at your flux_guidance value (default 3.2), and samples with flux_denoise at 0.24 by default. That low number is the whole trick: Flux isn't reimagining your image, it's just cleaning up Qwen's edges, artifacts, and texture.
The node is smart about not redoing work - it tracks which stage's inputs changed and only re-runs the Qwen stage, the Flux stage, or both. Change only the Flux refinement prompt and it won't re-run Qwen. It even unloads the Qwen model from VRAM before Flux loads, so you're never holding 20B of Qwen and 12B of Flux at once.
The inputs that matter
chef_ingredients- the only input you can't skip. It comes from the siblingFlowState_Chef_Ingredientsnode, which packs the edit prompt, the refinement prompt, and up to four images into one wire. No ingredients, no cooking.qwen_denoise- how hard Qwen edits. 1.0 is "do what I said"; lower keeps more of the original structure.flux_denoise- how much Flux polishes. Keep it near the 0.24 default; crank it and Flux starts rewriting the edit.flux_guidance- Flux's flow-matching guidance, 3.2 default. Ignore your SDXL muscle memory: CFG 7 is not a thing here.resolution/orientation/latent_type- pick a preset (there are 18, biased toward 16:9 and 21:9 production ratios) or go Custom, then say whether the source is an Empty Latent or your Input Image. For this node you want Input Image.tiled_decode- turn this on for big outputs; VAE decoding a 4096px-wide image in one chunk is a bottleneck you don't need.
The giant --- π€ Model Settings --- fields are non-functional labels, straight from the author. Ignore them.
Outputs
image (IMAGE) is the finished, Flux-refined result. latent (LATENT) is the same thing still in latent space, handy if you're chaining another sampling pass instead of decoding.
Install
This is a FlowState Creator Suite node, so install the whole pack once:
cd ComfyUI/custom_nodes
git clone https://github.com/flowstateeng/FlowState-Creator-Nodes
β¦then restart ComfyUI. Or just search FlowState-Creator-Nodes in ComfyUI Manager and click install. The pack has no pip dependencies - its requirements.txt is empty because it wraps ComfyUI's own core nodes. What you do need are the model files: a Qwen-Image-Edit checkpoint (they live in diffusion_models, it's a 20B beast), its text encoder and VAE, and a Flux model plus its dual CLIP and VAE. Pick a Flux checkpoint and the flux_model_filetype dropdown will correctly tell you that the separate clip and VAE fields are ignored - they're baked into the checkpoint.
Where people get burned
Qwen-Image-Edit is 20B and heavy. On a mid-range card this thing is slow, and the sage_attention option only shows anything beyond "disabled" if you've actually installed Sage Attention and KJNodes - the pack prints a startup status telling you which is missing. If your edits look like they were ignored, your qwen_denoise is too low; if the result looks mushy, your flux_denoise is too high. That second slider is doing the real work - treat it as your quality dial.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| chef_ingredients | * | β | |
| model_label | STRING | --- π€ Model Settings --- | Label -------------------------------- - This field is not functional. It is just a label for the group of settings below. |
| qwen_model | COMBO | Full Diffusion Model List -------------------------------- - List of all available Diffusion Models (diffusion_models, checkpoints & unets folders). | |
| flux_model_filetype | COMBO | Model File Type -------------------------------- - The type of model file to load. - Checkpoints (typically for fp8 models) contain the CLIP & VAE. - If using a checkpoint, then the weight_dtype, clip_1_name, clip_2_name & vae_name fields will ignored. | |
| flux_model | COMBO | Full Diffusion Model List -------------------------------- - List of all available Diffusion Models (diffusion_models, checkpoints & unets folders). | |
| weight_dtype | COMBO | Weight Datatype (DType) -------------------------------- - The data type to be used for your models weights. | |
| aumentation_label | STRING | --- π₯ Augmentation Settings --- | Label -------------------------------- - This field is not functional. It is just a label for the group of settings below. |
| qwen_optimization_lora | COMBO | LoRA List -------------------------------- - List of available Low-Rank Adaptation models. - Used to transfer a pre-trained style (cyberpunk, anime, photorealism, disney, etc.) to a generated output image. | |
| qwen_style_lora | COMBO | LoRA List -------------------------------- - List of available Low-Rank Adaptation models. - Used to transfer a pre-trained style (cyberpunk, anime, photorealism, disney, etc.) to a generated output image. | |
| qwen_style_lora_strength | FLOAT | 1.000β1 | Low Rank Adaptation Model (LoRA) -------------------------------- - The LoRA used to patch your diffusion model. |
| flux_style_lora | COMBO | LoRA List -------------------------------- - List of available Low-Rank Adaptation models. - Used to transfer a pre-trained style (cyberpunk, anime, photorealism, disney, etc.) to a generated output image. | |
| flux_style_lora_strength | FLOAT | 1.000β1 | Low Rank Adaptation Model (LoRA) -------------------------------- - The LoRA used to patch your diffusion model. |
| sage_attention | COMBO | Sage Attention Mode -------------------------------- - The type of Sage Attention to use. - This field will only show as "disabled" if you do not have the capability to run Sage Attention. | |
| encoders_label | STRING | --- π£ Encoder Settings --- | Label -------------------------------- - This field is not functional. It is just a label for the group of settings below. |
| qwen_clip | COMBO | CLIP / Text Encoder List -------------------------------- - List of available Text Encoders and CLIP models. - Used to convert your text prompts into semantic attention vectors (i.e., numbers) that the model can process. - Contrastive Language-Image Pre-training (CLIP) | |
| qwen_vae | COMBO | VAE List -------------------------------- - List of available Variational Autoencoders (VAE). - Used to encode and decode images. | |
| flux_clip_1 | COMBO | CLIP / Text Encoder List -------------------------------- - List of available Text Encoders and CLIP models. - Used to convert your text prompts into semantic attention vectors (i.e., numbers) that the model can process. - Contrastive Language-Image Pre-training (CLIP) | |
| flux_clip_2 | COMBO | CLIP / Text Encoder List -------------------------------- - List of available Text Encoders and CLIP models. - Used to convert your text prompts into semantic attention vectors (i.e., numbers) that the model can process. - Contrastive Language-Image Pre-training (CLIP) | |
| flux_vae | COMBO | VAE List -------------------------------- - List of available Variational Autoencoders (VAE). - Used to encode and decode images. | |
| tiled_decode | BOOLEAN | false | Tiiled Decode -------------------------------- - VAE decoding for large images can be a severe bottleneck. - Tiled decode helps reduce time by performing decoding on smaller chunks of the image instead of decoding the whole image at once. |
| image_label | STRING | --- πΌοΈ Image Settings --- | Label -------------------------------- - This field is not functional. It is just a label for the group of settings below. |
| resolution | COMBO | Resolution Selector -------------------------------- - Select "Custom" to use the entered custom_width & custom_height. - Select a preset resolution & orientation. | |
| orientation | COMBO | Orientaion Selector -------------------------------- - Resolutions given in horizontal orientation. Select vertical to swap resolution aspect ratio. | |
| latent_type | COMBO | Latent Type -------------------------------- - Your choice of an empty latent (all zeros) or an image as a latent. | |
| custom_width | INT | 102416β16384 | Width -------------------------------- - Defines the width of the image. |
| custom_height | INT | 102416β16384 | Height -------------------------------- - Defines the height of the image. |
| custom_batch_size | INT | 11β4096 | Custom Batch Size -------------------------------- - The number of images you want to generate. |
| sampling_label | STRING | --- π§ͺ Sampling Settings --- | Label -------------------------------- - This field is not functional. It is just a label for the group of settings below. |
| seed | INT | 32-9223372036854776000β9223372036854776000 | Seed -------------------------------- - Seed used to generate inital random noise. |
| sampling_algorithm | COMBO | Sampling Algorithm -------------------------------- - List of available Sampling Algorithms. - Used to control the noise removal during the sampling process. | |
| scheduling_algorithm | COMBO | Scheduling Algorithm -------------------------------- - List of available Scheduling Algorithms. - Used to control the denoising steps during the sampling process. | |
| qwen_steps | INT | 321β10000 | Steps -------------------------------- - Defines the number of steps to take in the sampling process. |
| qwen_denoise | FLOAT | 1.000β1 | Sampler Denoise Amount -------------------------------- - The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
| flux_guidance | FLOAT | 3.20β100 | Guidance -------------------------------- - Defines the number of steps to take in the sampling process. |
| flux_steps | INT | 321β10000 | Steps -------------------------------- - Defines the number of steps to take in the sampling process. |
| flux_denoise | FLOAT | 0.240β1 | Sampler Denoise Amount -------------------------------- - The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The image output. |
| latent | LATENT | The latent output. |