{
  "id": "6a671f1c-9eb5-4685-8241-ffb9c63acf20",
  "revision": 0,
  "last_node_id": 105,
  "last_link_id": 18,
  "nodes": [
    {
      "id": 29,
      "type": "UNETLoader",
      "pos": [
        640,
        70
      ],
      "size": [
        380,
        90
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            1
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "UNETLoader",
        "models": [
          {
            "name": "flux3_image_klein_sd_int8_convrot.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3_image_klein_sd_int8_convrot.safetensors",
            "directory": "diffusion_models"
          }
        ]
      },
      "widgets_values": [
        "flux3_image_klein_sd_int8_convrot.safetensors",
        "default"
      ],
      "widgets_values_named": {
        "unet_name": "flux3_image_klein_sd_int8_convrot.safetensors",
        "weight_dtype": "default"
      },
      "color": "#223",
      "bgcolor": "#335",
      "title": "Diffusion Model (FLUX.3 Klein)"
    },
    {
      "id": 31,
      "type": "CLIPLoader",
      "pos": [
        640,
        210
      ],
      "size": [
        380,
        110
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "slot_index": 0,
          "links": [
            8,
            10
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPLoader",
        "models": [
          {
            "name": "qwen3vl_4b_int8_convrot.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3vl_4b_int8_convrot.safetensors",
            "directory": "text_encoders"
          }
        ]
      },
      "widgets_values": [
        "qwen3vl_4b_int8_convrot.safetensors",
        "flux3",
        "default"
      ],
      "widgets_values_named": {
        "clip_name": "qwen3vl_4b_int8_convrot.safetensors",
        "type": "flux3",
        "device": "default"
      },
      "color": "#223",
      "bgcolor": "#335",
      "title": "Text Encoder (Qwen3-VL 4B)"
    },
    {
      "id": 33,
      "type": "VAELoader",
      "pos": [
        640,
        370
      ],
      "size": [
        380,
        70
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "slot_index": 0,
          "links": [
            17
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "VAELoader",
        "models": [
          {
            "name": "flux2-vae.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors",
            "directory": "vae"
          }
        ]
      },
      "widgets_values": [
        "flux2-vae.safetensors"
      ],
      "widgets_values_named": {
        "vae_name": "flux2-vae.safetensors"
      },
      "color": "#223",
      "bgcolor": "#335",
      "title": "VAE (flux2-vae)"
    },
    {
      "id": 19,
      "type": "ResolutionSelector",
      "pos": [
        640,
        560
      ],
      "size": [
        380,
        150
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "width",
          "type": "INT",
          "links": [
            13
          ]
        },
        {
          "name": "height",
          "type": "INT",
          "links": [
            14
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "ResolutionSelector"
      },
      "widgets_values": [
        "3:4 (Portrait Standard)",
        1,
        8
      ],
      "widgets_values_named": {
        "aspect_ratio": "3:4 (Portrait Standard)",
        "megapixels": 1,
        "multiple": 8
      },
      "title": "Pick Image Size (aspect ratio)",
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 36,
      "type": "EmptyFlux2LatentImage",
      "pos": [
        640,
        760
      ],
      "size": [
        380,
        110
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 13
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 14
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            15
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "EmptyFlux2LatentImage"
      },
      "widgets_values": [
        1024,
        1024,
        1
      ],
      "widgets_values_named": {
        "width": 1024,
        "height": 1024,
        "batch_size": 1
      },
      "color": "#432",
      "bgcolor": "#653",
      "title": "Empty Image (canvas)"
    },
    {
      "id": 25,
      "type": "PrimitiveStringMultiline",
      "pos": [
        1150,
        70
      ],
      "size": [
        480,
        260
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            4,
            5
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "A red fox standing in fresh snow at sunrise"
      ],
      "widgets_values_named": {
        "value": "A dynamic, high-octane cinematic action still capturing a green-skinned orc warrior and a red-scaled dragon humanoid clashing side-by-side during a castle breach. Low-angle wide composition. On the left, the massive orc with battle-scarred olive-green skin and braided war-locks swings a heavy iron greataxe horizontally, roaring mid-strike with realistic motion blur tracking the weapon's arc. On the right, the towering dragon humanoid, clad in burnished bronze plate armor with swept-back horns, unleashes a torrent of photorealistic golden fire from his open reptilian jaws into the enemy ranks off-frame. Shattered stone debris and glowing sparks fill the air. The setting is a smoking fortress courtyard at dawn, lit by dramatic firelight and modern volumetric smoke. Filmed as a 1990s 35mm high-fantasy movie still, authentic Kodak motion picture film grain, Panavision anamorphic lens flare from the dragon's breath, tactile practical creature prosthetics and scales, with cutting-edge computational fluid dynamics on the fire."
      },
      "title": "\u270d\ufe0f YOUR IDEA - type a short prompt here",
      "color": "#232",
      "bgcolor": "#353"
    },
    {
      "id": 26,
      "type": "CLIPLoader",
      "pos": [
        1150,
        370
      ],
      "size": [
        480,
        110
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            2
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPLoader",
        "models": [
          {
            "name": "qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors",
            "directory": "text_encoders"
          }
        ]
      },
      "widgets_values": [
        "qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors",
        "flux3",
        "default"
      ],
      "widgets_values_named": {
        "clip_name": "qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors",
        "type": "flux3",
        "device": "default"
      },
      "title": "Prompt Enhancer Model (Qwen3.5 9B)",
      "color": "#223",
      "bgcolor": "#335"
    },
    {
      "id": 27,
      "type": "PrimitiveStringMultiline",
      "pos": [
        1150,
        520
      ],
      "size": [
        480,
        380
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            3
          ]
        }
      ],
      "title": "System Prompt (instructions for the enhancer - don't edit)",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "You are the prompt upsampler of a text-to-image model. Expand the user's short request into ONE detailed, self-contained caption: the exact text the image model receives. Output only the caption, with no greetings, explanations, refusals, questions, Markdown, headings, JSON, coordinates, ids or angle-bracket tokens, and no quotes around it. If the input is not clearly an image request, caption a visualization of its concept. The request may begin with a \"TARGET CANVAS: W:H\" line: compose for that canvas (wide spreads content sideways, tall stacks it) and never mention the ratio or the canvas.\n\nFidelity and planning: keep every explicit subject, attribute, count, spatial constraint, style cue and piece of wording; never contradict, substitute, drop or narrow the request, and keep an abstract concept abstract. Decide everything left open as ONE concrete, consistent plan; never offer alternatives or hedge. Never re-express a stated constraint through another mechanism; add camera optics (depth of field, bokeh, blur) only when asked for or implied. Without a stated style, plan an actual photograph and open with the medium convention (\"Full-color outdoor photograph, ...\", \"Full-color indoor photograph, ...\", \"Studio photograph, ...\", \"Close-up photograph, ...\"); keep \"Photorealistic\" for renders, and turn \"photorealistic\" or \"realistic\" requests for photos into the photograph convention. Give a photograph a few ordinary, non-ideal specifics drawn from the scene's own objects instead of the stock-photo ideal. Do not invent names, brands, logos or celebrities; keep user-named ones. A long request keeps its content but not its wording: drop appraisal and sales vocabulary, turn moods into observable physical facts, and add only new concrete content with positions. Time of day is lighting, not rendered text.\n\nCaption format: one continuous prose block in the generative voice, never \"this image shows\", \"we can see\" or \"is visible\". Lead with medium and style, then scene, lighting and camera, then the subjects with concrete colors, materials and state. Every person in focus gets an observable profile: ethnicity, gender, age range, skin tone (\"fair skin\", \"brown skin\"), hair and clothing. Make the layout reconstructable from words: frame-relative positions (frame-left, frame-right, upper, lower, foreground, midground, background), sentence-initial anchors (\"On the left, ...\", \"In the background, ...\"), relations (holds, faces, behind) and a consistent order; describe up to about ten instances one by one, beyond that give the exact count and arrangement. Out-of-focus or distant planes are shapes, colors and silhouettes, never identities or readable text, and the background takes about a sixth of the caption. Be definite: no hedging adverbs, no quality or emotion judgments, no closing sentence about mood; state negations as what is present. Rendered text: transcribe every wording verbatim inside double quotes in its original language and script, keep the line breaks of multi-line text, and give its typography, color and placement; author concrete, domain-correct wording when the request needs text it does not supply, and name canonical structures (calendar, keyboard, periodic table) exactly with their full layout. All prose is English; only quoted text keeps its language. Typical length is 100 to 350 words, more for complex scenes.\n\nOutput only the caption.\n"
      ],
      "widgets_values_named": {
        "value": "You are the prompt upsampler of a text-to-image model. Expand the user's short request into ONE detailed, self-contained caption: the exact text the image model receives. Output only the caption, with no greetings, explanations, refusals, questions, Markdown, headings, JSON, coordinates, ids or angle-bracket tokens, and no quotes around it. If the input is not clearly an image request, caption a visualization of its concept. The request may begin with a \"TARGET CANVAS: W:H\" line: compose for that canvas (wide spreads content sideways, tall stacks it) and never mention the ratio or the canvas.\n\nFidelity and planning: keep every explicit subject, attribute, count, spatial constraint, style cue and piece of wording; never contradict, substitute, drop or narrow the request, and keep an abstract concept abstract. Decide everything left open as ONE concrete, consistent plan; never offer alternatives or hedge. Never re-express a stated constraint through another mechanism; add camera optics (depth of field, bokeh, blur) only when asked for or implied. Without a stated style, plan an actual photograph and open with the medium convention (\"Full-color outdoor photograph, ...\", \"Full-color indoor photograph, ...\", \"Studio photograph, ...\", \"Close-up photograph, ...\"); keep \"Photorealistic\" for renders, and turn \"photorealistic\" or \"realistic\" requests for photos into the photograph convention. Give a photograph a few ordinary, non-ideal specifics drawn from the scene's own objects instead of the stock-photo ideal. Do not invent names, brands, logos or celebrities; keep user-named ones. A long request keeps its content but not its wording: drop appraisal and sales vocabulary, turn moods into observable physical facts, and add only new concrete content with positions. Time of day is lighting, not rendered text.\n\nCaption format: one continuous prose block in the generative voice, never \"this image shows\", \"we can see\" or \"is visible\". Lead with medium and style, then scene, lighting and camera, then the subjects with concrete colors, materials and state. Every person in focus gets an observable profile: ethnicity, gender, age range, skin tone (\"fair skin\", \"brown skin\"), hair and clothing. Make the layout reconstructable from words: frame-relative positions (frame-left, frame-right, upper, lower, foreground, midground, background), sentence-initial anchors (\"On the left, ...\", \"In the background, ...\"), relations (holds, faces, behind) and a consistent order; describe up to about ten instances one by one, beyond that give the exact count and arrangement. Out-of-focus or distant planes are shapes, colors and silhouettes, never identities or readable text, and the background takes about a sixth of the caption. Be definite: no hedging adverbs, no quality or emotion judgments, no closing sentence about mood; state negations as what is present. Rendered text: transcribe every wording verbatim inside double quotes in its original language and script, keep the line breaks of multi-line text, and give its typography, color and placement; author concrete, domain-correct wording when the request needs text it does not supply, and name canonical structures (calendar, keyboard, periodic table) exactly with their full layout. All prose is English; only quoted text keeps its language. Typical length is 100 to 350 words, more for complex scenes.\n\nOutput only the caption.\n"
      },
      "color": "#222",
      "bgcolor": "#333"
    },
    {
      "id": 28,
      "type": "TextGenerate",
      "pos": [
        1670,
        70
      ],
      "size": [
        420,
        470
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 2
        },
        {
          "name": "image",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "video",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "audio",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "name": "system_prompt",
          "shape": 7,
          "type": "STRING",
          "link": 3
        },
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 4
        }
      ],
      "outputs": [
        {
          "name": "generated_text",
          "type": "STRING",
          "links": [
            6
          ]
        },
        {
          "name": "thinking",
          "type": "STRING",
          "links": []
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "TextGenerate"
      },
      "widgets_values": [
        "",
        3584,
        "on",
        1,
        1,
        0.95,
        0,
        1.05,
        605452029419059,
        1.5,
        false,
        true,
        "auto"
      ],
      "widgets_values_named": {
        "prompt": "",
        "max_length": 3584,
        "sampling_mode": "on",
        "sampling_mode.temperature": 1,
        "sampling_mode.top_k": 1,
        "sampling_mode.top_p": 0.95,
        "sampling_mode.min_p": 0,
        "sampling_mode.repetition_penalty": 1.05,
        "sampling_mode.seed": 605452029419059,
        "sampling_mode.presence_penalty": 1.5,
        "thinking": false,
        "use_default_template": true,
        "mtp": "auto"
      },
      "title": "Prompt Enhancer (AI expands your idea)",
      "color": "#233",
      "bgcolor": "#355"
    },
    {
      "id": 35,
      "type": "ComfySwitchNode",
      "pos": [
        1670,
        590
      ],
      "size": [
        420,
        80
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "on_false",
          "shape": 7,
          "type": "STRING",
          "link": 5
        },
        {
          "name": "on_true",
          "shape": 7,
          "type": "STRING",
          "link": 6
        }
      ],
      "outputs": [
        {
          "name": "output",
          "type": "STRING",
          "links": [
            7
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "ComfySwitchNode"
      },
      "widgets_values": [
        true
      ],
      "widgets_values_named": {
        "switch": true
      },
      "title": "Enhancer ON / OFF  (True = enhanced, False = your own text)",
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 34,
      "type": "PreviewAny",
      "pos": [
        1670,
        720
      ],
      "size": [
        600,
        260
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 7
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            9
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {},
      "title": "Final Prompt that goes to FLUX (preview)",
      "color": "#222",
      "bgcolor": "#333"
    },
    {
      "id": 30,
      "type": "CLIPTextEncode",
      "pos": [
        2350,
        70
      ],
      "size": [
        480,
        300
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 8
        },
        {
          "name": "text",
          "type": "STRING",
          "widget": {
            "name": "text"
          },
          "link": 9
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            11
          ]
        }
      ],
      "title": "Positive Prompt (auto-filled - no typing needed)",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        "A close-up photograph of a red fox standing in fresh snow at sunrise. The fox faces the camera with alert ears and amber eyes, its thick orange fur dusted with snowflakes. Soft golden light comes from the left, the background is a blurred line of snow-covered pine trees, shallow depth of field."
      ],
      "widgets_values_named": {
        "text": "A close-up photograph of a red fox standing in fresh snow at sunrise. The fox faces the camera with alert ears and amber eyes, its thick orange fur dusted with snowflakes. Soft golden light comes from the left, the background is a blurred line of snow-covered pine trees, shallow depth of field."
      },
      "color": "#232",
      "bgcolor": "#353"
    },
    {
      "id": 37,
      "type": "CLIPTextEncode",
      "pos": [
        2350,
        430
      ],
      "size": [
        480,
        110
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 10
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            12
          ]
        }
      ],
      "title": "Negative Prompt (leave empty)",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        ""
      ],
      "widgets_values_named": {
        "text": ""
      },
      "color": "#322",
      "bgcolor": "#533"
    },
    {
      "id": 32,
      "type": "KSampler",
      "pos": [
        2910,
        70
      ],
      "size": [
        400,
        320
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 1
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 11
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 12
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 15
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            16
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "KSampler"
      },
      "widgets_values": [
        123456789,
        "randomize",
        15,
        1,
        "res_2s_ode",
        "bong_tangent",
        1
      ],
      "widgets_values_named": {
        "seed": 123456789,
        "control_after_generate": "randomize",
        "steps": 15,
        "cfg": 1,
        "sampler_name": "res_2s_ode",
        "scheduler": "bong_tangent",
        "denoise": 1
      },
      "title": "KSampler - the 'artist'",
      "color": "#323",
      "bgcolor": "#535"
    },
    {
      "id": 38,
      "type": "VAEDecode",
      "pos": [
        3410,
        70
      ],
      "size": [
        210,
        50
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 16
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 17
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            18
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "VAEDecode"
      },
      "title": "VAE Decode (latent -> image)",
      "color": "#222",
      "bgcolor": "#333"
    },
    {
      "id": 60,
      "type": "SaveImage",
      "pos": [
        3410,
        170
      ],
      "size": [
        700,
        640
      ],
      "flags": {},
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 18
        }
      ],
      "outputs": [],
      "title": "\ud83d\udcbe Result - preview + auto-save",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "Flux3/ComfyUI"
      ],
      "color": "#222",
      "bgcolor": "#333"
    },
    {
      "id": 100,
      "type": "MarkdownNote",
      "pos": [
        -10,
        0
      ],
      "size": [
        600,
        1000
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "\ud83d\udcd6 START HERE",
      "properties": {},
      "widgets_values": [
        "# \ud83d\ude80 FLUX.3 Klein - Text to Image\n**Beginner workflow with Prompt Enhancer**\n\n## How to use (5 steps)\n1. **Load models** - the blue nodes. Nothing to change if the files are installed.\n2. **Type a SHORT idea** in the green **YOUR IDEA** box. The enhancer turns it into a detailed prompt.\n3. **Pick a size** in the yellow node (Portrait, Square, Landscape...).\n4. **Press Run** (Ctrl+Enter).\n5. **See the result** on the right. It is also saved in `ComfyUI/output/Flux3/`.\n\n**Don't want the enhancer?** Set the yellow **ON / OFF** switch to **False**. Your idea text is then used exactly as you wrote it (write a full detailed prompt in that case).\n\n## Data flow\n`Your idea -> Enhancer -> Final prompt -> KSampler -> VAE Decode -> Image`\n\n## Required model files\n**diffusion_models**\n- [flux3_image_klein_sd_int8_convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3_image_klein_sd_int8_convrot.safetensors)\n\n**text_encoders**\n- [qwen3vl_4b_int8_convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3vl_4b_int8_convrot.safetensors)\n- [qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors) (enhancer)\n\n**vae**\n- [flux2-vae.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors)\n\nAll files: [Hugging Face - flux-3-image-klein-comfy](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy)\n\n## Where to put the files\n```\nComfyUI/models/\n\u251c\u2500\u2500 diffusion_models/  flux3_image_klein_sd_int8_convrot.safetensors\n\u251c\u2500\u2500 text_encoders/     qwen3vl_4b_int8_convrot.safetensors\n\u2502                      qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors\n\u2514\u2500\u2500 vae/               flux2-vae.safetensors\n```\n\n## Something not working?\nUpdate ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)), then restart.\n- Runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      ],
      "color": "#232",
      "bgcolor": "#000"
    },
    {
      "id": 101,
      "type": "MarkdownNote",
      "pos": [
        1670,
        1010
      ],
      "size": [
        600,
        150
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "\ud83d\udca1 Enhancer tips",
      "properties": {},
      "widgets_values": [
        "**Short idea in, detailed prompt out.** Example: *\"a cozy cabin in a snowy forest\"* becomes a full paragraph with lighting, lens and style.\n\nCheck the **Final Prompt preview** above after each run to see exactly what FLUX received. Press Run again for a different variation."
      ],
      "color": "#233",
      "bgcolor": "#355"
    },
    {
      "id": 102,
      "type": "MarkdownNote",
      "pos": [
        2350,
        590
      ],
      "size": [
        480,
        200
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "\ud83d\udca1 Prompt box & negative",
      "properties": {},
      "widgets_values": [
        "The **Positive Prompt** is filled automatically from the enhancer / your idea - you don't type in it.\n\nThe **Negative Prompt** stays empty - this model doesn't need it."
      ],
      "color": "#232",
      "bgcolor": "#353"
    },
    {
      "id": 103,
      "type": "MarkdownNote",
      "pos": [
        640,
        900
      ],
      "size": [
        380,
        130
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "\ud83d\udcd0 Size tip",
      "properties": {},
      "widgets_values": [
        "Change **aspect_ratio** to Portrait / Square / Landscape.\n\n**megapixels = 1** is fast. Raise to 2 for more detail (needs more VRAM and time)."
      ],
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 104,
      "type": "MarkdownNote",
      "pos": [
        2910,
        430
      ],
      "size": [
        400,
        560
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "\u2699\ufe0f Sampler settings explained",
      "properties": {},
      "widgets_values": [
        "| Setting | What it does | Suggested |\n|---|---|---|\n| **seed** | Number that decides the random image | `randomize` = new image every run |\n| **control_after_generate** | What the seed does after each run | `randomize` = new ideas, `fixed` = repeat a result |\n| **steps** | Quality vs. speed | **4-16** (default 15) |\n| **cfg** | How strictly to follow the prompt | **Keep at 1** for this model |\n| **sampler_name** | Algorithm | `res_2s_ode` |\n| **scheduler** | Noise schedule | `bong_tangent` |\n| **denoise** | Always 1 for text-to-image | **1.0** |\n\n### \u26a0\ufe0f If `res_2s_ode` / `bong_tangent` are missing in your list\nUpdate ComfyUI, then install the RES4LYF nodes:\n1. Open **ComfyUI Manager**.\n2. Click **Custom Nodes Manager**.\n3. Search for `RES4LYF` (also written `Res3Lyf` / `Res4Lyf`) and click **Install**.\n4. **Restart ComfyUI** and refresh the page.\n\nQuick fallback: use `euler` + `simple`."
      ],
      "color": "#323",
      "bgcolor": "#535"
    },
    {
      "id": 105,
      "type": "Note",
      "pos": [
        3410,
        830
      ],
      "size": [
        700,
        60
      ],
      "flags": {},
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Tip",
      "properties": {},
      "widgets_values": [
        "Not happy with the picture? Just press Run again - a new seed gives a new image. Switch control_after_generate to 'fixed' to keep the same seed."
      ],
      "color": "#222",
      "bgcolor": "#333"
    }
  ],
  "links": [
    [
      1,
      29,
      0,
      32,
      0,
      "MODEL"
    ],
    [
      2,
      26,
      0,
      28,
      0,
      "CLIP"
    ],
    [
      3,
      27,
      0,
      28,
      4,
      "STRING"
    ],
    [
      4,
      25,
      0,
      28,
      5,
      "STRING"
    ],
    [
      5,
      25,
      0,
      35,
      0,
      "STRING"
    ],
    [
      6,
      28,
      0,
      35,
      1,
      "STRING"
    ],
    [
      7,
      35,
      0,
      34,
      0,
      "*"
    ],
    [
      8,
      31,
      0,
      30,
      0,
      "CLIP"
    ],
    [
      9,
      34,
      0,
      30,
      1,
      "STRING"
    ],
    [
      10,
      31,
      0,
      37,
      0,
      "CLIP"
    ],
    [
      11,
      30,
      0,
      32,
      1,
      "CONDITIONING"
    ],
    [
      12,
      37,
      0,
      32,
      2,
      "CONDITIONING"
    ],
    [
      13,
      19,
      0,
      36,
      0,
      "INT"
    ],
    [
      14,
      19,
      1,
      36,
      1,
      "INT"
    ],
    [
      15,
      36,
      0,
      32,
      3,
      "LATENT"
    ],
    [
      16,
      32,
      0,
      38,
      0,
      "LATENT"
    ],
    [
      17,
      33,
      0,
      38,
      1,
      "VAE"
    ],
    [
      18,
      38,
      0,
      60,
      0,
      "IMAGE"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "Read me",
      "bounding": [
        -30,
        -30,
        640,
        1060
      ],
      "color": "#3f9e5a",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 2,
      "title": "\u2460 Load Models",
      "bounding": [
        620,
        0,
        420,
        470
      ],
      "color": "#3f789e",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 3,
      "title": "\u2461 Image Size",
      "bounding": [
        620,
        500,
        420,
        550
      ],
      "color": "#b58b2a",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 4,
      "title": "\u2462 Prompt Enhancer (type your idea here)",
      "bounding": [
        1130,
        0,
        1180,
        1190
      ],
      "color": "#3f9e9e",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 5,
      "title": "\u2463 Final Prompt",
      "bounding": [
        2330,
        0,
        520,
        830
      ],
      "color": "#3f9e5a",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 6,
      "title": "\u2464 Generate (Sampler)",
      "bounding": [
        2890,
        0,
        440,
        1030
      ],
      "color": "#8e5aa6",
      "font_size": 28,
      "flags": {}
    },
    {
      "id": 7,
      "title": "\u2465 Result",
      "bounding": [
        3390,
        0,
        740,
        920
      ],
      "color": "#88a",
      "font_size": 28,
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.4,
      "offset": [
        100,
        100
      ]
    },
    "frontendVersion": "1.55.17"
  },
  "version": 0.4
}