LTX-2.3
The release that made LTX competitive, now without the local VRAM tax
- frameImages
- lora
- video
LTX-2.3 is the release that flipped the community's verdict on Lightricks. After months of "LTX is the worst of the models," 2.3 shipped a rebuilt VAE, fixed the frozen image-to-video problem, added native portrait mode, and cleaned up the audio - and the skeptical thread was soon titled "my God have they turned things around." Running that 22B model locally still wants serious VRAM. Running it through this node wants an API key.
It's the hosted LTX-2.3, served by Runware through the ComfyUI-Runware pack. Same payoff as every node here: no checkpoint, no Gemma text encoder to offload, no distilled-LoRA stack - just widgets, a queue, and a native VIDEO back.
How it works
The node sends model AIR lightricks:[email protected] with a videoInference task to Runware's REST API, then wraps the returned MP4 as VIDEO. The control surface is richer than base LTX-2, which tells you where the model's strengths moved:
audio- an audio-to-video conditioning input (URL or UUID). This is the headline feature: feed it a track and the video is generated and merged to match it, trimmed to the clip's duration, up to 30 seconds. Music-video and lipsync work lives here.lora- aRUNWARE_LORAsocket, so you can stack Lightricks LoRAs on the API model.positivePrompt,width/height(128–2048, snapped to 64),duration(1–20s, float) - required.steps- 15, notably lighter than LTX-2's 40.CFGScale4,fps25.settings.enhancePrompt- on by default; disable for exact control.negativePrompt,seed,frameImages,numberResults(1–4) round it out.
The output
One video socket, type VIDEO, into Preview Video or Save Video. On older ComfyUI it degrades to a file path string - updating ComfyUI restores the native type.
Installing it
Same pack install as every Runware node:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, set your key via ComfyUI Settings → Runware API key, RUNWARE_API_KEY, or runware auth login. Only the SDK, pillow, and soundfile install.
Where people get burned
The audio input is a URL or UUID, not a local file - upload first. And 2.3's portrait mode is a real strength (native 1080×1920 training, the first open-weights model to do it), so if your output is for Shorts or Reels, set the dimensions to portrait and stop fighting widescreen. Two minor habits: keep enhancePrompt off when your prompt is load-bearing, and remember that while 2.3 is far better than 2, it's still LTX - detail junkies may still find Wan's strict adherence wins on complex scenes. There's a Fast variant of 2.3 in this pack too, if speed beats step control.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024128–2048 | Width of the generated media in pixels. |
| height | INT | 1024128–2048 | Height of the generated media in pixels. |
| duration | FLOAT | 1.001–20 | Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps). |
| frameImagesopt | IMAGE | — | |
| loraopt | RUNWARE_LORA | — | |
| audioopt | STRING | Audio input (UUID or URL). Enables audio-to-video conditioning. The audio is merged with the generated video and trimmed to fit the video duration. Maximum duration 30 seconds. | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| seedopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 151–100 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| CFGScaleopt | FLOAT | 4.001–20 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| fpsopt | INT | 251–120 | Frames per second for video generation. Higher values create smoother motion but require more processing time. |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| settings.enhancePromptopt | BOOLEAN | true | Enable automatic prompt enhancement for cinematic results. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |