LTX-2 One-Shot Low-RAM Looper ??
Loop a whole long video in one graph run, on a tight VRAM budget
- model
- vae
- noise
- sampler
- sigmas
- guider
- latents
- optional_guiding_latents
- optional_cond_images
- optional_positive_conditionings
- optional_negative_index_latents
- optional_normalizing_latents
- denoised_output
- report
Most long-video strategies in ComfyUI are "generate a segment, stop, wire the next segment, run again." That's tedious, and it's where the node spaghetti creeps in. This node is the "just run it" option: one sampler node that takes your full latent, walks through it in temporal tiles, and returns the whole denoised result in a single execution - while aggressively managing VRAM and RAM so it works on hardware that can't hold a long LTX-2 sequence at once.
It's the heavyweight sibling of IAMCCS_LTX2_LoopingSampler. The LoopingSampler is a clean, self-contained tiler; this one is the kitchen sink - spatial tiling on top of temporal tiling, per-chunk cache cleanup, model unloading, conditioning image support, and source-lock controls. If your card chokes on even moderately long clips, this is the node the pack points you at.
How it works
It chunks the latent with temporal_tile_size (default 80) and temporal_overlap (default 24) in pixel frames, like the LoopingSampler. The differences:
- Spatial tiling too -
horizontal_tiles/vertical_tiles(up to 4 each) split each frame spatially, withspatial_overlapfor seam blending. This is how 12GB cards get through frames they couldn't touch otherwise. - Aggressive memory management -
unload_all_between_chunks(default on) andsoft_empty_cache_between_chunks(default on) drop model state between tiles;cleanup_every_n_chunks(default 1) controls how often the full cleanup runs. This is the "low RAM" in the name, and it costs speed. - Conditioning support -
optional_cond_imageswithoptional_cond_image_indices(which frames they attach to, default"0") atcond_image_strength, plusoptional_guiding_latentsfor V2V-style guidance. - Continuity knobs -
guiding_strength,source_lock_strength(hold the source fixed, 0 = off),adain_factor(default 1.0, per-tile statistics alignment), andguiding_start_step/guiding_end_stepto scope when guidance applies.
Important dependency: unlike the LoopingSampler, this node requires the official ComfyUI-LTXVideo pack - it resolves LTXVInContextSampler and LTXVExtendSampler from it at runtime and raises a clear error if they're missing.
Inputs and outputs
- Core:
model,vae,noise,sampler,sigmas,guider,latents. - Tiling:
temporal_tile_size,temporal_overlap,horizontal_tiles,vertical_tiles,spatial_overlap. - Guidance/memory: the full optional list above.
Outputs: denoised_output (LATENT) and a report STRING with the run's statistics.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
And make sure ComfyUI-LTXVideo is installed (Manager → search "ComfyUI-LTXVideo", or git clone https://github.com/Lightricks/ComfyUI-LTXVideo). Restart both. The README's baseline is ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Gotchas
Memory toggles are speed killers, and the defaults are tuned for safety, not pace - if you have headroom, set unload_all_between_chunks: false and you'll feel the difference. The classic confusion is optional_cond_image_indices: it's a string like "0" or "0,120" listing which frames the cond images attach to, so a wrong value silently conditions the wrong part of the clip. And if it refuses to run with "Required LTX samplers were not found," that's not this pack being broken - ComfyUI-LTXVideo isn't loaded, full stop.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| vae | VAE | — | |
| noise | NOISE | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| guider | GUIDER | — | |
| latents | LATENT | — | |
| temporal_tile_size | INT | 8024–1000 | — |
| temporal_overlap | INT | 2416–256 | — |
| guiding_strength | FLOAT | 1.000–1 | — |
| temporal_overlap_cond_strength | FLOAT | 0.500–1 | — |
| optional_guiding_latentsopt | LATENT | — | |
| optional_cond_imagesopt | IMAGE | — | |
| optional_cond_image_indicesopt | STRING | 0 | — |
| optional_positive_conditioningsopt | CONDITIONING | — | |
| optional_negative_index_latentsopt | LATENT | — | |
| optional_normalizing_latentsopt | LATENT | — | |
| cond_image_strengthopt | FLOAT | 1.000–1 | — |
| adain_factoropt | FLOAT | 1.000–1 | — |
| source_lock_strengthopt | FLOAT | 0.000–1 | — |
| guiding_start_stepopt | INT | 00–1000 | — |
| guiding_end_stepopt | INT | 10000–1000 | — |
| unload_all_between_chunksopt | BOOLEAN | true | — |
| soft_empty_cache_between_chunksopt | BOOLEAN | true | — |
| cleanup_every_n_chunksopt | INT | 11–64 | — |
| horizontal_tilesopt | INT | 11–4 | — |
| vertical_tilesopt | INT | 11–4 | — |
| spatial_overlapopt | INT | 00–64 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| denoised_output | LATENT | — |
| report | STRING | — |