VIBE Image Editor
Point at a picture and say what to change, in plain English
- image
- latent_image
- IMAGE
"Make it winter." "Turn the dog into a cat." "Put her in a cowboy hat." That's the whole workflow here - the VIBE Image Editor takes a picture and an instruction in natural language, and edits the image to match. No inpainting mask, no ControlNet preprocessor, no careful negative-prompt choreography. One node, one sentence, done.
VIBE stands for Visual Instruction Based Editor, an open-source model from the AI-Forever / iitolstykh crew, and this node is a clean ComfyUI wrapper around it. Under the hood it's a roughly 1.6B-parameter Sana diffusion transformer paired with a 2B Qwen3-VL vision-language model as the text encoder. The smallness is the point: it runs on a single consumer GPU in a few seconds and loads in bf16, unlike the 20B+ editing monsters floating around. It's fast because Sana uses linear attention, and it's local - no API, no key, nothing leaves your machine.
How it actually works
Your positive prompt isn't fed to the model raw. VIBE wraps it as "what will this image be like if {your instruction}" and passes that, together with the image, through Qwen3-VL - that's the part that actually understands "make it winter" as a semantic change rather than a tag list. Then the Sana transformer denoises, and the pipeline uses two separate guidance scales (the instruct-pix2pix trick):
- cfg_text (default 4.5) - how hard the instruction is applied. Crank it up when edits come out too subtle.
- cfg_image (default 1.2) - how strongly the original image is preserved. This is the dial people sleep on: raise it to keep composition and detail locked down, lower it to let the edit really rework the picture.
Resolution is handled for you. The node snaps everything to multiples of 32 (a Sana requirement), and if you connect an image it resizes the result back to your original dimensions. That's the one genuinely smart convenience here - most ComfyUI users are used to babysitting latent sizes, and this quietly doesn't make you.
The inputs that matter
positive- your instruction. This is the star; "make it blue" is the default but it handles compound edits like "turn the sky to sunset and add snow."steps(default 20) - more steps, more careful edits; 20 is usually plenty.cfg_textandcfg_image- the two sliders above; they do most of the quality tuning.seed- set it to reproduce an edit.- Optional
image(the thing you're editing) andlatent_image- plug in anEmpty Latent Imageif you want to control the output resolution instead of inheriting it from the input.
Output is a single IMAGE, which wires straight into anything downstream - Save Image, an upscaler, whatever.
Installing it
ComfyUI Manager is the easy path: search for ComfyUI-VIBE and install. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/ato-zen/ComfyUI-VIBE
cd ComfyUI-VIBE
pip install -r requirements.txt
Then restart ComfyUI. The node looks for weights in ComfyUI/models/vibe/, and the pack ships a "Check / Download Model" button on the node that pulls iitolstykh/VIBE-Image-Edit from Hugging Face for you - it's a few gigabytes, not a Flux-sized download. Manual route: mkdir -p models/vibe && cd models/vibe && git clone https://huggingface.co/iitolstykh/VIBE-Image-Edit. Dependencies are diffusers>=0.33.1, transformers, accelerate, plus a few utility libs - nothing exotic.
Where people get burned
First generation is slow: the node lazily imports its libraries and loads both models on first run (it hardcodes device="cuda", so CPU-only installs won't work). The wait is one-time - the model stays cached in memory after that. If the download button throws a "Module 'huggingface_hub' missing!" error, re-run pip install -r requirements.txt; that's the exact message the source raises when the env is short a package.
Set expectations honestly. The community reception for VIBE-Image-Edit was lukewarm - testers found surgical edits like "remove their sunglasses" hit-or-miss, and it's not in the same league as heavier editors like QIE or Flux Kontext. Think of it as the lightweight, fast, good-enough option for broad transformations, not the thing that re-lights a scene. And before you build anything commercial on it: it inherits Sana's restrictive non-commercial license, so check the terms before you ship.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | STRING | make it blue | — |
| steps | INT | 201–100 | — |
| cfg_text | FLOAT | 4.50–20 | — |
| cfg_image | FLOAT | 1.20–10 | — |
| seed | INT | 00–18446744073709550000 | — |
| imageopt | IMAGE | — | |
| latent_imageopt | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |