Files
ausboss-ComfyUI-AusBoss/js/docs/AUSBOSS_NODES_Krea2OutpaintModelPatch.md
T
ausboss ec50d3acfe Promote the Krea 2 outpaint pair from the lab
Krea 2 accepts reference latents, but they arrive with no position, so the
model treats them as a loose style hint: it borrows the look and reinvents
the content. That is the whole reason an outpaint drifts instead of
continuing the photo.

Krea 2 Encode attaches the reference latents and emits the negative from
the same node, so a turbo graph at CFG 1.0 stops carrying a second text
encode that does nothing. Krea 2 Outpaint Model Patch registers those
reference tokens into the target grid at the rectangle the stitcher
records, on frame axis 1.

Load Image + Pad gained a `reference` output - the unpadded source, fitted
to a 384px long edge and a multiple of 16, because the VAE downsamples by
8 and the DiT patchifies by 2. It is APPENDED after `stitcher`, never
inserted: a workflow stores links by output slot index, so any other
position silently rewires every saved graph.

The stitcher now records where the source sits, as source_bbox in pixels
and bbox_normalized in 0..1. Padding knows the rectangle exactly, so it
rides with the canvas instead of a parallel wire that can be left
unplugged. apply_stitch reads neither key, so an older stitcher stitches
identically.

Ported from the lab rather than copied: the lab's _krea2_helpers had its
own pad_image, feather_pad_mask, plan_pad_canvas, parse_fill_color and
build_canvas_stitcher. Duplicating the padding engine here would let the
outpaint path and the inpaint path disagree about what a stitcher is, so
the public module keeps only what is specific to Krea 2 and uses the
existing helpers for the rest.

Two departures from the lab version. The model patch declared a kv_cache
input and never read it - the cache was always on - so it is wired up now.
And it imports comfy's flux internals when you run it rather than at
startup: a core release that moves one then surfaces as an error on that
node, instead of deleting it from the menu and leaving saved workflows
reporting it missing.
2026-08-17 22:17:19 -05:00

1.9 KiB

Krea 2 Outpaint Model Patch

Tells Krea 2 where a reference image sits on the canvas.

Reference latents normally arrive as extra tokens with no position, so the model treats them as a loose style hint — it borrows the look and reinvents the content. This patch registers those tokens into the target grid at the rectangle the stitcher reports, which is what makes an outpaint continue the source rather than paint something adjacent to it.

Place it after any LoRA loader and before the sampler.

Controls

  • model: A Krea 2 model. Patch last, so a LoRA loaded afterwards does not replace the patched forward pass.
  • stitcher: From Load Image + Pad 🆎. Supplies the source rectangle. A stitcher that carries no rectangle — one from Crop For Inpaint, or an older saved graph — places the reference over the full frame, which is what an unpatched model already assumes.
  • kv_cache: Compute the reference's keys and values once per run instead of once per step. The reference does not change while sampling, so this is free speed. Turn it off only to rule the cache out when debugging.

Output

  • MODEL: The model with reference tokens registered into the canvas grid.

Notes and limitations

  • Nothing happens without reference latents. If the conditioning carries none, the patched forward pass calls straight through to the original. Wire Krea 2 Encode 🆎 with a VAE and a reference image.
  • It patches comfy internals. The placement reaches into the flux attention layers, so a ComfyUI release that moves them can break this node specifically. It imports those internals when you run it rather than at startup, so a break surfaces as an error on this node instead of the node disappearing from the menu.
  • Reference tokens cost attention. The reference is fitted to a short edge before encoding for that reason — see Krea 2 Encode 🆎.