If you've tried to train a video LoRA on LTX 2.3, you already know the problem. The official trainer is great — once you've rented a GPU, SSH'd in, installed CUDA bits, set up a Python env, downloaded ~30 GB of weights, written a config YAML, prepared a properly bucketed dataset, and figured out which scripts to run in which order. None of that is interesting. All of it is required.
Just LTX Trainer is a free, open-source desktop app that does that whole side of the job for you. You drop your videos in, click through five screens, and walk away. It comes back with sample previews you can scrub through and a .safetensors LoRA you can download.
It runs on macOS, Windows and Linux. Source and prebuilt binaries: github.com/zewsic/just-ltx-trainer.

What it actually does
The app is a thin GUI on top of a remote workflow. You bring:
a RunPod account with some credit on it,
a HuggingFace token (free),
20–80 short video clips you want the LoRA to learn.
It handles the rest:
Rents a GPU pod on RunPod from a list of recommended cards.
Installs everything LTX 2.3 needs on the pod over SSH — packages, Python env, base weights, text encoder. Five steps, runs in the background, ~20 min the first time.
Slices your source videos into training clips with ffmpeg.
Uploads the dataset.
Optionally captions every clip (Qwen Omni on the pod, Gemini Flash, or one shared caption for all).
Runs the LoRA training with sensible defaults picked for your GPU and clip count.
Renders validation samples every 250 steps so you can watch the LoRA learn.
Downloads the final checkpoint to your machine.
Every long task runs in tmux on the pod. You can close the app, reboot your laptop, come back tomorrow — the training is still going and the UI re-attaches to it like nothing happened.
The five screens, in order
1. Settings — paste your tokens
Open Settings once, paste your RunPod API key, your HuggingFace token, and optionally a Gemini key. Hit "Set up" on SSH and the app generates a key, registers it with RunPod, and uses it for every pod from now on. You won't see SSH again.
2. Servers — pick a GPU
Hit + New, pick a card. The "Recommended" tag points to GPUs that handle LTX 2.3 well (think H100 / H200). Skip the "For testing only" tier — they'll OOM on real training.

After you create it, the pod runs through its 5-step setup automatically. You can leave the screen.
3. Prepare — drop in your clips
Drag source videos into the window. Pick the cut length (3.7 s or 5 s) and one of two paths:
Fixed aspect ratio. Pick one of five (16:9, 4:3, 1:1, 3:4, 9:16) and the app resizes every clip to that bucket. Easiest if your sources are all similar.
No resize. Keep every clip at its native resolution and fps. The app groups them into separate buckets by
(W × H × frames)and feeds the trainer all of them at once. This is the right pick when your footage is already cleaned up and you don't want re-encoding. Up to 5 different aspect ratios in one dataset, no manual bucketing.
Optionally enable Overlap to double your sample count from the same footage, and Audio if your LoRA should learn the sound too (LTX 2.3 supports it natively).

Click Build. ffmpeg does its thing, the dataset zips itself, a green card appears.
4. Upload — push to the pod, then caption
One click to upload. Live progress bar.
If you didn't write per-clip prompts yourself, this is where you fix that. Pick a captioner:
Qwen Omni — runs on the pod. Free, slower, doesn't refuse NSFW content.
Gemini Flash — Google API. Faster, but won't touch NSFW.
Single — type one prompt, hit Apply, every clip gets that same caption. Perfect for style or character LoRAs where every clip features the same subject.

Hit Test first to see what the model writes for one random clip, then Run to caption all of them.
5. Training — start it
The defaults are picked for your GPU and clip count, so for most people this screen is just: write a trigger word, write 2–4 validation prompts (and reference images if you're doing i2v), hit Start.
If you want to tweak:
LoRA rank — 16 / 32 / 64 / 128 / 256. Bigger = more capacity and more VRAM.
Mode —
t2v(text only),i2v(start from an image), orboth.Steps — 1000–5000.
VRAM optimizations — gradient checkpointing, 8-bit text encoder, expandable VRAM. Toggle them if you OOM.
There's also Export config / Import raw config: dump the exact YAML the app would send to the trainer, edit anything, and import it back to send your hand-tuned version on the next run. Handy if you want to override something the UI doesn't expose.

Click Start, then go make coffee. ~30 min for a small LoRA on an H100, a few hours for a heavier run.
While it's training you see live loss, step time, ETA, and a list of checkpoints as they land.
6. Validation viewer — watch it learn
Every 250 steps the trainer renders your validation prompts at the current checkpoint. The app lets you scrub through them right inside the window — video preview, reference image, and prompt side by side. Use it to spot the sweet checkpoint before the LoRA starts overfitting.
7. Download
From the same panel hit Download. The pod sends the .safetensors over runpodctl, and you either save it straight to your Downloads folder or copy a transfer code to grab it from another machine.
The features I'd point out
A few things that aren't obvious from the screen tour:
Train multiple LoRAs in parallel. Each project + pod pair runs independently. Rent two pods, kick off two trainings — both progress at the same time and you can flip between them in the app while they run. Great for sweeping rank or steps without waiting on a single run to finish.
Mixed-resolution training. With No resize on, you don't have to manually bucket anything. Drop in vertical TikToks and horizontal shorts and square IG posts in the same dataset — the trainer learns from all aspect ratios at once.
Close-anytime resumes. Setup, build, upload, captioning, training — every long task lives in
tmuxon the pod. The app is just a viewer. Reopening it tomorrow re-attaches and shows live state.Raw YAML override. If you have a known-good config from your own experiments, import it as-is. The UI is a convenience layer, not a wall.
Cost
You're paying RunPod hourly for the GPU. A typical run looks like:
One-time setup: ~20–25 min on the chosen GPU.
Training: 30 min to a few hours, depending on rank × steps × clips.
The app reminds you to stop the pod when you're done — RunPod keeps charging while it's idle.
Everything else (the app, captioning with Qwen, the dataset prep on your laptop) is free.
Install
Grab a build from Releases.
macOS — universal
.dmg. Right-click → Open on first launch (it's unsigned).Windows —
.msi. SmartScreen → "More info" → "Run anyway".Linux —
.AppImageor.deb.
Open the app, paste your tokens, rent a GPU, drop in your videos. That's the whole story.
If you train a LoRA you're proud of with it, drop a comment — I want to see what people use this for. Bugs and feature requests on GitHub Issues.