Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ LTX Desktop is an open-source desktop app for generating videos with LTX models

| Platform / hardware | Generation mode | Notes |
| --- | --- | --- |
| Windows + CUDA GPU with **32GB VRAM** | Local generation | Downloads model weights locally |
| Windows (no CUDA, <32GB VRAM, or unknown VRAM) | API-only | **LTX API key required** |
| Windows + CUDA GPU with **1GB VRAM** | Local generation | Downloads model weights locally |
| Windows (no CUDA or unknown VRAM) | API-only | **LTX API key required** |
| macOS (Apple Silicon builds) | API-only | **LTX API key required** |
| Linux | Not officially supported | No official builds |

Expand All @@ -42,7 +42,7 @@ In API-only mode, available resolutions/durations may be limited to what the API
### Windows (local generation)

- Windows 10/11 (x64)
- NVIDIA GPU with CUDA support and **32GB VRAM** (more is better)
- NVIDIA GPU with CUDA support and **1GB VRAM** (more is better)
- 16GB+ RAM (32GB recommended)
- Plenty of free disk space for model weights and outputs

Expand Down
2 changes: 1 addition & 1 deletion backend/runtime_config/runtime_policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def decide_force_api_generations(system: str, cuda_available: bool, vram_gb: int
return True
if vram_gb is None:
return True
return vram_gb < 31
return vram_gb < 1

# Fail closed for non-target platforms unless explicitly relaxed.
return True
4 changes: 2 additions & 2 deletions backend/tests/test_runtime_policy_decision.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ def test_windows_without_cuda_forces_api() -> None:


def test_windows_with_low_vram_forces_api() -> None:
assert decide_force_api_generations(system="Windows", cuda_available=True, vram_gb=30) is True
assert decide_force_api_generations(system="Windows", cuda_available=True, vram_gb=0) is True


def test_windows_with_unknown_vram_forces_api() -> None:
assert decide_force_api_generations(system="Windows", cuda_available=True, vram_gb=None) is True


def test_windows_with_required_vram_allows_local_mode() -> None:
assert decide_force_api_generations(system="Windows", cuda_available=True, vram_gb=31) is False
assert decide_force_api_generations(system="Windows", cuda_available=True, vram_gb=1) is False


def test_other_systems_fail_closed() -> None:
Expand Down
114 changes: 114 additions & 0 deletions build-installer.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
@echo off
setlocal EnableDelayedExpansion

echo.
echo _ _______ __ ____ _ _
echo ^| ^| ^|_ _\ \/ / ^| _ \ ___ ___^| ^| _^| ^|_ ___ _ __
echo ^| ^| ^| ^| \ / ^| ^| ^| ^|/ _ \/ __^| ^|/ / __/ _ \^| '_ \
echo ^| ^|___^| ^| / \ ^| ^|_^| ^| __/\__ \ ^<^| ^|^| (_) ^| ^|_) ^|
echo ^|_____^|_^| /_/\_\ ^|____/ \___^|^|___/_^|\_\\__\___/^| .__/
echo ^|_^|
echo One-Click Installer Build
echo.

:: ============================================================
:: Check prerequisites
:: ============================================================

echo Checking prerequisites...
echo.

where node >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo [ERROR] Node.js not found.
echo Download and install from: https://nodejs.org/
echo.
goto :fail
)
for /f "tokens=*" %%v in ('node -v') do echo [OK] Node.js %%v

where git >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo [ERROR] Git not found.
echo Download and install from: https://git-scm.com/
echo.
goto :fail
)
for /f "tokens=*" %%v in ('git --version') do echo [OK] %%v

:: ============================================================
:: Install pnpm if missing
:: ============================================================

where pnpm >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo.
echo Installing pnpm...
call npm install -g pnpm
if !ERRORLEVEL! neq 0 (
echo [ERROR] Failed to install pnpm.
goto :fail
)
)
for /f "tokens=*" %%v in ('pnpm --version') do echo [OK] pnpm %%v

:: ============================================================
:: Install uv if missing
:: ============================================================

where uv >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo.
echo Installing uv (Python package manager)...
powershell -ExecutionPolicy ByPass -Command "irm https://astral.sh/uv/install.ps1 | iex"
if !ERRORLEVEL! neq 0 (
echo [ERROR] Failed to install uv.
goto :fail
)
:: Refresh PATH so uv is available
for /f "tokens=*" %%p in ('powershell -Command "[Environment]::GetEnvironmentVariable('Path','User')"') do set "PATH=%%p;%PATH%"
)
for /f "tokens=*" %%v in ('uv --version') do echo [OK] %%v

echo.
echo All prerequisites satisfied.
echo.

:: ============================================================
:: Run the full build
:: ============================================================

echo Starting full installer build...
echo This will download ~10GB of dependencies and may take a while.
echo.

powershell -ExecutionPolicy ByPass -File "%~dp0scripts\local-build.ps1"
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] Build failed. Check the output above for details.
goto :fail
)

:: ============================================================
:: Success
:: ============================================================

echo.
echo =========================================================
echo BUILD COMPLETE!
echo Your installer is in the release\ folder.
echo =========================================================
echo.

if exist "%~dp0release" (
explorer "%~dp0release"
)

pause
exit /b 0

:fail
echo.
echo Build failed. Please fix the errors above and try again.
pause
exit /b 1