{
  "id": "e8f30439-267f-45de-b260-db0d114b2c85",
  "revision": 0,
  "last_node_id": 43,
  "last_link_id": 65,
  "nodes": [
    {
      "id": 9,
      "type": "SaveImage",
      "pos": [
        3113.0222057972196,
        77.8851274214324
      ],
      "size": [
        558.3621351257816,
        626.7889557679653
      ],
      "flags": {},
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 57
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "flux3_klein_distilled\\ComfyUI-%date:yyyy-MM-dd%"
      ],
      "widgets_values_named": {
        "filename_prefix": "flux3_klein_distilled\\ComfyUI-%date:yyyy-MM-dd%"
      }
    },
    {
      "id": 19,
      "type": "ResolutionSelector",
      "pos": [
        513.6591403576115,
        -106.65144914152837
      ],
      "size": [
        270,
        150
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "width",
          "type": "INT",
          "links": [
            59
          ]
        },
        {
          "name": "height",
          "type": "INT",
          "links": [
            60
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "ResolutionSelector"
      },
      "widgets_values": [
        "3:4 (Portrait Standard)",
        1.5,
        8
      ],
      "widgets_values_named": {
        "aspect_ratio": "3:4 (Portrait Standard)",
        "megapixels": 1.5,
        "multiple": 8
      }
    },
    {
      "id": 20,
      "type": "MarkdownNote",
      "pos": [
        -463.19430970065076,
        -223.11269024051467
      ],
      "size": [
        603.0387487350132,
        665.6213859761386
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:black-forest-labs/flux-3-image-klein-comfy](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy)\n\n**text_encoders**\n\n- [qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/blob/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors)\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\n> **VRAM tip** — this template ships the quantised distilled checkpoint to keep the footprint small. With more than 24 GB of VRAM, use the bf16 weights instead: [`flux3-image-klein-bf16.safetensors`](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-bf16.safetensors).\n\n**diffusion_models**\n\n- [flux3-image-klein-int8-convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-int8-convrot.safetensors)\n\n**vae**\n\n- [flux2-vae.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 text_encoders/\n│   │   ├── qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors\n│   │   └── qwen3vl_4b_int8_convrot.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── flux3-image-klein-int8-convrot.safetensors\n│   └── 📂 vae/\n│       └── flux2-vae.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      ],
      "widgets_values_named": {
        "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:black-forest-labs/flux-3-image-klein-comfy](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy)\n\n**text_encoders**\n\n- [qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/blob/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors)\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\n> **VRAM tip** — this template ships the quantised distilled checkpoint to keep the footprint small. With more than 24 GB of VRAM, use the bf16 weights instead: [`flux3-image-klein-bf16.safetensors`](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-bf16.safetensors).\n\n**diffusion_models**\n\n- [flux3-image-klein-int8-convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-int8-convrot.safetensors)\n\n**vae**\n\n- [flux2-vae.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 text_encoders/\n│   │   ├── qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors\n│   │   └── qwen3vl_4b_int8_convrot.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── flux3-image-klein-int8-convrot.safetensors\n│   └── 📂 vae/\n│       └── flux2-vae.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 23,
      "type": "CreateBoundingBoxes",
      "pos": [
        -550,
        630
      ],
      "size": [
        420,
        560
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "background",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "bboxes",
          "shape": 7,
          "type": "BOUNDING_BOX,ARRAY,STRING",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "preview",
          "type": "IMAGE",
          "links": null
        },
        {
          "name": "bboxes",
          "type": "BOUNDING_BOX",
          "links": null
        },
        {
          "name": "elements",
          "type": "ARRAY",
          "links": [
            44
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CreateBoundingBoxes"
      },
      "widgets_values": [
        1024,
        1024,
        [],
        []
      ],
      "widgets_values_named": {
        "width": 1024,
        "height": 1024,
        "editor_state": [],
        "last_incoming": []
      }
    },
    {
      "id": 24,
      "type": "PreviewAny",
      "pos": [
        -90,
        890
      ],
      "size": [
        390,
        180
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 45
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 25,
      "type": "Flux3LayoutPrompt",
      "pos": [
        -100,
        640
      ],
      "size": [
        400,
        200
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "name": "element",
          "type": "ARRAY",
          "link": 44
        }
      ],
      "outputs": [
        {
          "name": "prompt",
          "type": "STRING",
          "links": [
            45
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "Flux3LayoutPrompt"
      },
      "widgets_values": [
        ""
      ],
      "widgets_values_named": {
        "prompt": ""
      }
    },
    {
      "id": 27,
      "type": "MarkdownNote",
      "pos": [
        0,
        1120
      ],
      "size": [
        210,
        90
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "Plug the `STRING` output into the `prompt` input of the `Text to Image (FLUX 3 Image Klein SD)` node when you want to use bounding box\n"
      ],
      "widgets_values_named": {
        "text": "Plug the `STRING` output into the `prompt` input of the `Text to Image (FLUX 3 Image Klein SD)` node when you want to use bounding box\n"
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 28,
      "type": "PrimitiveStringMultiline",
      "pos": [
        505.9078423699435,
        -625.3376518985632
      ],
      "size": [
        490,
        450
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            52,
            63
          ]
        }
      ],
      "title": "Text (Multiline) - Positive Prompt",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "Ultra-realistic portrait of an East Asian woman with warm natural skin tone, soft diffused daylight, crisp facial details, natural pores and fine hair texture, minimal makeup, slight smile, smooth gradient background, shallow depth of field, cinematic realism, perfect color accuracy, lifelike eyes, gentle catchlights, high dynamic range, 8K photo aesthetic."
      ],
      "widgets_values_named": {
        "value": "Ultra-realistic portrait of an East Asian woman with warm natural skin tone, soft diffused daylight, crisp facial details, natural pores and fine hair texture, minimal makeup, slight smile, smooth gradient background, shallow depth of field, cinematic realism, perfect color accuracy, lifelike eyes, gentle catchlights, high dynamic range, 8K photo aesthetic."
      },
      "color": "#232",
      "bgcolor": "#353"
    },
    {
      "id": 29,
      "type": "CLIPLoader",
      "pos": [
        1370.250783778544,
        -674.633260273215
      ],
      "size": [
        500,
        110
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            61
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPLoader",
        "models": [
          {
            "name": "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
            "directory": "text_encoders"
          }
        ]
      },
      "widgets_values": [
        "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
        "flux3",
        "default"
      ],
      "widgets_values_named": {
        "clip_name": "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
        "type": "flux3",
        "device": "default"
      }
    },
    {
      "id": 30,
      "type": "PrimitiveStringMultiline",
      "pos": [
        1360.250783778543,
        -508.48357395148366
      ],
      "size": [
        530,
        700
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            62
          ]
        }
      ],
      "title": "Text (System prompt)",
      "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"
      }
    },
    {
      "id": 31,
      "type": "TextGenerate",
      "pos": [
        1910.250783778543,
        -688.4835739514837
      ],
      "size": [
        400,
        460
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 61
        },
        {
          "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": 62
        },
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 63
        }
      ],
      "outputs": [
        {
          "name": "generated_text",
          "type": "STRING",
          "links": [
            53
          ]
        },
        {
          "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,
        "off"
      ],
      "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": "off"
      }
    },
    {
      "id": 32,
      "type": "UNETLoader",
      "pos": [
        984.0704559999986,
        302.3874849165625
      ],
      "size": [
        340,
        90
      ],
      "flags": {},
      "order": 7,
      "mode": 4,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": []
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "UNETLoader",
        "models": [
          {
            "name": "flux3-image-klein-int8-convrot.safetensors",
            "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-int8-convrot.safetensors",
            "directory": "diffusion_models"
          }
        ]
      },
      "widgets_values": [
        "flux3-image-klein-int8-convrot.safetensors",
        "default"
      ],
      "widgets_values_named": {
        "unet_name": "flux3-image-klein-int8-convrot.safetensors",
        "weight_dtype": "default"
      },
      "color": "#223",
      "bgcolor": "#335"
    },
    {
      "id": 33,
      "type": "CLIPTextEncode",
      "pos": [
        1760.250783778543,
        331.51642604851634
      ],
      "size": [
        450,
        460
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 46
        },
        {
          "name": "text",
          "type": "STRING",
          "widget": {
            "name": "text"
          },
          "link": 47
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            49
          ]
        }
      ],
      "title": "Positive Prompt",
      "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": 34,
      "type": "CLIPLoader",
      "pos": [
        1360.250783778543,
        461.51642604851634
      ],
      "size": [
        340,
        110
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "slot_index": 0,
          "links": [
            46,
            54
          ]
        }
      ],
      "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": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 35,
      "type": "KSampler",
      "pos": [
        2270.2507837785433,
        271.51642604851634
      ],
      "size": [
        320,
        480
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 64
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 49
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 50
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 58
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            55
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "KSampler"
      },
      "widgets_values": [
        849853440950331,
        "randomize",
        16,
        1,
        "euler",
        "simple",
        1
      ],
      "widgets_values_named": {
        "seed": 849853440950331,
        "control_after_generate": "randomize",
        "steps": 16,
        "cfg": 1,
        "sampler_name": "euler",
        "scheduler": "simple",
        "denoise": 1
      }
    },
    {
      "id": 36,
      "type": "VAELoader",
      "pos": [
        1360.250783778543,
        641.5164260485163
      ],
      "size": [
        340,
        60
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "slot_index": 0,
          "links": [
            56
          ]
        }
      ],
      "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": "#323",
      "bgcolor": "#535"
    },
    {
      "id": 37,
      "type": "PreviewAny",
      "pos": [
        2340.2507837785433,
        -418.48357395148366
      ],
      "size": [
        350,
        490
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 51
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            47
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 38,
      "type": "ComfySwitchNode",
      "pos": [
        1022.5652864619138,
        -722.1220947754648
      ],
      "size": [
        311.7315022721491,
        78
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "name": "on_false",
          "shape": 7,
          "type": "STRING",
          "link": 52
        },
        {
          "name": "on_true",
          "shape": 7,
          "type": "STRING",
          "link": 53
        }
      ],
      "outputs": [
        {
          "name": "output",
          "type": "STRING",
          "links": [
            51
          ]
        }
      ],
      "title": "If/Else Switch - Prompt Enhancer",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "ComfySwitchNode"
      },
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "switch": false
      }
    },
    {
      "id": 39,
      "type": "EmptyFlux2LatentImage",
      "pos": [
        1390.250783778543,
        831.5164260485163
      ],
      "size": [
        300,
        110
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 59
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 60
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            58
          ]
        }
      ],
      "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": "#323",
      "bgcolor": "#535"
    },
    {
      "id": 40,
      "type": "CLIPTextEncode",
      "pos": [
        1760.250783778543,
        851.5164260485163
      ],
      "size": [
        460,
        110
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 54
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            50
          ]
        }
      ],
      "title": "Negative Prompt (empty = reference default)",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        ""
      ],
      "widgets_values_named": {
        "text": ""
      },
      "color": "#223",
      "bgcolor": "#335"
    },
    {
      "id": 41,
      "type": "VAEDecode",
      "pos": [
        2630.2507837785433,
        271.51642604851634
      ],
      "size": [
        210,
        50
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 55
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 56
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            57,
            65
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "VAEDecode"
      }
    },
    {
      "id": 42,
      "type": "UnetLoaderGGUF",
      "pos": [
        1365.7923505520941,
        316.9416625259668
      ],
      "size": [
        319.3727966648062,
        68.57987715838021
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            64
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfyui-gguf",
        "ver": "1.1.10",
        "Node name for S&R": "UnetLoaderGGUF"
      },
      "widgets_values": [
        "flux-3-image-klein-Q8_0.gguf"
      ],
      "widgets_values_named": {
        "unet_name": "flux-3-image-klein-Q8_0.gguf"
      }
    },
    {
      "id": 43,
      "type": "PreviewImage",
      "pos": [
        3119.952957912854,
        -716.4399011682385
      ],
      "size": [
        546.7164608584822,
        707.0336883302639
      ],
      "flags": {},
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 65
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.41.0",
        "Node name for S&R": "PreviewImage"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    }
  ],
  "links": [
    [
      44,
      23,
      2,
      25,
      0,
      "ARRAY"
    ],
    [
      45,
      25,
      0,
      24,
      0,
      "STRING"
    ],
    [
      46,
      34,
      0,
      33,
      0,
      "CLIP"
    ],
    [
      47,
      37,
      0,
      33,
      1,
      "STRING"
    ],
    [
      49,
      33,
      0,
      35,
      1,
      "CONDITIONING"
    ],
    [
      50,
      40,
      0,
      35,
      2,
      "CONDITIONING"
    ],
    [
      51,
      38,
      0,
      37,
      0,
      "*"
    ],
    [
      52,
      28,
      0,
      38,
      0,
      "STRING"
    ],
    [
      53,
      31,
      0,
      38,
      1,
      "STRING"
    ],
    [
      54,
      34,
      0,
      40,
      0,
      "CLIP"
    ],
    [
      55,
      35,
      0,
      41,
      0,
      "LATENT"
    ],
    [
      56,
      36,
      0,
      41,
      1,
      "VAE"
    ],
    [
      57,
      41,
      0,
      9,
      0,
      "IMAGE"
    ],
    [
      58,
      39,
      0,
      35,
      3,
      "LATENT"
    ],
    [
      59,
      19,
      0,
      39,
      0,
      "INT"
    ],
    [
      60,
      19,
      1,
      39,
      1,
      "INT"
    ],
    [
      64,
      42,
      0,
      35,
      0,
      "MODEL"
    ],
    [
      65,
      41,
      0,
      43,
      0,
      "IMAGE"
    ],
    [
      61,
      29,
      0,
      31,
      0,
      "CLIP"
    ],
    [
      62,
      30,
      0,
      31,
      4,
      "STRING"
    ],
    [
      63,
      28,
      0,
      31,
      5,
      "STRING"
    ]
  ],
  "groups": [
    {
      "id": 5,
      "title": "Create bounding boxes for precise control",
      "bounding": [
        -560,
        560,
        868.5829359476047,
        670
      ],
      "color": "#444",
      "flags": {}
    },
    {
      "id": 6,
      "title": "Models",
      "bounding": [
        1350.250783778543,
        231.5164260485163,
        360,
        482
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 7,
      "title": "Prompt",
      "bounding": [
        1740.250783778543,
        231.5164260485163,
        490,
        750
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 8,
      "title": "Image Size",
      "bounding": [
        1350.250783778543,
        731.5164260485163,
        360,
        250
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 9,
      "title": "Prompt Enhancer",
      "bounding": [
        1350.250783778543,
        -758.4835739514837,
        1365.0910478071733,
        956.2122136896305
      ],
      "color": "#444",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "frontendVersion": "1.55.17",
    "ds": {
      "scale": 0.41772481694157104,
      "offset": [
        1528.6479093222586,
        1243.3690714735492
      ]
    },
    "anomalous_hashes": {
      "36_flux2-vae.safetensors": {
        "hash": "",
        "size": 336213556
      }
    },
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true
  },
  "version": 0.4
}