Concurrent Submit | zhenzhen-bria-fibo-edit-fal
Mask-aware instruction editing at 30 jobs at once
- image
- mask
- task
The blocking zhenzhen-bria-fibo-edit-fal is the node you reach for when you want BRIA's instruction editing with an optional mask to keep the untouched parts bit-for-bit intact. It's also, one edit at a time. If you're restyling a product line - twenty shots, same "change lighting to starlight nighttime" instruction, same mask shape - the serial version turns an afternoon into a day. This submit node is the parallel version: same bria/fibo-edit/edit calls, same mask support, but each job goes into the shared image pool and returns a task handle instead of a finished image.
The killer use case is exactly the masked one. Because Fibo confines its edit to the mask, you can batch over a whole folder where each image carries its own mask, fire them all into the 30-worker pool, and get results back in input order - which is the batch-retouch workflow that would otherwise take forever serially.
How it works
Every concurrent node in this pack is auto-generated from its base node's inputs at import time. This one wraps Fibo's process() in a bounded ThreadPoolExecutor (30 image workers by default, set by COMFLY_IMAGE_CONCURRENCY), and returns a COMFLY_IMAGE_FUTURE - a promise, not a picture. The ComflyConcurrent_Image_Await collector ("Concurrent Collect Images (30)") waits for the whole batch and returns real IMAGE tensors in slot order.
Inputs mirror the base node: instruction (required), image/image_url, mask/mask_url, api_key, guidance_scale, steps_num, negative_prompt, seed (default 5555 here, FAL max 65535), sync_mode, image_way, poll settings, and skip_error. Remember the mask input is an IMAGE, not a MASK tensor - convert before wiring, or use mask_url.
Installing it
One clone, whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart ComfyUI, or install "Comfyui-zhenzhen" via ComfyUI Manager. No model downloads - BRIA's editor runs hosted.
Common issues
Pack-level: Zhenzhen account + credit required; 443 errors need a VPN with TUN mode; 500s on first run are usually upstream - re-run. Batch-specific: if a whole batch comes back over-edited, drop guidance_scale before you retry all of it - it's cheaper to tune one blocking call first than to burn 30 concurrent ones. And skip_error is your batch-saver: with it off (default), one bad mask kills the queue; with it on, the failure logs and the rest continue. Watch the meter too - 30 concurrent Fibo edits are 30 paid calls.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| instruction | STRING | change lighting to starlight nighttime | — |
| imageopt | IMAGE | — | |
| maskopt | IMAGE | — | |
| image_urlopt | STRING | — | |
| mask_urlopt | STRING | — | |
| api_keyopt | STRING | — | |
| seedopt | INT | 55550–65535 | 0 = random seed. FAL seed max is 65535. |
| steps_numopt | INT | 3020–100 | — |
| negative_promptopt | STRING | — | |
| guidance_scaleopt | FLOAT | 5.00–30 | — |
| sync_modeopt | BOOLEAN | false | — |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_IMAGE_FUTURE | — |