Nodes/Comfyui-zhenzhen/zhenzhen-bria-fibo-edit-fal
ComfyUI Node

zhenzhen-bria-fibo-edit-fal

Instruction editing that respects your mask (when you want one)

By T8mars·Created about a year ago·Updated a day ago· 740
zhenzhen-bria-fibo-edit-fal
  • image
  • mask
  • images
  • response
  • image_urls
instructionchange lighting to starlight nighttime
image_url
mask_url
api_key
seed5555
steps_num30
negative_prompt
guidance_scale5.0
sync_modefalse
image_waybase64
poll_interval6
max_poll_attempts600
skip_errorfalse

BRIA is the commercial image-editing house that keeps a low profile - no hype threads, just dependable hosted editing APIs that e-commerce and stock teams actually pay for. Fibo is their instruction-following image editor: you type "change lighting to starlight nighttime" and the whole frame re-renders to match. This node wraps bria/fibo-edit/edit through the Zhenzhen API, so you get BRIA's editor without a BRIA account, paying per image in workshop credits instead.

The thing that sets Fibo apart from Bernini-style editing is the optional mask. Bernini edits the whole frame and hopes you like it. Fibo can do the same whole-frame instruction edit, or you can wire in a mask so the instruction only touches the region you care about - the classic recipe for "change the background but leave the product untouched." That makes it a genuinely useful middle ground between maskless editing and full inpaint pipelines.

How it works

Standard Zhenzhen FAL flow under the hood: the node POSTs your image (base64 by default) plus your instruction to the proxy, polls every few seconds until the job finishes, downloads the result, and returns an IMAGE. The sync_mode toggle exists if you'd rather the request block inline than poll. There's no local compute and no mask segmentation happening on your machine - if you're generating a mask from a MASK tensor, you'll need a mask-to-image converter (e.g. a Mask→Image node) in front, because the input slot takes an IMAGE.

Inputs and outputs that matter

The required input is instruction - a natural-language edit command, and the default "change lighting to starlight nighttime" is a decent template for how to phrase them. Then:

  • image - your source IMAGE tensor (or image_url). Required in practice; the node errors without it.
  • mask - optional IMAGE. When supplied, the edit is confined to it. This is Fibo's superpower and the reason to pick it over the maskless edit nodes.
  • guidance_scale - 5.0 default. Adherence knob; 7-8 for strong instructions, lower if edits feel over-applied.
  • steps_num - 30 default (20-100). More steps, finer result, more cost.
  • negative_prompt - optional; useful for steering away from artifacts in whole-frame edits.
  • seed - default is 5555, not 0, so output is reproducible until you change it. FAL caps at 65535.
  • skip_error - on, a failed call returns a placeholder instead of killing your batch.

Outputs: images (the edited IMAGE), response (raw JSON), image_urls (hosted result URLs).

Installing it

One pack, one clone:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

Restart ComfyUI, or install "Comfyui-zhenzhen" via ComfyUI Manager. No model downloads - this pack is pure HTTP plumbing.

Common issues

The pack-level gotchas: you need a Zhenzhen account with credit, the overseas API can throw 443 from some networks (VPN with TUN mode), and 500s on first run are usually upstream - re-run before debugging. For Fibo specifically, the most common mistake is treating it like a masked inpaint model and expecting the mask to come from a MASK tensor directly - it takes an IMAGE, so convert first. And if whole-frame edits come out too strong, lower guidance_scale before you blame the prompt; this model will happily over-apply.

Categoryzhenzhen/FAL

Inputs (15)

NameTypeDefaultDescription
instructionSTRINGchange lighting to starlight nighttime
imageoptIMAGE
maskoptIMAGE
image_urloptSTRING
mask_urloptSTRING
api_keyoptSTRING
seedoptINT55550–655350 = random seed. FAL seed max is 65535.
steps_numoptINT3020–100
negative_promptoptSTRING
guidance_scaleoptFLOAT5.00–30
sync_modeoptBOOLEANfalse
image_wayoptCOMBObase642 options: base64, image_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse

Outputs (3)

NameTypeDescription
imagesIMAGE
responseSTRING
image_urlsSTRING