Nodes/Zura Nodes/Zura Optional Image Edit
ComfyUI Node

Zura Optional Image Edit

A/B Switch With an Off Position That Actually Saves Time

By ZURAVFX·Created 22 days ago·Updated about 16 hours ago· 1
Zura Optional Image Edit
  • original
  • edited
  • image
◄enable_editfalse►

Zura Optional Image Edit takes two images and a boolean, and returns one of them. On paper that's a Switch. In practice the difference is that this one makes the unselected branch not run, which in a graph where the other branch is a Flux Klein edit is the difference between instant and forty seconds.

Two image inputs, both declared lazy: original and edited. One boolean, enable_edit, default off. One output, image.

Why lazy inputs are the whole point

ComfyUI evaluates lazily when a node asks for it. This node implements check_lazy_status so it requests exactly one of its two inputs - edited when the toggle is on, original when it's off - and never both. Whatever is wired into the other socket is simply not executed for that run.

That's not cosmetic. In the multicam V3/V4 flow the edited branch is a Klein model load, a VAE encode, a CFGGuider at cfg 1.0 and a four-step sample. Muting a Switch on the finished pixels would still pay for all of that. This node skips the model call entirely, so "Look off" genuinely means the pack's README line: it returns the H3 result without loading the image or video models.

If you've selected a branch and forgotten to connect it, you get Connect the selected image branch before running. - vague only if you've forgotten you have a switch in the graph.

How to wire it

The intended pairing is with Zura Klein Look Presets: take its edit_prompt into your edit branch's CLIP text encode, take an untouched copy of the same frame into original, take the edit result into edited, and wire edit_enabled straight into enable_edit. One toggle then controls both the prompt and the branch, and they can't disagree.

Both inputs should be the same resolution and framing. Nothing in this node checks, and a mismatch will surface much later as a video that resizes or jitters at a shot boundary - the assembler downstream will crop-and-scale to match the first example frame it finds, which is a fix for an accident, not a design.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/ZURAVFX/ComfyUI_zura_nodes

Restart ComfyUI, or install Zura Nodes from ComfyUI Manager (publisher zuravfx). No model files, no extra Python packages for this one - the lazy-input behaviour is engine-side, not something the node has to import.

Where people get confused

The honest annoyance with nodes like this is that the branch you turned off looks perfectly connected in the graph. There's no visual cue on the canvas beyond the boolean widget, so if your edit isn't happening, the wiring looks fine by inspection. Check the toggle before you check the wires.

Second: because enable_edit only appears once, on one node, don't duplicate it. If you also gate the edit branch with a bypass or a second boolean somewhere upstream, you've made two sources of truth for one decision - which is the exact problem the pack's ZuraV3 · Choose pass stage switch exists to avoid one level up.

CategoryZura/image

Inputs (3)

NameTypeDefaultDescription
originalIMAGE—
editedIMAGE—
enable_editBOOLEANfalse—

Outputs (1)

NameTypeDescription
imageIMAGE—