Painter LTX2V
The latent prep step that just works
- video_vae
- audio_vae
- start_image
- end_image
- latent
- video_latent
- audio_latent
If you've stared at an LTX-2 workflow and wondered why it takes six nodes just to hand the sampler a latent, this is the node that condenses all of them into one. PainterLTX2V builds the empty video latent Lightricks' LTX models sample from, optionally splices a first and/or last frame into it, and optionally attaches the audio latent - so one box replaces the empty-latent creator, the frame-control encoder, and the audio-VAE plumb job.
Why this pack exists at all: LTX-2 (Lightricks' 19B audio+video model) shipped in January 2026, and the first week the official nodes were rough enough that people were patching ComfyUI core by hand. The Painter team shipped this pack the same week, and the community noticed. A user running the full 19B model on 16GB of VRAM called it "an excellent option and easy to install," and the launch thread's verdict was blunt: "It's actually really good!" That early-mover reputation is the pack's whole story - it does one thing, does it early, and doesn't fall over.
How it works
Under the hood it's the standard LTX latent dance, done for you. It creates a zeroed tensor shaped for LTX's high-compression VAE: spatial dims divided by 32, frames divided by 8 - so your length of 97 becomes 13 latent frames. That empty tensor comes with an all-ones noise mask, meaning "denoise everything."
The frame control is where it gets clever. Feed a start_image and it encodes the image through your video_vae, writes it into the first latent frames, and flips that region of the noise mask to zero. Zero mask = the sampler leaves those frames alone, exactly like a latent inpainting mask. Same trick mirrors the end_image into the tail frames. That's the whole first-frame/last-frame "FFLF" control mechanism, no extra nodes.
Inputs and outputs that matter
Only a handful are yours to set:
video_vae- required, no way around it. This is your LTX video VAE (LTX-Video 0.9.x or LTX-2).width/height/length/frame_rate/batch_size- the shape of the clip. Defaults are 768x512, 97 frames at 25fps.start_image/end_image- optional. Nothing connected = text-to-video. Start only = image-to-video. Both = interpolate between two stills.audio_vae- optional, and this is the LTX-2 special sauce. Connect it and the node appends a zeroed audio latent to the video latent so the sampler carries sound alongside the picture.
Outputs are latent (the combined video+audio bundle when an audio VAE is attached), plus split video_latent and audio_latent - the pack's sampler feeds on those directly. Any LTX video VAE decode node turns the result into frames.
One opinionated note on the defaults: the model family standard is 24fps, and 48fps is the community's fix for glitchy I2V motion. 25fps isn't going to break anything, but you're sampling at a slightly odd rate for nothing.
Install and gotchas
No pip dependencies - there's no requirements.txt, just ComfyUI core modules. Install via ComfyUI Manager (search "PainterLTXV2") or:
cd ComfyUI/custom_nodes/
git clone https://github.com/princepainter/ComfyUI-PainterLTXV2.git
then restart ComfyUI. The node lands in latent/video/ltxv.
The real requirements are the models: an LTX checkpoint plus its video VAE from Lightricks' HuggingFace repos, and the audio VAE only if you want sound. The 19B LTX-2 is a pig - expect heavy RAM usage on mid cards. And the pack needs a recent ComfyUI: the code leans on comfy.nested_tensor, which only exists in the builds that added native LTX-2 audio support. On an old install the whole pack silently fails to load - if the nodes are missing, update ComfyUI first, not the pack.
If your I2V comes out static or the model ignores the input frame, that's LTX-2's launch-era I2V weakness doing its thing, not this node - the frames are definitely in the latent. And no audio on the other end means you skipped the audio_vae.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| video_vae | VAE | — | |
| width | INT | 76864–4096 | — |
| height | INT | 51264–4096 | — |
| length | INT | 971–1024 | — |
| frame_rate | FLOAT | 25.01–120 | — |
| batch_size | INT | 11–4096 | — |
| audio_vaeopt | VAE | — | |
| start_imageopt | IMAGE | — | |
| end_imageopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| video_latent | LATENT | — |
| audio_latent | LATENT | — |