Nodes/ComfyUI-EditUtils/EditUtils: Boogu Config Preparer lrzjason
ComfyUI Node

EditUtils: Boogu Config Preparer lrzjason

How to Feed Boogu More Than Three Reference Images

By lrzjason·Created 7 months ago·Updated 16 days ago· 207
EditUtils: Boogu Config Preparer lrzjason
  • image
  • configs
  • mask
  • configs
  • config
to_reftrue
ref_main_imagetrue
ref_longest_edge1024
ref_croppad
ref_upscalelanczos
to_vltrue
vl_target_size384
vl_cropcenter
vl_upscalelanczos
ref_resize_modelongest_edge
rope_x_offset0
rope_y_offset0

The Boogu branch of EditUtils has a one-shot encode node (BooguEditTextEncode) that caps you at three reference images. BooguConfigPreparer_EditUtils is the node you reach for when three isn't enough - or when you want per-image control that the one-shot node doesn't expose. Boogu-Image, the 2026-06 model family this pack wraps, does multi-reference editing well, and this is how you actually point it at a pile of references.

Here's the mechanism, because it's the clever part. Each ConfigPreparer takes one image and all of the processing choices for that image, bundles them into a dict, and appends that dict to a configs list. The configs input lets you chain Preparers together: the first one has no list, so it starts one; the second one takes the first's configs output and appends its own config; and so on, for as many images as you want. The finished list goes into EditTextEncode_EditUtils.configs, which walks it and encodes every entry. The README is explicit that the multi-config path is unlimited - the "3 images max" limit only exists in the simple one-shot node.

For each image you're setting three groups of things. The reference group decides whether the image becomes a reference latent at all (to_ref), whether it's the main image whose latent becomes the sampler's starting point (ref_main_image), and how it's resized (ref_longest_edge, ref_resize_mode, ref_crop, ref_upscale). The vision group does the same for the Boogu vision tower (to_vl, vl_target_size, vl_crop, vl_upscale) - Boogu, unlike Flux 2 Klein, uses a vision tower on top of the reference latents, which is why these knobs exist at all. And then there are rope_x_offset / rope_y_offset, which shift where the reference sits on the canvas by nudging its RoPE position - genuinely useful for regional editing, but only if you've got BooguEditApply_EditUtils patching the model, since that's the node that reads the offsets back out of the conditioning.

Two settings that matter more than the others. ref_main_image is the one that decides which reference becomes the seed latent - set it on exactly one image or Boogu defaults to the first. And ref_crop: "pad" is the default for a reason: it letterboxes the image to a VAE-friendly multiple of 8 instead of cropping content off, and it's the mode that pairs with CropWithPadInfo_EditUtils on the way out.

Watch the mask rule: any mask you attach must be the same height and width as the image, or the node silently drops it with a console warning. That's not a crash, it's a "your inpainting is about to ignore you" signal. Install is the pack standard - Manager, search "EditUtils", or clone lrzjason/ComfyUI-EditUtils into custom_nodes and restart. The Boogu model, Qwen3-VL encoder and VAE are yours to supply.

Categoryadvanced/conditioning

Inputs (15)

NameTypeDefaultDescription
imageIMAGE
configsoptLISTConfigs list
to_refoptBOOLEANtrueAdd image to reference latent
ref_main_imageoptBOOLEANtrueSet image as main image which would return the latent as output.
ref_longest_edgeoptINT102416–4096Longest edge of the output latent
ref_cropoptCOMBOpadCrop method for reference image
ref_upscaleoptCOMBOlanczosUpscale method for reference image
to_vloptBOOLEANtrueAdd image to boogu vision tower encode
vl_target_sizeoptINT384384–2048Target size for vision tower input
vl_cropoptCOMBOcenterCrop method for vision tower input
vl_upscaleoptCOMBOlanczosUpscale method for vision tower input
maskoptMASK
ref_resize_modeoptCOMBOlongest_edgelongest_edge: scale so the longest dimension equals ref_longest_edge. area: scale so total pixels equals ref_longest_edge squared.
rope_x_offsetoptINT00–4096ROPE horizontal position offset in pixels (VAE-aligned). Shifts reference rightward on canvas. Requires model EditApply node.
rope_y_offsetoptINT00–4096ROPE vertical position offset in pixels (VAE-aligned). Shifts reference downward on canvas. Requires model EditApply node.

Outputs (2)

NameTypeDescription
configsLIST
configANY