Nodes/ComfyUI-Koolook/LTX Director (Koolook)
ComfyUI Node

LTX Director (Koolook)

The legacy LTX Director ID that keeps old workflows alive

By malkuthro·Created 11 months ago·Updated 2 days ago· 8
LTX Director (Koolook)
  • model
  • clip
  • audio_vae
  • optional_latent
  • model
  • positive
  • video_latent
  • audio_latent
  • guide_data
  • frame_rate
  • combined_audio
global_prompt
duration_frames120
duration_seconds5.00
timeline_data
local_prompts
segment_lengths
epsilon0.0010
guide_strength
use_custom_audiofalse
frame_rate24
display_modeseconds
custom_width0
custom_height0
resize_methodmaintain aspect ratio
divisible_by32
img_compression18
relay_overrides
audio_transcript_json

If you search ComfyUI for "LTX Director" you'll find two nodes with the same display name, and this is the one you probably shouldn't add. LTXDirector__koolook_v1_3_2 is the compatibility alias Koolook keeps registered so saved workflows from the v1.3.2 era keep opening after an upgrade. The active Director is LTXDirector__koolook; this ID is backed by the v1.3.9-era implementation (LTXDirectorLegacyV132). It exists for your old JSON files, not for your new project.

What it is

When Koolook bumped its Director fork from upstream v1.3.x to v2.0.2, it deliberately kept the old node ID registered. ComfyUI workflows store node IDs by name, so without the alias, every saved workflow referencing LTXDirector__koolook_v1_3_2 would fail to load. The alias preserves your library while the canonical ID rolls to the new implementation. The name is a lie in one sense - it's not actually the old code running, it's a legacy-input-contract wrapper - but the ID stays stable, which is what saved workflows care about.

How it differs from the current Director

The v1.3.2 contract is the older Koolook shape. It has relay_overrides (a JSON dict of per-stream Prompt Relay overrides - video_strength, video_window_scale, audio_strength, audio_window_scale, audio_epsilon) and audio_transcript_json (a timed speech transcript that auto-builds local_prompts, segment_lengths, and timeline_data before Prompt Relay conditioning runs). Both were dropped as unused in the v2.0.2 node. It also lacks everything the new node gained: no reference_images/Ghost Mask, no keyframe_ease, no snap_keyframes_to_grid, no motion_guide_data output, no clean_latent_frames/clean_pixel_frames. Same timeline editor, older contract.

The inputs that matter

Everything else works like the Director you already know: global_prompt conditions the whole clip and anchors persistent characters; duration_frames only sets the timeline's visual scale (real frame count comes from the latent); epsilon controls Prompt Relay's penalty decay (0.001 paper default for sharp segment boundaries, 0.5+ for softer); and timeline_data, local_prompts, segment_lengths, guide_strength are all auto-populated from the timeline editor - don't hand-edit them unless you're recovering a saved state. Optional audio_vae and optional_latent override the auto-generated audio and video latents; use_custom_audio toggles between timeline audio and generated audio.

Outputs: model, positive conditioning, video_latent, audio_latent, guide_data (into your LTXDirectorGuide), frame_rate, and combined_audio.

What to actually do with it

Three cases. Your old workflow won't load: don't panic, this ID is why - it keeps loading against the v1.3.9 implementation. You're starting fresh: add LTXDirector__koolook instead, because that's where every new feature (ghost references, keyframe ease, motion guides) lives. And if you relied on relay_overrides or audio_transcript_json in a saved graph, know that the v2.0.2 node won't have them - port those workflows or keep the alias around deliberately.

Installing it

Same pack, same steps: ComfyUI Manager → Install Custom Nodes → "ComfyUI-Koolook", restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/malkuthro/ComfyUI-Koolook.git

Restart after. It needs the same LTX/Prompt Relay ecosystem as the main Director - LTXDirectorGuide and friends come from the WhatDreamsCost or Lightricks packs, and the Koolook fork only ships the Director itself. And the README's standing one-install warning: Manager installs land in custom_nodes/koolook/, so don't combine Manager with a manual clone or the workflow store can corrupt on restart.

CategoryKoolook/PromptRelay

Inputs (22)

NameTypeDefaultDescription
modelMODEL
clipCLIP
global_promptSTRINGConditions the entire video. Anchors persistent characters, objects, and scene context.
duration_framesINT1201–10000Total timeline length in pixel-space frames. Used by the editor for visual scale only.
duration_secondsFLOAT5.000.1–1000Total timeline duration in seconds (computed/synced from frames).
timeline_dataSTRINGJSON state of the timeline editor (auto-managed; do not edit by hand).
local_promptsSTRINGAuto-populated from the timeline editor.
segment_lengthsSTRINGAuto-populated from the timeline editor (pixel-space frame counts).
epsilonFLOAT0.00100.0001–0.99Penalty decay parameter. Values below ~0.1 all produce sharp boundaries (paper default 0.001). For softer transitions, try 0.5 or higher.
guide_strengthSTRINGAuto-populated from the timeline editor (comma-separated guide strengths for image segments).
audio_vaeoptVAEOptional. Connect an Audio VAE to generate audio latents.
optional_latentoptLATENTOptional. Connect a latent to override the auto-generated one.
use_custom_audiooptBOOLEANfalseToggle between using timeline audio (ON) and generating audio from scratch (OFF).
frame_rateoptFLOAT241–240Frames per second — only affects how time is displayed in the timeline editor when time_units is set to 'seconds'.
display_modeoptCOMBOsecondsDisplay the ruler, segment ranges, length input, and total in frames or seconds. Internal storage is always pixel-space frames.
custom_widthoptINT00–8192Target output width for all image segments. Set to 0 to use the original image width.
custom_heightoptINT00–8192Target output height for all image segments. Set to 0 to use the original image height.
resize_methodoptCOMBOmaintain aspect ratioHow to resize image segments to fit the target dimensions.
divisible_byoptINT321–256Snap the final output image dimensions to be divisible by this number (e.g. 32 for LTX).
img_compressionoptINT180–100H.264 CRF compression to apply to each guide image. 0 = no compression, higher = more artefacts.
relay_overridesoptSTRINGKoolook: JSON dict of Prompt Relay per-stream overrides. Empty = upstream defaults. Supported keys: video_strength (float), video_window_scale (float), audio_strength (float), audio_window_scale (float), audio_epsilon (float). Example: {"video_strength": 10.0}. Underscore-prefixed keys are ignored.
audio_transcript_jsonoptSTRINGKoolook: optional timed speech transcript JSON. Paste or link {"phrases":[{"start":0,"end":0.5,"text":"What?"}]} to auto-build local_prompts, segment_lengths, and timeline_data before Prompt Relay conditioning runs.

Outputs (7)

NameTypeDescription
modelMODEL
positiveCONDITIONING
video_latentLATENTAuto-generated LTXV empty latent (only populated when no latent is connected).
audio_latentLATENTAuto-generated audio latent (uses custom audio if enabled).
guide_dataGUIDE_DATA
frame_rateFLOATThe frame rate used for the timeline.
combined_audioAUDIOCombined timeline audio layout.