LTXV Time-Gated LoRA (LTX 2.3)
Make an LTX 2.3 LoRA appear for one part of the clip — no stitching required
- model
- video_latent
- model
- video_latent
- schedule_info
- data
LTX 2.3 is finally good enough that you want to do more with it than one flat style for a whole clip. But every LoRA you load applies at one strength for the entire video, and prompt adherence is still the model's weakest axis - asking a single prompt to deliver "realistic, then claymation in the middle, then realistic again" is a gamble. The old answer was rendering segments separately and stitching them, which is where temporal consistency goes to die.
This node is the alternative: it schedules a visual LTX 2.3 LoRA's strength over the video timeline inside a single continuous sampling run. The demo that ships with it is a clip that starts realistic, turns claymation for the middle third, then snaps back - one render, no cuts. Same trick works for an age-slider reveal (adult → younger → elderly) or for chaining two scheduled LoRAs in one clip.
Know what you're adopting, though. This is from Jinx138's ComfyUI-LTXV-TimeGated-LoRA pack, a young and small one - the author's r/comfyui launch post (June 2026) describes it as their first public custom node and got zero replies. The README and bundled workflows are the documentation, and there's no community lore to fall back on. You're an early adopter, and the reward is a genuinely neat idea.
How it works
The node reads the real video timeline from the video_latent you feed it (LTX 2.3's temporal compression is fixed at 8), builds a per-frame strength envelope, then wraps the model so the LoRA's effective strength equals strength_model × the local envelope value at that point in the clip. Audio LoRA layers are deliberately ignored - this is visual gating only. Multiple instances stack additively, which is how you get a rain LoRA on for one third and a color LoRA on for another.
Placement matters. This patches the model at runtime, so it goes last in the MODEL chain, immediately before the sampler or guider - not in the static LoRA group near the loader. And connect video_latent from the final video-only latent, before any audio/video concat. Feed it a combined AV latent and the timeline math goes wrong.
Inputs you'll actually set
lora_name- any visual LTX 2.3 LoRA from yourlorasfolder.strength_model- the global multiplier. Effective strength is this × the envelope. Don't assume 1.0 is the ceiling; the author's own docs say LTX 2.3 LoRAs often want more, and slider/transform LoRAs take signed values.effect_regionplusstrength_before/strength_during/strength_after- the active interval (quarters, thirds, halves) and the strength on either side.ramp_mode=flatmakes a hard step;q_curvewithramp_qsoftens the transition.schedule_mode=manual_framesswaps the region presets for exactsegment_lengths/segment_strengthsCSV when you need frame-exact control.
Outputs: model (the patched chain), video_latent (unchanged passthrough so stacked nodes wire cleanly), schedule_info (a string reporting resolved frames, region and warnings - read it when something looks off), and data, the envelope payload that feeds the pack's curve preview.
Install
The pack has zero dependencies (pyproject declares none; it uses ComfyUI's bundled torch/PIL) and no model downloads - the LoRA comes from your existing folder:
cd ComfyUI/custom_nodes
git clone https://github.com/Jinx138/ComfyUI-LTXV-TimeGated-LoRA
Restart ComfyUI and it shows up under LTXV/LoRA. ComfyUI Manager works too - search "LTXV Time-Gated LoRA" in the registry tab.
Where people get burned
- Effect weak or invisible? With I2V, a strong image anchor suppresses LoRA transformations. Lower the anchor to roughly 0.2–0.5 before blaming the LoRA.
- Gate is right but the style still bleeds afterward? A real LoRA can shift later video semantics even when the gate itself is temporally correct.
- "Stale TemporalLoRALinearWrapper" error? Restart ComfyUI before testing again.
transition_framesonly does anything inmanual_framesmode or thetransition_framesenvelope mode - local/hold_strength modes use the neighbor segment length as the ramp duration.- After updating the pack, replace node instances rather than reusing old ones; the v1.1 widget layout shifted.
torch.compileisn't supported. SageAttention works, but keepallow_compile=false.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Completed LTX 2.3 MODEL chain. Place this node last, immediately before the sampler/guider. Chain additional LTXV Time-Gated LoRA nodes here to combine scheduled visual effects. | |
| video_latent | LATENT | REQUIRED timing reference: connect the final video-only LATENT after image/FLF conditioning and before AV concatenation. Do not connect an audio+video latent. The unchanged latent is passed through on the output for stacking additional LTXV Time-Gated LoRA nodes. | |
| fps | FLOAT | 24.001–240 | Frames per second for envelope data/preview timing. Connect the same FPS value used by Video Combine or your workflow output. It does not change the envelope or sampling. |
| lora_name | COMBO | Visual LTX 2.3 LoRA to time-shape. Audio LoRA layers are intentionally ignored in the classic visual TimeGate scope. | |
| strength_model | FLOAT | 1.00-8–8 | LoRA strength multiplier. Effective patch strength equals lora_strength × the local envelope value. LTX 2.3 LoRAs may require strengths above 1.0; signed values are valid for slider/transform LoRAs. |
| schedule_mode | COMBO | effect_region | effect_region uses the v1.1 temporal envelope controls. manual_frames preserves exact CSV segment scheduling and transition_frames crossfades. |
| effect_region | COMBO | middle third | Used only in effect_region mode. Select the active interval controlled by strength_during. Neighbor segments are resolved from this region and the video_latent timeline. |
| envelope_mode | COMBO | local | local: strength_before and strength_after are stable levels before/after the active region; q_curve uses only the immediate neighbor segments as ramps into/out of strength_during. hold_strength is kept as a compatibility/explicit hold mode. transition_frames: before/during/after zones with boundary crossfades controlled by transition_frames. |
| strength_before | FLOAT | 0.00-8–8 | Target LoRA envelope level before the active region. In local/hold_strength modes it is held across the earlier timeline; q_curve uses the immediate preceding neighbor segment as the ramp from this value into strength_during. |
| strength_during | FLOAT | 1.00-8–8 | Target LoRA envelope value inside the selected active region. |
| strength_after | FLOAT | 0.00-8–8 | Target LoRA envelope level after the active region. In local/hold_strength modes it is held across the later timeline; q_curve uses the immediate following neighbor segment as the ramp from strength_during down/up to this value. |
| ramp_mode | COMBO | q_curve | flat uses hard segment/envelope values. q_curve shapes transitions over the full neighboring segment length; transition_frames is not used by local/hold_strength envelope modes. |
| q_in | FLOAT | 1.000.01–16 | Used only by q_curve. Shapes the incoming ramp: strength_before -> strength_during. q=1 linear; q>1 front-loaded; q<1 delayed. |
| q_out | FLOAT | 1.000.01–16 | Used only by q_curve. Shapes the outgoing ramp: strength_during -> strength_after. q=1 linear; q>1 front-loaded; q<1 delayed. |
| segment_lengths | STRING | 80,81,80 | Used only in manual_frames mode. Comma-separated segment lengths in rendered frames; the sum must equal the video length resolved from video_latent. |
| segment_strengths | STRING | 0,1,0 | Used only in manual_frames mode. Comma-separated multipliers paired with segment_lengths; signed and decimal values are valid, for example 0,-1,1.5. |
| transition_frames | INT | 00–4096 | Used only by manual_frames and envelope_mode=transition_frames. Ignored by v1.1 local/hold_strength envelope modes, where the neighboring segment length defines the ramp duration. |
| memory_mode | COMBO | optimized_safe | optimized_safe is the recommended default. optimized_low_vram_inplace may reduce peak VRAM for long clips or stacked nodes but is experimental; use it only after an OOM in safe mode and compare output stability. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| video_latent | LATENT | — |
| schedule_info | STRING | — |
| data | LTXV_ENVELOPE_DATA | — |