Nodes/ComfyUI_StarNodes/⭐ Star LTXV All-in-One (2-Pass)
ComfyUI Node

⭐ Star LTXV All-in-One (2-Pass)

The LTX 2.3 two-pass pipeline in one node — half-res draft, latent upscale, full-res refine

By Starnodes2024·Created 2 years ago·Updated 2 days ago· 106
⭐ Star LTXV All-in-One (2-Pass)
  • image
  • audio
  • model_override
  • preview
  • images
  • audio
  • frame_rate
mode▶️ image_to_video
positive_prompt
negative_promptconsole game, video game, cartoon, childish, ugly
base_model
clip_1
clip_2
vae
audio_vae
upscale_model
video_sizeHD
ratio1:1
ratio_from_imagetrue
custom_width1024
custom_height1024
frame_rate25
seconds10
seed0
sigma_preset
override_audiofalse
lora_1
lora_1_strength0.60
lora_2
lora_2_strength1.00
lora_3
lora_3_strength1.00
custom_sigmas_pass11.0, 0.995833, 0.991667, 0.9875, 0.983333, 0.979167, 0.975, 0.93125, 0.847917, 0.725, 0.522917, 0.28125, 0.0
sigmas_pass20.85, 0.725, 0.6, 0.4219, 0.0
cfg1.0
sampler_pass1euler_ancestral_cfg_pp
sampler_pass2euler_cfg_pp
weight_dtype

The workflow that most people use for LTX 2.3 - the one the community calls the Sulphur workflow - is a tall stack: load the transformer, load two text encoders, load two VAEs, load a latent upscaler, run pass one at half resolution, upscale the latent, run pass two at full resolution, decode. Star LTXV All-in-One (2-Pass) collapses that entire tower into a single node. It's the pack's flagship LTX node, and it's the reason a lot of people install StarNodes in the first place.

It's in ⭐StarNodes/Video, labeled for LTX 2.3 (the node's model dropdown expects the LTXV 2.3 A/V checkpoint family - sulphur2Base and friends).

How it works - the two-pass trick

LTX 2.3's quality comes from a two-stage render, and this node is a faithful port of it:

  1. Pass 1 at half resolution - a fast coarse pass that establishes motion and composition on a small latent (cheap).
  2. 2× latent upscale - a spatial upscaler model (ltx-2.3-spatial-upscaler-x2) doubles the latent between passes, not a pixel upscaler.
  3. Pass 2 at full resolution - a refinement pass over the upscaled latent that adds the detail the final output needs.

Both passes use their own sampler (sampler_pass1 defaults to euler_ancestral_cfg_pp, sampler_pass2 to euler_cfg_pp), share one seed, and one cfg (default 1.0 - correct for the distilled 2.3 checkpoints). The sigma schedules come from the original workflow's note node: sigma_preset offers the three baked schedules (8 / 12 / 16 steps) or custom, where you paste your own into custom_sigmas_pass1. The second pass uses its own sigmas_pass2 (default 0.85, 0.725, 0.6, 0.4219, 0.0).

Modes and inputs

Three modes on the mode dropdown:

  • text_to_video - prompt only.
  • image_to_video - connect an image as the start frame.
  • image_audio_to_video - connect image and an audio track, which is trimmed to the video length and preserved.

The node loads everything internally - base model, two text encoders (clip_1 for the main Gemma-3 encoder, clip_2 for the LTX text projection), video VAE, audio VAE, and the latent upscaler - and caches them so a big file is only re-loaded when the dropdown selection actually changes. There's a 3-slot LoRA stack (lora_1lora_3, the distilled LoRA convention of ~0.6 on slot one), and an optional model_override if you want to feed in an externally-patched model instead of the dropdown load.

video_size (HD ~1280px / FHD ~1920px / Custom) with ratio presets, and ratio_from_image (default on) snaps the aspect to your connected input image. seconds snap to the LTX-friendly 8n+1 frame pattern.

Outputs

