Cloud video APIs meter every second and keep prompts on their boxes. Want long video generation you can chain, fine-tune, and run offline? Deploy LTX-2.5 locally – open weights, native multishot, synced audio, distilled 8-step path.
This guide installs the August 2026 LTX-2.5 stack through official Lightricks/LTX-2 Python pipelines. The older LTX-Video repo now points here as the main repo.
System requirements before you download anything
Official floor for a normal local run (as of the LTX open-source system-requirements doc):
| Spec | Minimum | Recommended |
|---|---|---|
| GPU | NVIDIA, 32GB+ VRAM | A100 80GB or H100 |
| System RAM | 32GB | 64GB+ |
| Disk | 100GB free | 200GB+ SSD |
| CUDA | 12.7+ | 12.7+ |
| Python | 3.12+ | 3.12+ |
Under 32GB VRAM? You can still poke at FP8 cast, CPU/disk offload, distilled weights, smaller resolutions – unsupported territory. Expect OOM fights. AMD/Intel aren’t on the official path. LTX Desktop drops the bar toward ~16GB VRAM with app-side opts; Python docs stay at 32GB+.
Download source and install LTX-2.5 (Python pipeline)
Tools: git, uv, Hugging Face account, Read token. Weights are gated. Open Lightricks/LTX-2.5, accept the license, then auth. Fine-grained tokens often omit gated-repo scope – that’s the boring reason half of 401s happen.
git clone https://github.com/Lightricks/LTX-2.git
cd LTX-2
# Linux+CUDA: fastest VAE backend; Windows/macOS skip natten automatically
uv sync --extra natten
source .venv/bin/activate # Windows: .venvScriptsactivate
hf auth login
hf download Lightricks/LTX-2.5
diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors
text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors
vae/ltx-2.5-video-vae-bf16.safetensors
vae/ltx-2.5-audio-vae-bf16.safetensors
model_patches/ltx-2.5-duration-head-bf16.safetensors
latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors
--local-dir models/ltx-2.5
~66 GiB for that distilled split pack. ltx-pipelines wants the bf16 splits. *-comfy-int8-convrot.safetensors files are ComfyUI-only – they won’t load here.
Pro tip: export
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:Truebefore the first generate. Cuts fragmentation when DiT and VAEs thrash VRAM on long clips.
License (HF card, as of Aug 2026): free commercial use under the LTX-2.x Community License for orgs under $10M ARR. Bigger shops need a paid deal.
First-time config for long video generation
Minimum viable generate – distilled 8-step, duration head from the prompt, spatial upscale path wired:
uv run python -m ltx_pipelines.distilled
--transformer-path models/ltx-2.5/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors
--text-encoder-path models/ltx-2.5/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors
--video-vae-path models/ltx-2.5/vae/ltx-2.5-video-vae-bf16.safetensors
--audio-vae-path models/ltx-2.5/vae/ltx-2.5-audio-vae-bf16.safetensors
--duration-head-path models/ltx-2.5/model_patches/ltx-2.5-duration-head-bf16.safetensors
--spatial-upsampler-path models/ltx-2.5/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors
--prompt "Wide establishing shot of a rainy neon alley at night, cut to medium shot of a courier on a scooter weaving through traffic, cut to close-up as they stop under a flickering sign and speak quietly: 'Three minutes late.' Consistent character, wet asphalt reflections, synchronized city ambience and dialogue."
--seed 42
--output-path output_long.mp4
Fixed length: --num-frames 121 (~5s at 24fps). Constraint that bites people: num_frames % 8 == 1; width/height divisible by 32 – otherwise padding/crop weirdness or failed runs. Tight VRAM add-on:
--quantization fp8-cast --offload cpu
Multishot is the real enable for “long” inside one clip: write chronological cuts in the prompt and the model holds character, light, and voice across them. Multi-minute? Chain. Finish clip A, continue from the last frame (API /v1/extend or last-frame / V2V) with the next prompt beat. Same studio habit that gets you toward ~60s without one giant allocation. API/docs side note: ltx-2-5-fast tops out around 20s at 720p/1080p (shorter at 4K).
Ever notice how “longer video” stops being one mega-forward-pass and becomes continuity glue between windows? Once the single-shot ceiling stops mattering, that’s the job.
Verify the install works
uv run python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'cpu')"- Distilled command again – short prompt,
--num-frames 97. - Open
output_long.mp4. Picture + audio tracks both present.
CUDA false? Fix drivers first. No separate --version flag. A clean distilled write is the health check.
Common install errors and fixes
- 401/403 on
hf download– License not accepted on the model page, or token lacks gated access. Read token with gated-repo scope; accept first, then re-login. torch.OutOfMemoryError: Allocation on device– Lower res, distilled +--quantization fp8-cast --offload cpu, fewer frames. Gemma 4 12B alone is heavy; free VRAM before text encode.- Windows process dies with no Python traceback during VAE decode – Seen on ~32GB cards (including reports around RTX 5090-class boxes) when DiT weights stay resident while the diffusion video VAE decoder constructs. Native access violation, not a polite Python OOM. Offload/unload the transformer before decode; don’t keep multiple large graphs warm.
- Wrong checkpoint family – Comfy int8-convrot into
ltx_pipelines→ load failure. bf16 split paths only on this route. - Pinned-memory / paging errors on Desktop streaming (16GB class) – Community noise on LTX Desktop. Latest app build + pagefile/disk headroom for staging buffers.
Funny how often “I have 32GB, why did the process just vanish?” is really a residency problem, not a missing dependency. The OS killed you; Python never got a chance to print a stack.
Alternatives, upgrade, uninstall
ComfyUI if you want graphs: ComfyUI → Manager → “LTXVideo” → ComfyUI-LTXVideo → restart → Templates → LTX-2.5 T2V. Same gated weights under models/diffusion_models, text_encoders, vae. Quick-start notes live on docs.ltx.io.
LTX Desktop v1.2.6 (late August 2026 builds): installer from GitHub Releases. First launch pulls weights – plan ~160GB free disk. Optional free LTX API key for cloud text encoding. Local gen on supported NVIDIA Windows/Linux; macOS builds often sit in API mode.
Upgrade:cd LTX-2 && git pull && uv sync --extra natten, pull only changed HF components, keep old outputs. Don’t mix 2.3 LoRAs onto 2.5 families.
Uninstall: deactivate, rm -rf .venv, delete models/ltx-2.5, remove the clone. Desktop – uninstall app, then wipe %LOCALAPPDATA%LTXDesktop (Windows) or ~/Library/Application Support/LTXDesktop (macOS) if the weights need to go too.
Architecture rabbit hole? The earlier realtime latent-diffusion writeup still explains the compression bets – LTX-Video paper at arXiv:2501.00103.
FAQ
What’s the latest version I should install right now?
LTX-2.5 open weights (Aug 2026). Code: main on Lightricks/LTX-2. Desktop: v1.2.6. Skip deprecated LTX-2 API model IDs for new work.
Can I get multi-minute long video generation in one shot?
No – not as one unbounded forward pass on consumer iron. Native multishot covers multi-cut scenes inside a single clip (fast tier docs: up to ~20s by resolution). Then chain last-frame / extend-style hops. Five ~12s extensions with locked character prompts beat one fantasy 60s allocation every time.
Why did my install “work” but the video has no sound?
Audio VAE path missing. People assume video-only checkpoints “still mux something.” They don’t – synced audio is a separate branch (ltx-2.5-audio-vae-bf16.safetensors). On the distilled CLI above both VAEs are required for picture+sound MP4s. File plays but silent track? Re-run with the audio VAE flag and confirm the mux didn’t drop the stream.
Next: accept the HF license, run the hf download block, fire distilled with a three-shot prompt, inspect output_long.mp4 before you touch Comfy graphs.