LTX Desktop is an open-source desktop app for generating videos with LTX models — locally on supported Windows/Linux NVIDIA GPUs, with an API mode for unsupported hardware and macOS.
Status: Beta. Expect breaking changes. Frontend architecture is under active refactor; large UI PRs may be declined for now (see
CONTRIBUTING.md).



| Platform / hardware | Generation mode | Notes |
|---|---|---|
| Windows + CUDA GPU with ≥16GB VRAM | Local generation | Downloads model weights locally |
| Windows (no CUDA, <16GB VRAM, or unknown VRAM) | API-only | LTX API key required |
| Linux + CUDA GPU with ≥16GB VRAM | Local generation | Downloads model weights locally |
| Linux (no CUDA, <16GB VRAM, or unknown VRAM) | API-only | LTX API key required |
| macOS (Apple Silicon builds) | API-only | LTX API key required |
In API-only mode, available resolutions/durations may be limited to what the API supports.
LTX Desktop stores app data (settings, models, logs) in:
%LOCALAPPDATA%\LTXDesktop\~/Library/Application Support/LTXDesktop/$XDG_DATA_HOME/LTXDesktop/ (default: ~/.local/share/LTXDesktop/)Model weights are downloaded into the models/ subfolder (this can be large and may take time).
On first launch you may be prompted to review/accept model license terms (license text is fetched from Hugging Face; requires internet).
Text encoding: to generate videos you must configure text encoding:
The LTX API is used for:
An LTX API key is required in API-only mode, but optional on Windows/Linux local mode if you enable the Local Text Encoder.
Generate a FREE API key at the LTX Console. Text encoding is free; video generation API usage is paid. Read more.
When you use API-backed features, prompts and media inputs are sent to the API service. Your API key is stored locally in your app data folder — treat it like a secret.
Used for Z Image Turbo text-to-image generation in API mode. When enabled, image generation requests are sent to fal.ai.
Create an API key in the fal dashboard.
Used for AI prompt suggestions. When enabled, prompt context and frames may be sent to Google Gemini.
LTX Desktop is split into three main layers:
frontend/): TypeScript + React UI.http://localhost:8000.window.electronAPI).electron/): TypeScript main process + preload.contextIsolation: true, nodeIntegration: false).backend/): Python + FastAPI local server.graph TD
UI["Renderer (React + TS)"] -->|HTTP: localhost:8000| BE["Backend (FastAPI + Python)"]
UI -->|IPC via preload: window.electronAPI| EL["Electron main (TS)"]
EL --> OS["OS integration (files, dialogs, ffmpeg, process mgmt)"]
BE --> GPU["Local models + GPU (when supported)"]
BE --> EXT["External APIs (only for API-backed features)"]
EL --> DATA["App data folder (settings/models/logs)"]
BE --> DATA
Prereqs:
uv (Python package manager)Setup:
pnpm setup:dev
Run:
pnpm dev
Debug:
pnpm dev:debug
dev:debug starts Electron with inspector enabled and starts the Python backend with debugpy.
Typecheck:
pnpm typecheck
Backend tests:
pnpm backend:test
Building installers:
- See INSTALLER.md
LTX Desktop collects minimal, anonymous usage analytics (app version, platform, and a random installation ID) to help prioritize development. No personal information or generated content is collected. Analytics is enabled by default and can be disabled in Settings > General > Anonymous Analytics. See TELEMETRY.md for details.
INSTALLER.md — building installersTELEMETRY.md — telemetry and privacybackend/architecture.md — backend architectureSee CONTRIBUTING.md.
Apache-2.0 — see LICENSE.txt.
Third-party notices (including model licenses/terms): NOTICES.md.
Model weights are downloaded separately and may be governed by additional licenses/terms.
$ claude mcp add LTX-Desktop \
-- python -m otcore.mcp_server <graph>