Nodes/AIO Image Generate/AIO Image Generate
ComfyUI Node

AIO Image Generate

One node to run FLUX.2, Ideogram 4, Krea 2, and Z-Image — if the files exist

By helto4real·Created 3 months ago·Updated 23 days ago· 1
AIO Image Generate
  • model_settings
  • lora_config
  • inpaint
  • model
  • clip
  • image 1
  • image 2
  • image 3
  • image 4
  • mask
  • image
  • latent
  • run_info
  • model_info
  • pid_info
  • width
  • height
  • inpaint_info
  • image_original
model_type
diffusion_model
text_encoder
vae
positive_promptA luminous studio portrait, crisp details, natural color, soft light
negative_prompt
use_zero_negative_conditioningtrue
privacy_modefalse
size mode
max side1024
aspect ratio
multiple value
seed0
batch_count1
steps0
cfg0.0
sampler
scheduler
pid_capture_step0
second_pass_enabledfalse
second_pass_steps0
second_pass_denoise0.15
second_pass_upscale_ratio1.50
second_pass_upscale_methodlanczos

The name is not a lie. AIO Image Generate is the flagship of the helto4real "AIO Image Generate" pack, and it genuinely does what the pack title promises: pick a model family, pick three model files, type a prompt, hit run. It replaces the usual wall of loaders, encoders, samplers and decoders with one node that knows how to drive four different open-weights families - FLUX.2 Klein 9B, Ideogram 4, Krea 2, and Z-Image Turbo. No API, no key, all local.

What it actually is

The node is a facade. Under the hood the pack splits everything into profiles (services/profiles.py), adapters per model family, loader backends and validation - each family brings its own default sampler, scheduler, step count and canvas size, and at execution time the node lazily composes plain ComfyUI primitives (UNET loader, CLIP encode, ksampler, VAE decode). That's why you can switch families by changing one dropdown instead of rebuilding the graph. It's also why the pack imports without loading torch or GGUF: nothing heavy happens until you actually run.

The catch is that the node resolves model files lazily at execution time - nothing is auto-downloaded. If the dropdowns are empty or a file is missing, you get a failure at run, not a friendly installer.

The inputs that matter

Most of the node is "set once and forget," but these are the ones you'll actually touch:

  • model_type - flux2_klein_9b, ideogram4, krea2, or z_image_turbo. This controls every default, so set it first.
  • diffusion_model, text_encoder, vae - filename dropdowns searched across models/diffusion_models, text_encoders, clip, vae, and GGUF folders when a backend is installed. Pick the files for the family you chose.
  • positive_prompt / negative_prompt - and here's the trap: use_zero_negative_conditioning defaults to on, which means the negative prompt isn't used as real sampler negative conditioning on any model (most of these families don't consume negatives anyway - the flow-matching generation inverts the SDXL rules, see the KB's concepts.md). Turn that toggle off if you actually want a negative encoded.
  • size mode, max side, aspect ratio, multiple value - output sizing; set multiple value to 16 for both Ideogram 4 and Krea 2, since both demand multiples of 16 per side.
  • steps and cfg - both default to 0, which means "use this family's profile default" (4 steps for distilled Klein, 20 for Ideogram 4, 8 for Krea 2 / Z-Image Turbo). An explicit number overrides.
  • seed and batch_count - one image per seed, batch just walks seeds.
  • second_pass_enabled - turns on a built-in upscale-then-low-denoise-refine pass, like a hires fix baked in.

The optional sockets matter a lot for building a real workflow: model_settings (from the matching settings node), lora_config (from AIO LoRA Configuration), inpaint (from AIO Inpaint), image 1image 4 (references for Klein / Krea 2), and model/clip (externally patched models from AIO Load Pipeline Models).

The outputs and where they go

image is the main one - wire it to Preview or Save Image. You also get latent, width, height, run_info (a JSON string with what actually ran), and three bundled outputs you can't use directly: model_info, pid_info, and inpaint_info. Those need their companion nodes (AIO Model Info, AIO PID Info, AIO Inpaint Info) to unpack. This replaced older direct model/VAE/PID outputs, so if you loaded an old workflow that wired them straight into other nodes, you'll need to reconnect through the info nodes.

Installing it

