Nodes/PopNow/FLUX 3 Klein Base · Edit
ComfyUI Node

FLUX 3 Klein Base · Edit

Three images in, one plain-English instruction

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
FLUX 3 Klein Base · Edit
  • image_urls
  • images
  • task id
◄prompt►
◄aspect_ratioauto►
◄resolution1k►
◄output_formatjpeg►
◄seed0►

Klein is BFL's small, trainable Flux - the release that put a Flux 2-generation model in about 13GB of VRAM and made "run Flux locally" reasonable again. This node is the hosted version of its edit mode: you hand it one to three source images and a sentence describing the change, and it returns the edited image at up to 2K. No inpainting mask, no ControlNet stack, no second sampler.

Why would you reach for it over a local Qwen-Edit or Klein setup? The same reason anyone uses an API node: you don't want to juggle models, or you're on a laptop, or you want the edit at 2K without a 20-minute outpainting ritual. It's also genuinely good at what people used to do with masking - instruction edits are the thing the community moved to Klein and Qwen-Edit for, and it's the reason old inpainting habits look dated now.

How it works

No local diffusion happens. The node packages your prompt and uploads each source picture, quoting the job first and then polling it. Images come back as a decoded IMAGE batch, ready for Save Image or a preview. Uploads are cached for 12 hours against your key, so tweaking the prompt doesn't re-send the same three references.

One mechanism worth understanding: these models read an instruction through an LLM text encoder rather than CLIP. Klein's path stacks a chat-template-encoded prompt into the conditioning, which is why plain sentences work and why the CLIP-era tricks (weighting syntax, negative embeddings) do nothing here. Write to it like a person, not like a tag list.

The inputs that matter

image_urls is an autogrow socket group - connect one image and you get one socket, connect a batch and every picture in it is sent, up to three. Order matters, so keep it deliberate.

prompt is where people either succeed or flail. The tooltip is blunt and correct: say what to change and what must stay the same, and refer to sources as image 1, image 2, image 3. "Put the jacket from image 2 on the woman in image 1; keep her face and the background unchanged" is the shape that works. Vague vibes get you a redraw you didn't ask for.

aspect_ratio defaults to auto, which keeps the shape of the first source image - leave it there unless you're deliberately re-framing. resolution is a size tier, 1k (~1 megapixel) or 2k (~4MP). This is the single biggest lever on your bill, and it's not subtle: in the bundled price table the 2K tier runs about four times the 1K rate. Draft at 1K, finish at 2K.

seed is how you keep a result you like. It starts on fixed, so queueing the same graph twice returns the same image rather than billing you twice. Set control_after_generate to randomize when you actually want variety - every run is charged.

output_format (jpeg/png/webp) only matters if you care about what lands on disk; pick png for anything headed into another edit.

Outputs

images - the result batch, wired into Save Image or another node. task id - the PopNow task id, which is what you quote to support if a render goes sideways, and which also identifies the job in your API console logs.

Installing it

Manager → search PopNow → Install → restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui

Then create a key at popnow.ai/api/console/keys, restart ComfyUI, paste it into Settings > PopNow (or set POPNOW_API_KEY in the environment), and restart once more so the node list comes from your account. Nothing else installs - no weights, no extra Python packages.

Where people get burned

Uploads are capped at 10 MiB per image after conversion; a big 16-bit TIFF-scale source may get re-encoded to JPEG before it goes anywhere. If a source is enormous, scale it down first.

The classic complaint with hosted edit models is over-editing - it changes the hair you asked it to preserve. That's a prompt problem, not a node problem: add explicit preservation clauses and name the parts that must not move.

And if a job comes back as content_rejected, that's the model's own filter, not the pack's. Failed runs are refunded, but there's no local workaround, because there are no weights to patch. Keep an eye on Max credits per run in Settings while you're learning the pricing tiers.

CategoryPopNow/Image/Black Forest Labs

Inputs (6)

NameTypeDefaultDescription
promptSTRINGSay what to change and what must stay the same; refer to sources as image 1, image 2 and image 3.
image_urlsCOMFY_AUTOGROW_V3One to three source images, in the order your prompt refers to them.
aspect_ratioCOMBOautoOutput aspect ratio; auto keeps the shape of the first source image.
resolutionCOMBO1kOutput size tier: 1k is about one megapixel, 2k about four megapixels.
output_formatCOMBOjpegFile format of the result.
seedINT00–2147483647Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed.

Outputs (2)

NameTypeDescription
imagesIMAGE—
task idSTRINGThe PopNow task id, for the API console logs or support.