Krea 2 Moodboard + Identity Fusion
Krea 2 Moodboard + Identity Fusion
- clip
- edit_source
- moodboard_images
- vae
- edit_source2
- sources
- target_latent
- ref_boost_mask
- edit_mask
- CONDITIONING
The recommended way to combine style references with an identity edit, and the reason the pack has three different moodboard nodes instead of one. This is the fusion node: style from a moodboard plus identity from a source image, done in one encode. Same sources, same VAE, same geometry - so the classic wiring mistakes can't happen.
Why fusion beats bolting two nodes together
You can technically get style-plus-identity by feeding a Moodboard Encode into an identity edit's fuse_with input. But that concatenates two separate encodes, which has a real weakness: indirect mode (delete the moodboard rows after encoding) can't work there, because a deleted span in a concatenated pass carries nothing. This node does the whole thing as a single encode, so the instruction and the edit grounding attend the moodboard span inside the encoder. That's what makes indirect - default ON here - genuinely functional: moodboard rows get deleted after encoding, so people in your style references structurally cannot appear in the output, while the style still transfers. If your style refs contain humans, that's the difference between "nice vibe" and "your aunt shows up in every image."
The three modes
Both image inputs are optional, and which ones you connect decides what the node is:
edit_sourceonly → a plain identity edit (likeKrea2IdentityEdit).moodboard_imagesonly → plain vibe transfer (likeKrea2MoodboardEncode).- both → the fusion. This is why you're here.
Add edit_source2 for two-ref edit LoRAs (scene first, subject second), and sources for chained extra references (3+ blends identities, same caveat as everywhere in this pack).
Wiring it up
Connect vae - it's optional in the schema but the tooltip is blunt: required for actual editing, since the identity latents come from VAE-encoding the source. Wire the output CONDITIONING as your KSampler positive. The negative is a Krea2IdentityEdit with an empty prompt and the same source image - the training unconditional. Fuse the positive only; style in the negative cancels under CFG.
The identity-side dials from the edit node are here too:
ref_boost/ref_boost_a- the reference-fidelity attention boosters, and note they hit the identity refs only. The moodboard span is unaffected, which is the behavior you want. 1.0 off; 2–6 recommended with the v1.2 edit LoRA.target_latent+fit_mode- connect your empty sampling latent to enable the v1.2 pixel-space fit geometry for the edit sources. This is the blur fix: refs are fitted in pixel space to the output resolution before VAE-encoding, removing both the blur and the old "match the source aspect ratio" requirement. With CFG > 1, connect the same latent to the negative edit node too.strength,extract,reference_processing,budget_px,style_directive,grounding_px- the moodboard and grounding dials, same semantics as the sibling nodes.
The bundled krea2_identity_edit_fusion.json example ships the v1.2 wiring (target_latent connected, ref_boost exposed, v1.2 LoRA) so you've got a working starting point.
Installing
Whole pack, one install - GPL-3.0, zero third-party node dependencies:
git clone https://github.com/RedNodeAI/ComfyUI-Krea2Moodboard ComfyUI/custom_nodes/ComfyUI-Krea2Moodboard
or ComfyUI Manager, search "Krea2Moodboard", restart. Needs ComfyUI 0.25.0+, qwen3vl_4b (CLIPLoader type krea2), qwen_image_vae, and a krea2_edit LoRA at strength 1.0 for the identity side. If you're doing vibe-plus-face at all, start here - it's the least likely to surprise you.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| instruction | STRING | the edit instruction, e.g. 'create a photo of this person at a night market' | |
| strength | FLOAT | 0.500–1 | — |
| extract | COMBO | 2 options: style / vibe, subject / concept | |
| reference_processing | COMBO | 3 options: full image, quadrant crops (2x2), fine tiles (4x4) | |
| style_directive | BOOLEAN | true | — |
| indirect | BOOLEAN | true | delete moodboard rows after encoding; style survives via in-encoder attention. Safest when style refs contain people. |
| budget_px | INT | 384128–1536 | — |
| grounding_px | INT | 7680–2048 | longest-side cap for the edit source fed to the encoder |
| edit_sourceopt | IMAGE | identity source image. Not connected = pure moodboard mode. | |
| moodboard_imagesopt | IMAGE | style references (batch for several). Not connected = pure identity-edit mode. | |
| vaeopt | VAE | connect to attach the in-context identity latents (required for actual editing) | |
| edit_source2opt | IMAGE | 2nd reference for two-ref LoRAs (scene first, subject second) | |
| sourcesopt | KREA2_SOURCES | chained sources (Krea2 Edit Source Chain) — inserted BETWEEN edit_source (scene) and edit_source2 (subject), so the subject stays the LAST ref and keeps the boost/mask dials. 3+ refs is beyond the LoRA's training; identities may blend. | |
| ref_boostopt | FLOAT | 1.000–10 | reference-fidelity dial: multiplies target->reference attention for the LAST identity ref (the subject). 1.0 = off; >1 pulls harder toward the reference (the v1.2 edit-LoRA author suggests 2-6). Positive only — the moodboard span is unaffected. |
| ref_boost_aopt | FLOAT | 1.000–10 | same dial for the earlier identity refs (the scene in two-ref workflows). No effect single-ref. 1.0 = off |
| target_latentopt | LATENT | connect your (empty) sampling latent to enable the v1.2 'fit' geometry: identity refs are fitted in PIXEL space to the output resolution before VAE-encoding — fixes blur from resolution mismatch and removes the match-the-aspect-ratio requirement. With CFG > 1, connect the same latent to the negative edit node too. | |
| fit_modeopt | COMBO | fit | how identity refs fit a mismatched output AR (needs target_latent + vae): fit = resample to the target grid at a centered offset (v1.2-trained geometry); crop (legacy) = center-crop to the target AR then resize (v1/v1.1 geometry, for older weights). |
| ref_boost_maskopt | MASK | optional region on the LAST (subject) edit source to boost, e.g. just the face — identity boost without over-copying the scene | |
| ref_startopt | FLOAT | 0.000–1 | when the identity refs become active (0 = first step). Start later to free composition before identity locks in. |
| ref_endopt | FLOAT | 1.000–1 | when the identity refs switch off (1 = last step). |
| edit_maskopt | MASK | hard edit locality: white = the region the model may change. Everywhere else the FIRST edit source is re-imposed at each denoising step, so untouched areas stay pixel-faithful instead of relying on the LoRA. Needs the source on the target grid (matched output AR, or fit_mode 'crop (legacy)'). With CFG > 1 wire the SAME mask to the negative edit node too. | |
| edit_mask_featheropt | INT | 20–32 | soft edge for edit_mask, in latent pixels (1 latent px ≈ 8 image px); 0 = hard edge |
| isolate_refsopt | BOOLEAN | false | multi-ref only: stop the identity references attending to EACH OTHER — reduces identity/style bleed between two people. No effect with a single reference. |
| boost_blocksopt | COMBO | all | experimental: restrict the ref_boost dials to a depth range of the DiT. early = composition/pose-leaning pull, late = texture/detail-leaning pull, all = normal. Combines with ref_boost_mask and the ref_start/ref_end window. |
| grounding_px_subjectopt | INT | 00–4096 | separate grounding cap for the 2nd+ edit sources (the subject in two-ref order often deserves 1024+ while the scene doesn't). 0 = use grounding_px for all refs. |
| picture_labelsopt | BOOLEAN | false | EXPERIMENTAL training-parity toggle: 'Picture N: ' prefixes on the vision blocks (ai-toolkit layout; the packed moodboard counts as Picture 1, edit sources follow). Default off. Match the negative node; A/B before adopting. |
| ref_t0_modulationopt | BOOLEAN | false | EXPERIMENTAL training-parity toggle: modulate the clean reference tokens at timestep 0 (as ai-toolkit trains). Default off. Match the negative node; A/B before adopting. |
| system_promptopt | STRING | ADVANCED: override the vision system prompt (empty = training default). Steers HOW the encoder reads ALL references (moodboard + edit sources) — e.g. domain-neutral identity reading for anime→real. Match the negative node; A/B. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |