LTX 2.3 Apply Image Guides
LTX 2.3 Apply Image Guides
- positive
- negative
- vae
- image_guides
- latent
- start_images
- positive
- negative
- latent
The LTX 2.3 Apply Image Guides node is the half of the pair that actually does the work. A Manager upstream holds your image list and shared settings; this node takes that IMAGE_GUIDES payload and applies it to one sampler stage, using that stage's own resolution, latent, and half-size setting. Use it once per sampler pass, and you get the two-stage low-res/high-res workflow without ever adding the same guide images twice.
Why it exists
LTX 2.3's native guide path (LTXVAddGuide from comfy_extras.nodes_lt) appends VAE-encoded guide frames to the latent tensor and writes keyframe_idxs, guide_attention_entries, and noise_mask into the conditioning. That's exactly what this node does under the hood - the pack doesn't reimplement a competing guide format, it wraps the native one. What Apply adds is per-stage control: each Apply node carries its own width, height, half_size_first_pass, latent, and start_images, while inheriting timing, strength, and lock behavior from the Manager's payload. In a 2x upscale workflow, one Apply guides the low-res pass at half size while a second Apply, fed the same payload, guides the high-res pass at full size. Change a guide image once in the Manager and both stages see it.
The inputs that matter
image_guides- theIMAGE_GUIDESpayload from LTX 2.3 Image Guide Manager. This is where all the shared settings (fps, num_frames, timing, strength, locks) come from, so don't re-enter them here.positive/negative- your conditioning from a CLIP encode; the node augments them with the guide metadata and passes them out.vae- the LTX video VAE used to encode guides and start sequences.width/height(default 768×512) - this stage's target output size.half_size_first_pass- for 2x workflows: when nolatentis connected, it creates and guides a half-size first-pass latent whilewidth/heightstay at the final target size.
The two optional inputs are worth knowing. latent is an existing video latent; the moment one is connected, its shape wins - half_size_first_pass does not resize it. start_images is an optional IMAGE batch (frames from a video source, say) applied as a native multi-frame guide starting at frame 0, at start_images_strength * global_strength.
Outputs and wiring
Three outputs - positive, negative, latent - which is exactly what a guider/sampler wants to see:
Apply -> positive -> guider positive
Apply -> negative -> guider negative
Apply -> latent -> sampler latent_image
Then sample, and add native LTXVCropGuides after the sampler to strip the appended guide frames before decode. If your output suddenly has extra frames, that's the step you forgot.
Install
Same pack as the whole family, and it's a light one - no extra Python dependencies beyond a ComfyUI with native LTXV support:
cd ComfyUI/custom_nodes
git clone https://github.com/helto4real/comfui-helto-ltx.git
Restart ComfyUI. Or find it via ComfyUI Manager by searching "comfui-helto-ltx". You bring the LTX 2.3 checkpoint and VAE yourself (the 22B model runs best quantized with plenty of system RAM).
Gotchas
half_size_first_passseems to do nothing. You have alatentconnected. That's the documented rule: a connected latent is authoritative and is never resized. Disconnect it if you want the node to create the half-size latent.- Apply node still shows old inputs. ComfyUI keeps stale node-interface data in saved workflows after a schema change. Refresh the browser, restart, or recreate the node; the runtime tolerates legacy inputs so old graphs don't hard-crash during migration.
- The final-frame guide doesn't hold. If the last frames look distorted or over-constrained with
lock_end_frameenabled (inherited from the Manager), disable it and use a normal-1guide - a locked end writes into the final latent block and can affect several ending frames.
Use this node with a Manager when you're doing multi-stage or upscale work. If it's a single throwaway pass, the LTX 2.3 Image Guides (All-in-One) node does the same job in one box - but Apply is the piece that keeps two stages in sync.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | Positive conditioning to augment with native LTXV guide metadata. | |
| negative | CONDITIONING | Negative conditioning to augment with matching native LTXV guide metadata. | |
| vae | VAE | LTXV VAE used to encode selected guide images and optional start image sequences. | |
| width | INT | 76864–16384 | Target output size for this stage. With half_size_first_pass enabled and no latent connected, the internal latent uses half this value. |
| height | INT | 51264–16384 | Target output size for this stage. With half_size_first_pass enabled and no latent connected, the internal latent uses half this value. |
| half_size_first_pass | BOOLEAN | false | For 2x LTX upscale workflows: when no latent is connected, create and guide a half-size first-pass latent. Width/height should be the final target size. |
| image_guides | IMAGE_GUIDES | Reusable guide payload from LTX 2.3 Image Guide Manager. | |
| latentopt | LATENT | Optional existing video latent. When connected, its shape is used and half_size_first_pass does not resize it. | |
| start_imagesopt | IMAGE | Optional IMAGE batch from a video source. Applied as a native multi-frame guide starting at frame 0. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |