Concurrent Submit | zhenzhen-mai-image-2.5-edit-fal
The edit node with a queue
- image1
- image2
- image3
- image4
- task
MAI Image 2.5 is the image edit workhorse in Microsoft's MAI lineup, and this is the Concurrent Submit twin of zhenzhen-mai-image-2.5-edit-fal: a fal-hosted, instruction-based image editor where you feed in a photo and a prompt and it redoes the picture - swap the outfit, change the lighting, remove the background, whatever you can describe. The edit API is a "batch this" workflow waiting to happen, and that's exactly what the Submit twin enables: up to 30 of these in the shared image pool, all editing at once.
The inputs that matter
- prompt - required, and it's the whole game here. Precise instructions ("replace the red coat with a denim jacket, keep everything else") get dramatically better edits than vague ones.
- image1–image4 - up to four input images as ComfyUI tensors. This is the "here's the photo, edit it" slot.
- image_urls - the tooltip says it plainly: "Optional external image URLs, one per line." Use this when your source images are already hosted and you'd rather skip the base64 upload.
- image_way -
base64vsimage_url, matches whatever you're feeding in. - num_images - 1 to 4 output variants per job. Handy when you want a few takes of the same edit and don't want to pay the round-trip four times... except you're paying per image anyway, so it's a convenience, not a saving.
- aspect_ratio -
autoplus the usual set. - output_format - png / jpeg / webp.
- sync_mode - force a synchronous response instead of the async poll.
- poll_interval / max_poll_attempts, api_key, seed, skip_error - the standard pack quartet.
The concurrent flow
Output is a single task (COMFLY_IMAGE_FUTURE), not images. So the real workflow is: a row of these Submit nodes - one per photo, or several per photo with different prompts - each task wired into ComflyConcurrent_Image_Await (30 slots). The collector waits for the whole batch, returns the images in slot order, and adds a status JSON so you can see which slot failed. Batch of eight product photos getting the same background cleanup is the canonical use; that's one queue, one collector, thirty seconds of your attention instead of eight babysat runs.
Install and gotchas
It ships in T8mars/Comfyui-zhenzhen - ComfyUI Manager → search "Comfyui-zhenzhen", or git clone https://github.com/T8mars/Comfyui-zhenzhen into custom_nodes, then restart. No local models; standard Python deps. Paid token from the Zhenzhen store, overseas servers (proxy if you're in China), and fal billing is pre-charge-then-settle. Remember you're sending your images to a third-party server for every edit - fine for stock-style batch work, think twice before shipping anything sensitive through it.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image_urlsopt | STRING | Optional external image URLs, one per line. | |
| api_keyopt | STRING | — | |
| num_imagesopt | INT | 11–4 | — |
| aspect_ratioopt | COMBO | auto | 8 options: auto, 1:1, 4:3, 3:4, 16:9, 9:16, +2 |
| output_formatopt | COMBO | png | 3 options: png, jpeg, webp |
| 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 | — |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_IMAGE_FUTURE | — |