AiO Generator (Krea2)
AiO Generator (Krea2), Wired and Explained
- easy_use_anima_input
- lora_stack
- aio_hook
- image
- latent
- metadata_json
Krea 2 is a 12B diffusion transformer that wants a Qwen3-VL encoder and the Qwen-Image VAE - three files in three loaders before you type a prompt. Then the KSampler, the decode, the save, and, if you care, a highres pass and a face pass bolted on the end. AiO Generator (Krea2) is one node that eats all of that. One wire in, a finished image out.
Whether that's a blessing depends on whether you enjoy building graphs. I don't, mostly - and if you just want a 2K Turbo image with a fixed face and a saved prompt block, this is the shortest path I've seen.
What it is
A node from ComfyUI-EasyUseAnima, a one-maintainer pack by n0va39. It ships three of these generators - Anima, MOSS, Krea2 - sharing the same input, seed, preview and save architecture, each locked to one model family. This one is the Krea 2 adapter.
Calibrate your expectations: there's no community chatter about this pack at all (zero threads in the Reddit corpus), so you're trusting the source and the changelog, not a reputation. The repo is genuinely maintained - 1.6.0 landed these separate generators with unusually detailed release notes - and it's GPL-3.0-or-later. There's no fix-it blog post waiting for you.
How it works
Less magic than the node's size suggests. Underneath it calls plain ComfyUI nodes: the loaders (driven by settings baked into the input context), core EmptyLatentImage, core KSampler, VAEDecode, and its own saver. You're buying the orchestration - prompt encoding, first pass, optional Highres, optional SAM3 Detailer, optional USDU/ResShift upscale, postprocess, save - run in sequence off one hidden settings blob.
That blob is generation_settings: a versioned JSON string holding steps, CFG, sampler, seed, every stage toggle. You never edit it by hand; the popup UI does it and keeps it serialized. It's also why a profile from another family won't load here.
Krea 2 specifics from the source: the sampler backend is restricted to comfy_ksampler, shift goes through ModelSamplingFlux at the FLUX mu contract, and width/height must be multiples of 16. The supported feature set is Highres, Detailer, Upscale, Artist Mix, SageAttention, FP16 accumulation, Torch Compile and generic AiO hooks. Everything Anima-flavoured - Spectrum, NegPip, Mod Guidance, DAVE, Safe PAG, DiT corrections - is unavailable, and the UI locks those controls rather than letting you enable dead options.
Inputs and outputs that matter
Required: easy_use_anima_input, the context from Easy Use Anima Input. There you pick the Krea 2 diffusion model, the Qwen3-VL 4B encoder, CLIP type = krea2 and qwen_image_vae.safetensors. Get any of those wrong and you get a clean refusal instead of a weird image.
Required but ignore it: generation_settings. It stays serialized; the UI drives it.
Optional: lora_stack, and aio_hook for third-party extensions only - leave it empty.
Outputs are image (IMAGE), latent (LATENT) and metadata_json (STRING). The image is decoded and ready, but the node saves by default into EasyUseAnima/AiO, so wiring image into your own SaveImage gives you two files per generation. Use latent to keep sampling or decode with a different VAE, and metadata_json when you need to see what actually ran.
Install
Manager: search ComfyUI Easy Use Anima. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/n0va39/ComfyUI-EasyUseAnima
Restart and hard-refresh the browser. Dependencies are refreshingly light - the shipped requirements.txt is just requests and googletrans-py. What it won't do is fetch weights: Krea 2, the Qwen3-VL encoder and the Qwen-Image VAE are on you, and no family gets substituted when you flip a dropdown. You want ComfyUI 0.42.1 or newer.
Settings you'll actually touch
Defaults are Turbo-tuned: 8 steps, CFG 1.0, euler/simple, shift 1.15. Leave them. CFG 1 means the negative prompt is effectively a no-op, which surprises people who paste a wall of negatives and see no change; if you want negatives to bite, you're in RAW territory.
RAW is a different animal: the Krea 2 card lists 52 steps, CFG 3.5, and the release notes say plainly that RAW needs manual tuning and hasn't been GPU-validated through this node. Highres defaults to 1.5× at denoise 0.25, which is the sensible neighbourhood - enough detail, not enough to rewrite your composition.
Where people get burned
The errors are loud, which is the good news. Krea2 requires CLIP type 'krea2' means exactly that. Point it at an Anima checkpoint and the family check stops you; the same file in the Anima node runs fine. width and height must be positive multiples of 16 catches the 1000×1000 habit - use 1024×1024 or 1280×768.
Then the one nobody can fix: the open Krea 2 checkpoint went through an alignment pass the hosted version didn't, so prompts about bodies and violence get flattened. This pack can't help - NegPip is Krea2-unsupported, and the uncensor LoRAs people reach for are themselves a use Krea's acceptable use policy bans. Know that before you spend an evening debugging a prompt the weights ignore.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| easy_use_anima_input | EASY_USE_ANIMA_INPUT | Context from Easy Use Anima Input. | |
| generation_settings | STRING | {"schema":"easyuse_anima_aio_generation_settings","version":5,"model_family":"krea2","model_settings":{},"mode":"txt2img","sampler":{"backend":"comfy_ksampler","seed":-1,"seed_after_generate":"fixed","steps":8,"cfg":1.0,"sampler_name":"euler","scheduler":"simple","denoise":1.0,"spectrum":{"enabled":false,"window_size":2.0,"flex_window":0.25,"warmup_steps":6,"tail_actual_steps":3,"blend_w":0.3,"cheby_degree":3,"ridge_lambda":0.1,"history_size":100,"one_sampler_only":false,"verbose":false,"compat_policy":"conservative"},"spd":{"split_mode":"single","scale":0.5,"sigma":0.7,"adaptive_smc_alpha":0.0},"spectrum_extra":{},"spd_extra":{},"dit_corrections":{"enabled":false,"dcw_mode":"off","dcw_lambda":0.01,"dcw_band_mask":"LL","dcw_calibrator":"(auto-download default)","smc_cfg":false,"adaptive_smc_alpha":0.0,"smc_cfg_lambda":6.0,"cfgpp":false,"cfgpp_lambda":0.0,"fsg":false,"fsg_band_lo":0.59,"fsg_band_hi":0.75,"fsg_k":3,"fsg_d_sigma":0.1,"fsg_gamma":0.0,"replace_existing_cfg":false}},"negpip":{"mode":"off"},"model_patches":{"aura_flow":{"shift":1.15},"dave":{"enabled":false,"mask":"dave_alpha.npz","strength":0.3,"tau":0.1,"stage_scope":{"first_pass":true,"highres":false,"detailer":false,"upscale":false}},"safe_pag":{"enabled":false,"scale":4.0,"block_indices":"18","perturbation_strength":0.75,"head_indices":"","start_percent":0.0,"end_percent":0.7,"rescale":0.2,"rescale_mode":"full","stage_scope":{"first_pass":true,"highres":false,"detailer":false,"upscale":false}},"kj":{"fp16_accumulation":false,"sage_attention":"disabled","sage_allow_compile":false,"sage_stage_scope":{"first_pass":true,"highres":false,"detailer":false,"upscale":false},"torch_compile":{"enabled":false,"backend":"inductor","fullgraph":false,"mode":"max-autotune-no-cudagraphs","dynamic":"false","compile_transformer_blocks_only":true,"dynamo_cache_size_limit":64,"debug_compile_keys":false,"disable_dynamic_vram":true}}},"mod_guidance":{"mode":"disabled","profile":"step_i8_skip27","advanced":{"adapter":"(auto-download default)","quality_tags":"highres, best quality, score_7","quality_neg":"score_1, score_2, score_3, worst quality, lowres, old, bad hands, bad anatomy","mod_w":3.0,"mod_start_layer":8,"mod_end_layer":27,"mod_taper":0,"mod_taper_scale":0.25,"mod_final_w":0.0}},"artist_mix":{"mode":"off","start_percent":0.5,"strength_scale":1.0,"style_gain":1.35,"rms_scale_cap":2.0,"exact_top_k":4,"cluster_count":4,"dominant_isolation":true,"dominant_threshold":0.25},"highres":{"enabled":false,"scale_by":1.5,"upscale_method":"bicubic","multiple":"32","max_long_edge":2560,"steps":8,"inherit_sampler_settings":true,"cfg":1.0,"sampler_name":"euler","scheduler":"simple","denoise":0.25,"spectrum":{"enabled":false,"window_size":2.0,"flex_window":0.2,"warmup_steps":7,"tail_actual_steps":4,"blend_w":0.3,"cheby_degree":3,"ridge_lambda":0.1,"history_size":100,"one_sampler_only":false,"verbose":false,"compat_policy":"conservative"},"dit_corrections":{"enabled":false,"dcw_mode":"off","dcw_lambda":0.02,"dcw_band_mask":"LL","dcw_calibrator":"(auto-download default)","smc_cfg":false,"adaptive_smc_alpha":0.0,"smc_cfg_lambda":6.0,"cfgpp":false,"cfgpp_lambda":0.0,"fsg":false,"fsg_band_lo":0.59,"fsg_band_hi":0.75,"fsg_k":3,"fsg_d_sigma":0.1,"fsg_gamma":0.0,"replace_existing_cfg":false}},"upscale":{"enabled":false,"backend":"usdu","scale_by":2.0,"steps":8,"inherit_sampler_settings":true,"cfg":1.0,"sampler_name":"euler","scheduler":"simple","denoise":0.2,"spectrum":{"enabled":false,"window_size":2.0,"flex_window":0.2,"warmup_steps":7,"tail_actual_steps":4,"blend_w":0.3,"cheby_degree":3,"ridge_lambda":0.1,"history_size":100,"one_sampler_only":false,"verbose":false,"compat_policy":"conservative"},"dit_corrections":{"enabled":false,"dcw_mode":"off","dcw_lambda":0.02,"dcw_band_mask":"LL","dcw_calibrator":"(auto-download default)","smc_cfg":false,"adaptive_smc_alpha":0.0,"smc_cfg_lambda":6.0,"cfgpp":false,"cfgpp_lambda":0.0,"fsg":false,"fsg_band_lo":0.59,"fsg_band_hi":0.75,"fsg_k":3,"fsg_d_sigma":0.1,"fsg_gamma":0.0,"replace_existing_cfg":false},"usdu":{"upscale_model_name":"2x-AnimeSharpV4_Fast_RCAN_PU.safetensors","auto_tile_size":true,"prompt_mode":"full","mode_type":"Linear","auto_tile_target":1024,"auto_tile_min":512,"auto_tile_max":2048,"tile_width":512,"tile_height":512,"mask_blur":8,"tile_padding":32,"seam_fix_mode":"None","seam_fix_denoise":1.0,"seam_fix_width":64,"seam_fix_mask_blur":8,"seam_fix_padding":16,"force_uniform_tiles":true,"tiled_decode":false,"batch_size":1},"resshift":{"scale":"x2","student_name":"(auto-download)","dtype":"bf16","chop":512,"overlap":64,"tile_batch":4}},"postprocess":{"enabled":false,"fit":{"mode":"max_long_edge","max_long_edge":2048,"max_megapixels":4.0,"method":"bicubic"}},"detailer":{"enabled":false,"order":["face","eye"],"sam3":{"context":"load_checkpoint","checkpoint":"sam3.1_multiplex_fp16.safetensors"},"face":{"label":"Face Detailer","enabled":false,"detect_prompt":"face","detect_count":1,"threshold":0.52,"refine_iterations":2,"individual_masks":true,"combined":false,"crop_factor":4.0,"bbox_fill":false,"drop_size":100,"contour_fill":true,"guide_size":1024,"guide_size_for":false,"max_size":2048,"steps":8,"inherit_sampler_settings":true,"cfg":1.0,"sampler_name":"euler","scheduler":"simple","denoise":0.33,"feather":5,"noise_mask":true,"force_inpaint":true,"wildcard":"","cycle":1,"alignment":"32","inpaint_model":false,"noise_mask_feather":10,"tiled_encode":false,"tiled_decode":false,"spectrum":{"enabled":false,"window_size":2.0,"flex_window":0.15,"warmup_steps":6,"tail_actual_steps":3,"blend_w":0.3,"cheby_degree":3,"ridge_lambda":0.1,"history_size":100,"one_sampler_only":false,"verbose":false,"compat_policy":"conservative"},"dit_corrections":{"enabled":false,"dcw_mode":"off","dcw_lambda":0.02,"dcw_band_mask":"LL","dcw_calibrator":"(auto-download default)","smc_cfg":false,"adaptive_smc_alpha":0.0,"smc_cfg_lambda":6.0,"cfgpp":false,"cfgpp_lambda":0.0,"fsg":false,"fsg_band_lo":0.59,"fsg_band_hi":0.75,"fsg_k":3,"fsg_d_sigma":0.1,"fsg_gamma":0.0,"replace_existing_cfg":false}},"eye":{"label":"Eye Detailer","enabled":false,"detect_prompt":"eyes","detect_count":1,"threshold":0.5,"refine_iterations":2,"individual_masks":true,"combined":false,"crop_factor":6.0,"bbox_fill":false,"drop_size":40,"contour_fill":true,"guide_size":1024,"guide_size_for":false,"max_size":2048,"steps":8,"inherit_sampler_settings":true,"cfg":1.0,"sampler_name":"euler","scheduler":"simple","denoise":0.29,"feather":6,"noise_mask":true,"force_inpaint":true,"wildcard":"","cycle":1,"alignment":"32","inpaint_model":false,"noise_mask_feather":20,"tiled_encode":false,"tiled_decode":false,"spectrum":{"enabled":false,"window_size":2.0,"flex_window":0.15,"warmup_steps":6,"tail_actual_steps":3,"blend_w":0.3,"cheby_degree":3,"ridge_lambda":0.1,"history_size":100,"one_sampler_only":false,"verbose":false,"compat_policy":"conservative"},"dit_corrections":{"enabled":false,"dcw_mode":"off","dcw_lambda":0.02,"dcw_band_mask":"LL","dcw_calibrator":"(auto-download default)","smc_cfg":false,"adaptive_smc_alpha":0.0,"smc_cfg_lambda":6.0,"cfgpp":false,"cfgpp_lambda":0.0,"fsg":false,"fsg_band_lo":0.59,"fsg_band_hi":0.75,"fsg_k":3,"fsg_d_sigma":0.1,"fsg_gamma":0.0,"replace_existing_cfg":false}}},"save":{"enabled":true,"backend":"image_saver","image_saver":{"filename":"%time_%basemodelname","path":"EasyUseAnima/AiO","extension":"webp","lossless_webp":false,"quality_jpeg_or_webp":97,"optimize_png":true,"counter":0,"clip_skip":0,"time_format":"%Y-%m-%d-%H%M%S","save_workflow_as_json":false,"embed_workflow":true,"save_prompt_metadata":true,"additional_hashes":"","additional_hash_bundles":[],"civitai_hash_fetchers":[],"download_civitai_data":false,"easy_remix":true,"custom":""}},"preview":{"intermediate_images":false,"compare_previous":false,"image_feed":true,"feed_count":12}} | Hidden versioned JSON storage for popup generation settings. Keep this field serialized. |
| lora_stackopt | LORA_STACK | Optional LoRA stack applied to MODEL and CLIP before conditioning and sampling. | |
| aio_hookopt | EASYUSE_ANIMA_AIO_HOOK | Optional explicit AiO extension hook. See docs/extensions/aio-hooks.en.md. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | Decoded generated image. |
| latent | LATENT | Sampled latent image. |
| metadata_json | STRING | JSON metadata summary for debugging or downstream integration. |