Instructions to use hgjc/ltx-ugc-bundle with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use hgjc/ltx-ugc-bundle with LTX.io:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download hgjc/ltx-ugc-bundle --local-dir models/ltx-ugc-bundle hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Fast pipeline (distilled model, no distilled LoRA needed) uv run python -m ltx_pipelines.distilled \ --distilled-checkpoint-path models/ltx-ugc-bundle/<distilled-checkpoint>.safetensors \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# HQ pipeline (two-stage, higher quality) uv run python -m ltx_pipelines.ti2vid_two_stages_hq \ --checkpoint-path models/ltx-ugc-bundle/<checkpoint>.safetensors \ --distilled-lora models/ltx-ugc-bundle/<distilled-lora>.safetensors 0.8 \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
| .rgthree-menu { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| position: fixed; | |
| z-index: 999999; | |
| pointer-events: none; | |
| opacity: 0; | |
| transition: opacity 0.08s ease-in-out; | |
| color: #dde; | |
| background-color: #111; | |
| font-size: 12px; | |
| box-shadow: 0 0 10px black ; | |
| > li { | |
| position: relative; | |
| padding: 4px 6px; | |
| z-index: 9999; | |
| white-space: nowrap; | |
| &[role="button"] { | |
| background-color: var(--comfy-menu-bg) ; | |
| color: var(--input-text); | |
| cursor: pointer; | |
| &:hover { | |
| filter: brightness(155%); | |
| } | |
| } | |
| } | |
| &[state^="measuring"] { | |
| display: block; | |
| opacity: 0; | |
| } | |
| &[state="open"] { | |
| display: block; | |
| opacity: 1; | |
| pointer-events: all; | |
| } | |
| } | |
| .rgthree-top-menu { | |
| box-sizing: border-box; | |
| white-space: nowrap; | |
| background: var(--content-bg); | |
| color: var(--content-fg); | |
| display: flex; | |
| flex-direction: column; | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| * { | |
| box-sizing: inherit; | |
| } | |
| > li:not(#fakeid) { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| position: relative; | |
| z-index: 2; | |
| > button { | |
| cursor: pointer; | |
| padding: 8px 12px 8px 8px; | |
| width: 100%; | |
| text-align: start; | |
| display: flex; | |
| flex-direction: row; | |
| align-items: center; | |
| justify-content: start; | |
| &:hover { | |
| background-color: var(--comfy-input-bg); | |
| } | |
| svg { | |
| height: 16px; | |
| width: auto; | |
| margin-inline-end: 0.6em; | |
| &.github-star { | |
| fill: rgb(227, 179, 65); | |
| } | |
| } | |
| } | |
| &.rgthree-message { | |
| // ComfyUI's code has strange behavior that that always puts the popupat to if its less than | |
| // 30px... we'll force our message to be at least 32px tall so it won't do that unless it's | |
| // actually on the bottom. | |
| min-height: 32px; | |
| > span { | |
| padding: 8px 12px; | |
| display: block; | |
| width: 100%; | |
| text-align: center; | |
| font-style: italic; | |
| font-size: 12px; | |
| } | |
| } | |
| } | |
| &.-modal::after { | |
| content: ''; | |
| display: block; | |
| position: fixed; | |
| z-index: 1; | |
| inset: 0; | |
| background: #0001; | |
| } | |
| } | |
| body.rgthree-modal-menu-open > *:not(.rgthree-menu):not(.rgthree-top-messages-container) { | |
| filter: blur(2px); | |
| } | |