LTX Director
The timeline editor that made LTX workflows actually editable
- model
- clip
- audio_vae
- optional_latent
- model
- positive
- video_latent
- audio_latent
- guide_data
- motion_guide_data
- frame_rate
- combined_audio
If you've ever stared at a ComfyUI LTX graph and thought "this is a video tool, why am I editing JSON arrays to time a shot," LTX Director is the answer. It's the WhatDreamsCost pack's flagship: a full timeline editor that lives inside a single node, where your text, image, and audio segments are draggable blocks you trim and cut on a ruler instead of numbers in a widget. It's built for LTX 2.3, which is a first-frame/last-frame model with time-windowed conditioning - stock ComfyUI has no good way to say "this, then that, at this moment." Director is the community's solution, and with the 2.0 update (June 2026) it stopped being a keyframe helper and became an actual AI video editor.
The author's own framing is worth respecting: he spent a month and a half on 2.0 and it shows - IC-LoRA support, audio inpainting, Retake Mode, timeline save/load, all of it free. Community reception was strong (the 2.0 launch thread pulled hundreds of upvotes), and it's now a fixture of the LTX 2.3 tooling discussion alongside LTX Desktop.
How it works
Director is, at its core, Kijai's Prompt Relay idea wrapped in a WYSIWYG interface. Prompt Relay lets each video segment carry its own local prompt that only conditions its time window (via Gaussian penalty masks on cross-attention). Director gives you those segments as blocks on a timeline, then serializes everything into JSON (timeline_data) plus the local_prompts, segment_lengths, and guide_strength strings - all auto-managed, don't hand-edit them. At execution it parses that state, VAE-encodes your image/video segments into guide frames, builds a Prompt Relay conditioning with soft or hard segment boundaries, and generates an empty LTXV latent (or uses your optional_latent). With an audio_vae connected it produces an audio latent too, which is how LTX-2's synchronized audio gets into the mix.
One thing beginners trip on: duration_frames only sets the visual scale of the timeline - the actual frame count comes from the latent you connect. Change the latent length and the timeline rescales; change the widget and nothing about your generation changes.
The inputs that matter
modelandclip- your LTX model and its CLIP. These get patched, so you'll see them on the output side too.global_prompt- conditions the entire video and anchors persistent characters/scene context across segments. Learn this one; it's how you stop a character from mutating between shots.epsilon- Prompt Relay's penalty decay. Below ~0.1 you get sharp segment boundaries (the default 0.001); raise it to 0.5+ for softer transitions. This is the hidden lever for "the cuts feel too harsh."use_custom_audio/inpaint_audio- timeline audio vs. generated-from-scratch, and whether empty gaps get audio-inpainted.custom_width/custom_height/divisible_by- how guide images get resized to LTX-friendly dimensions (32-divisible).override_audio- pull audio from the IC-LoRA video instead of the track.
Outputs
The important ones: model (patched), positive (Prompt Relay conditioning), video_latent, audio_latent, guide_data and motion_guide_data (the keyframe/motion payloads), frame_rate, and combined_audio. The standard wiring is Director → LTX Director Guide (which consumes guide_data, motion_guide_data, the latent, and the model) → LTX Director Crop Guides → sampler. Simple text-to-video runs can skip the Guide, but any image or video segments route through it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/WhatDreamsCost/WhatDreamsCost-ComfyUI
Or search WhatDreamsCost in ComfyUI Manager. The README is explicit about the catch: update ComfyUI-LTXVideo and ComfyUI-KJNodes to their latest versions first - "you cannot use this node without updating ComfyUI-LTXVideo!" If the manager list doesn't show v2.0.0 yet, install the nightly to get the latest. Download the example workflows from the repo; they're the fastest way to see a correct graph.
Gotchas
Retake Mode is officially beta and the author says it's "not potent enough" - he's mid-overhaul, so don't judge the node by it. The 2.0.4 update added model caching and dropped Prompt Relay overhead from plain t2v/i2v runs, so don't be surprised when things suddenly feel faster; the quoted 1.5–3x speedup is hardware-dependent, so if you land at the low end, that's normal. And keep in mind the honest community critique that applies to any big overhaul node: the convenience hides the parameters you need when output goes wrong - Director hides Prompt Relay's guts behind the timeline, so when a segment misbehaves, reach for epsilon and global_prompt before assuming the tool is broken.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| start_second | FLOAT | 0.000–1000 | Start time in seconds of the timeline generation. |
| end_second | FLOAT | 5.000–1000 | End time in seconds of the timeline generation. |
| duration_seconds | FLOAT | 5.000.1–1000 | Total timeline duration in seconds (computed/synced from frames). |
| start_frame | INT | 00–10000 | Start frame of the timeline generation. |
| end_frame | INT | 1201–10000 | End frame of the timeline generation. |
| duration_frames | INT | 1201–10000 | Total timeline length in pixel-space frames. Used by the editor for visual scale only. |
| timeline_data | STRING | JSON state of the timeline editor (auto-managed; do not edit by hand). | |
| local_prompts | STRING | Auto-populated from the timeline editor. | |
| segment_lengths | STRING | Auto-populated from the timeline editor (pixel-space frame counts). | |
| epsilon | FLOAT | 0.00100.0001–0.99 | Penalty decay parameter. Values below ~0.1 all produce sharp boundaries (paper default 0.001). For softer transitions, try 0.5 or higher. |
| guide_strength | STRING | Auto-populated from the timeline editor (comma-separated guide strengths for image segments). | |
| audio_vaeopt | VAE | Optional. Connect an Audio VAE to generate audio latents. | |
| optional_latentopt | LATENT | Optional. Connect a latent to override the auto-generated one. | |
| global_promptopt | STRING | Conditions the entire video. Anchors persistent characters, objects, and scene context. | |
| use_custom_audioopt | BOOLEAN | false | Toggle between using timeline audio (ON) and generating audio from scratch (OFF). |
| use_custom_motionopt | BOOLEAN | true | Toggle between using timeline motion guidance (ON) and ignoring motion video segments (OFF). |
| inpaint_audioopt | BOOLEAN | true | Toggle whether empty gaps in the audio track are inpainted with generated audio. |
| frame_rateopt | FLOAT | 241–240 | Frames per second — only affects how time is displayed in the timeline editor when time_units is set to 'seconds'. |
| display_modeopt | COMBO | seconds | Display the ruler, segment ranges, length input, and total in frames or seconds. Internal storage is always pixel-space frames. |
| custom_widthopt | INT | 00–8192 | Target output width for all image segments. Set to 0 to use the original image width. |
| custom_heightopt | INT | 00–8192 | Target output height for all image segments. Set to 0 to use the original image height. |
| resize_methodopt | COMBO | maintain aspect ratio | How to resize image segments to fit the target dimensions. |
| divisible_byopt | INT | 321–256 | Snap the final output image dimensions to be divisible by this number (e.g. 32 for LTX). |
| img_compressionopt | INT | 180–100 | H.264 CRF compression to apply to each guide image. 0 = no compression, higher = more artefacts. |
| override_audioopt | BOOLEAN | false | Use the audio from the IC-LoRA video instead of using the audio track. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| video_latent | LATENT | Auto-generated LTXV empty latent (only populated when no latent is connected). |
| audio_latent | LATENT | Auto-generated audio latent (uses custom audio if enabled). |
| guide_data | GUIDE_DATA | — |
| motion_guide_data | MOTION_GUIDE_DATA | — |
| frame_rate | FLOAT | The frame rate used for the timeline. |
| combined_audio | AUDIO | Combined timeline audio layout. |