Nodes/ComfyUI-BAGEL/BAGEL Image Edit (Deprecated)
ComfyUI Node

BAGEL Image Edit (Deprecated)

Edit images with words — and two CFG dials instead of a mask

By neverbiasu·Created about a year ago·Updated 26 days ago· 188
BAGEL Image Edit (Deprecated)
  • model
  • image
  • image
  • thinking
promptEdit the image according to the description
seed0
cfg_text_scale4.0
cfg_img_scale2.0
num_timesteps50
show_thinkingfalse
cfg_interval0.0
timestep_shift3.0
cfg_renorm_min0.0
cfg_renorm_typetext_channel
text_temperature0.3

Image editing is where BAGEL's unified-model bet pays off. Most edit tools bolt an editing model on top of a separate diffusion pipeline, and you end up juggling masks, inpaint modes, and denoise strengths. BAGEL is one multimodal transformer (7B active of a 14B Mixture-of-Transformer-Experts model, Apache 2.0, from ByteDance Seed) that both understands your image and generates the edit, so this node is just two things: an image in, a prompt, and an edited image out. No mask required - you describe the change and it figures out what to touch. ByteDance's own GenEval-style results were the headline when this released in May 2025, and editing is the same architecture at work.

How it works

The image goes through the model's vision encoder (SigLIP-based) so BAGEL actually sees what's there, and your prompt conditions the generation. The clever bit is dual CFG: the node runs classifier-free guidance along two axes at once. cfg_text_scale controls how hard it follows your edit instruction, and cfg_img_scale controls how hard it preserves the input image. Want a subtle change that keeps everything else intact? Crank cfg_img_scale up and keep cfg_text_scale modest. Want it to go wild and reinterpret the scene? Flip that balance. That single dial-pair is the whole art of this node, and it's the part most people don't expect to exist.

The inputs that matter

Required inputs:

  • image - the input IMAGE tensor, straight from a Load Image node.
  • prompt - the edit instruction. "Make the sky sunset orange," "turn the subject into a cyberpunk elf" - full sentences work better than tag soup, because the model reads them like text.
  • seed - 0 for random, positive for reproducible edits.
  • cfg_text_scale - how strongly the edit instruction is followed, default 4.0 (range 1–8).
  • cfg_img_scale - how strongly the original image is preserved, default 2.0 (range 1–4). This is the one unique to editing.
  • num_timesteps - denoising steps, default 50 (range 10–100).

Optional: show_thinking (planning pass before denoising), cfg_interval (CFG interval start, default 0.0 here - different from the text-to-image node's 0.4), timestep_shift (default 3.0), cfg_renorm_min, cfg_renorm_type (default text_channel, the editing-specific renormalization), and text_temperature for the thinking text. Note the defaults differ from the T2I node on purpose - cfg_renorm_type defaults to text_channel for editing and global for generation, matching what the official app uses per task.

Two outputs: image (the edited IMAGE, into a preview/save node) and thinking (a STRING with the planning text when show_thinking is on).

Installing and running it

Same pack, same install as every other BAGEL node:

cd ComfyUI/custom_nodes
git clone https://github.com/neverbiasu/ComfyUI-BAGEL
cd ComfyUI-BAGEL && pip install -r requirements.txt

or install "ComfyUI-BAGEL" from ComfyUI Manager, then restart. Wire a BAGEL Model Loader into the model input first - this node does nothing on its own. The weight is the model: on a 24GB card use the pre-quantized DFloat11 variant (~22GB VRAM) or the NF4 quantization of the standard model; full BF16 really wants multi-GPU.

Common gotchas

The same environment failures that plague the rest of the pack hit here first: NameError: 'Qwen2Config' is not defined means flash-attention/triton is missing (prebuilt wheels in the pack's issue thread), and NF4/INT8 quantization needs bitsandbytes while the DF11 model needs dfloat11. Editor-specific gripes: if edits come out too conservative, raise cfg_text_scale before you touch anything else - people instinctively raise steps first and wonder why nothing changes. And a cfg_img_scale of 1.0 basically abandons the original image, so don't set it there expecting subtlety. Like all BAGEL generation, this is slow - a 1024×1024 edit is measured in minutes, not seconds. Budget for it or pick a smaller source image.

CategoryBAGEL/Deprecated

Inputs (13)

NameTypeDefaultDescription
modelBAGEL_MODELBAGEL model
imageIMAGEInput image
promptSTRINGEdit the image according to the descriptionEditing prompt
seedINT00–1000000Random seed, 0 for random
cfg_text_scaleFLOAT4.01–8CFG text scaling
cfg_img_scaleFLOAT2.01–4CFG image scaling
num_timestepsINT5010–100Denoising steps
show_thinkingoptBOOLEANfalseDisplay reasoning process
cfg_intervaloptFLOAT0.00–1CFG interval start value
timestep_shiftoptFLOAT3.01–10Timestep offset
cfg_renorm_minoptFLOAT0.00–1CFG re-normalization minimum value
cfg_renorm_typeoptCOMBOtext_channelCFG re-normalization type
text_temperatureoptFLOAT0.30–1Text generation temperature

Outputs (2)

NameTypeDescription
imageIMAGE
thinkingSTRING