ComfyUI Manager: search "AIO Image Generate" (that's the pack title) and install. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/helto4real/comfyui-all-on-one-image-generation-node
cd comfyui-all-on-one-image-generation-node
python -m pip install -r requirements.txt   # helto-privacy + cryptography

Then restart ComfyUI; all nodes appear under AIO/Image. The Python dependencies are light - the heavy part is the model files, which you fetch yourself: Ideogram 4 wants its conditional + unconditional models plus Qwen3-VL text encoder and the FLUX.2 VAE; Krea 2 wants its own Qwen3-VL encoder and Qwen Image VAE; Klein and Z-Image use their standard ComfyUI packs.

Where people get burned

  • Nothing generates because the model dropdown is empty or wrong. The node doesn't download anything. Download the family's files into the right models/ folders first.
  • The negative prompt does nothing. See above - use_zero_negative_conditioning is on by default. That's intentional, not a bug.
  • GGUF files with no GGUF backend. Pick a .gguf file and the node raises "no compatible GGUF backend detected" - you need ComfyUI-GGUF installed, and the pack won't silently fall back to safetensors.
  • Settings mismatch. Connect FLUX.2 Klein 9B Settings while model_type is z_image_turbo and the node rejects it rather than guessing. Match the settings node to the family.

It's a young pack (every node here shows zero impressions on comfy.icu), so treat it as 0.1.0-era software: the README is detailed, the tests exist, but the community hasn't stress-tested it yet. For a single family's one-node workflow it's remarkably tidy.

CategoryAIO/Image

Inputs (34)

NameTypeDefaultDescription
model_typeCOMBOSelect the model family/profile that controls defaults, validation, and adapter behavior.
diffusion_modelCOMBODiffusion model file to load. Supports standard and GGUF model folders when available.
text_encoderCOMBOText encoder or CLIP file used to encode the prompts for the selected model family.
vaeCOMBOVAE file used to decode generated latents into the final image.
positive_promptSTRINGA luminous studio portrait, crisp details, natural color, soft lightPrompt describing what the generated image should contain.
negative_promptSTRINGPrompt describing content to avoid. Some model families ignore this input by default.
use_zero_negative_conditioningBOOLEANtrueUse zero negative conditioning. Disable to encode and use the negative prompt as real sampler negative conditioning.
privacy_modeBOOLEANfalseEncrypt prompt text in saved workflows and hide it unless the node is hovered.
size modeCOMBOChoose whether output dimensions come from the aspect ratio controls or from image 1.
max sideINT1024256–4096Longest output edge in pixels when using aspect-ratio sizing.
aspect ratioCOMBOOutput shape to use with max side when size mode is set to use aspect ratio.
multiple valueCOMBORound generated dimensions to a multiple required or preferred by the selected model.
seedINT00–9223372036854776000Random seed for generation. Reuse the same seed and settings for repeatable results.
batch_countINT11–64Number of images to generate in one loaded run. Each image uses the next seed.
stepsINT00–100Sampling step count. Use 0 to let the selected model profile choose its default.
cfgFLOAT0.00–20Classifier-free guidance scale. Use 0 to let the selected profile choose its default.
samplerCOMBOSampling algorithm. Auto lets the selected model profile choose a compatible sampler.
schedulerCOMBONoise schedule used during sampling. Auto lets the selected model profile choose a default.
pid_capture_stepINT00–4096Main sampler step to capture for PID. Use 0 to auto-select a step near the end.
second_pass_enabledBOOLEANfalseRun a low-denoise upscale img2img pass after the first generated image.
second_pass_stepsINT00–100Second-pass sampling steps. Use 0 to reuse the main resolved step count.
second_pass_denoiseFLOAT0.150–1Denoise strength for the second sampler pass.
second_pass_upscale_ratioFLOAT1.501–8Scale factor applied to the first-pass image before second-pass sampling.
second_pass_upscale_methodCOMBOlanczosResize filter used to upscale the first-pass image before VAE encoding.
model_settingsoptAIO_MODEL_SETTINGSOptional settings object from a matching AIO model settings node.
lora_configoptAIO_LORA_CONFIGOptional LoRA stack from the AIO LoRA Configuration node.
inpaintoptAIO_INPAINT_CONFIGOptional AIO Inpaint config. When connected, supported models edit only the masked source-image area.
modeloptMODELOptional externally loaded or patched post-LoRA model. Connect with clip to skip internal model loading and LoRA application.
clipoptCLIPOptional externally loaded or patched post-LoRA CLIP. Connect with model to skip internal text encoder loading and LoRA application.
image 1optIMAGEOptional reference image 1. Connect images in order starting with image 1. Used by Krea 2 reference img2img and FLUX.2 Klein reference workflows.
image 2optIMAGEOptional reference image 2. Connect images in order starting with image 1. Used by FLUX.2 Klein multi-reference workflows.
image 3optIMAGEOptional reference image 3. Connect images in order starting with image 1. Used by FLUX.2 Klein multi-reference workflows.
image 4optIMAGEOptional reference image 4. Connect images in order starting with image 1. Used by FLUX.2 Klein multi-reference workflows.
maskoptMASKOptional mask for reference-image workflows. Connect image 1 before using a mask.

Outputs (9)

NameTypeDescription
imageIMAGE
latentLATENT
run_infoSTRING
model_infoAIO_MODEL_INFO
pid_infoAIO_PID_INFO
widthINT
heightINT
inpaint_infoAIO_INPAINT_INFO
image_originalIMAGE