images (the frame batch), audio (the generated soundtrack - this node can generate audio alongside video, which is LTX 2.3's party trick), and frame_rate as a float for downstream video nodes.

Installing it

StarNodes installs via ComfyUI Manager (search Starnodes, Install, restart) or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt

Search the canvas for star after restart.

The reality check

This is a genuinely impressive consolidation, but know what you're signing up for. LTX 2.3 is a 22B model - even distilled and quantized it's a heavy load, and the two text encoders plus two VAEs plus an upscaler make this node memory-hungry by construction. The author ships sensible defaults so it works, but on a 12GB card expect offloading and patience, not magic. And because so much is hidden inside one node, when it fails it can be hard to see why - the console is your friend. Check that your model files actually landed in models/diffusion_models, models/text_encoders, models/vae and models/latent_upscale_models, since the dropdowns populate from those exact folders. If a dropdown is empty, that's a file-folder problem, not a node problem.

Category⭐StarNodes/Video

Inputs (35)

NameTypeDefaultDescription
modeCOMBO▶️ image_to_videotext_to_video: prompt only. image_to_video: connect an image. image_audio_to_video: connect an image AND an audio file.
positive_promptSTRINGWhat you want to see. LTXV likes detailed, film-style descriptions with timestamps.
negative_promptSTRINGconsole game, video game, cartoon, childish, uglyWhat to avoid. Default is the negative prompt from the original workflow.
base_modelCOMBOLTXV 2.3 A/V checkpoint from models/diffusion_models (e.g. sulphur2Base). Reloaded only when the selection changes.
clip_1COMBOMain text encoder from models/text_encoders (e.g. gemma-3-12b ... int4).
clip_2COMBOLTXV text projection from models/text_encoders (e.g. ltx-2.3_text_projection).
vaeCOMBOVideo VAE from models/vae (e.g. LTX23_video_vae).
audio_vaeCOMBOAudio VAE from models/vae (e.g. LTX23_audio_vae).
upscale_modelCOMBOLatent upscaler from models/latent_upscale_models (e.g. ltx-2.3-spatial-upscaler-x2). Used between the passes.
video_sizeCOMBOHDHD ~1280px, FHD ~1920px (same tables as the Star LTX Video Settings node), Custom = custom_width/height below.
ratioCOMBO1:1Aspect ratio. Overridden by the input image's ratio when 'ratio_from_image' is enabled and an image is connected.
ratio_from_imageBOOLEANtruePick the closest preset ratio to the connected image. Falls back to 'ratio' when no image is connected.
custom_widthINT102432–8192Only used when video_size = Custom.
custom_heightINT102432–8192Only used when video_size = Custom.
frame_rateINT251–120Frames per second of the output video.
secondsINT101–120Video length in seconds. Frame count is snapped to 8n+1 (4s @ 25fps = 97 frames).
seedINT00–18446744073709550000Shared by both sampling passes.
sigma_presetCOMBOFirst-pass noise schedule - the three presets from the original workflow's note node. 12 = default, 8 = faster, 16 = finer. 'custom' uses custom_sigmas_pass1 below.
imageoptIMAGEStart frame / guide image (image_to_video modes).
audiooptAUDIOVoice / music track (image_audio_to_video mode). Trimmed to the video length and preserved as-is.
override_audiooptBOOLEANfalsetext_to_video / image_to_video only: when disabled (default), the connected 'audio' input is ignored and the model-generated audio is sent to the audio output. When enabled, the connected 'audio' input is passed straight to the audio output instead. Ignored in image_audio_to_video mode, where the connected audio is always passed through to the output.
lora_1optCOMBOOptional LoRA stack, applied in order 1 -> 3.
lora_1_strengthoptFLOAT0.60-100–100The distilled LoRA in the original workflow ran at 0.6.
lora_2optCOMBO1 options: None
lora_2_strengthoptFLOAT1.00-100–100
lora_3optCOMBO1 options: None
lora_3_strengthoptFLOAT1.00-100–100
custom_sigmas_pass1optSTRING1.0, 0.995833, 0.991667, 0.9875, 0.983333, 0.979167, 0.975, 0.93125, 0.847917, 0.725, 0.522917, 0.28125, 0.0Only used when sigma_preset = custom.
sigmas_pass2optSTRING0.85, 0.725, 0.6, 0.4219, 0.0Second-pass (refine) schedule. Default from the workflow.
cfgoptFLOAT1.00–100Both passes. 1.0 for distilled models, as in the workflow.
sampler_pass1optCOMBOeuler_ancestral_cfg_ppSampler for pass 1 (half resolution).
sampler_pass2optCOMBOeuler_cfg_ppSampler for pass 2 (full resolution refine).
weight_dtypeoptCOMBOOverride base-model dtype. 'default' = as stored.
model_overrideoptMODELOptional external model (e.g. patched with flash/sage attention). When connected, this is used instead of loading 'base_model' from the dropdown, and the LoRA stack below is applied to it directly.
previewoptSTAR_PREVIEWOptional live sampling preview from a '⭐ Star Preview' node - while this node is sampling, an animated preview of the video latent is shown on the Star Preview node (fixed: 512 px, quality 80, 8 fps).

Outputs (3)

NameTypeDescription
imagesIMAGE
audioAUDIO
frame_rateFLOAT