← LVGenStudio

Build log · LVGenStudio

The celebration lasted about ten minutes

Product architecture, orchestrated with Claude Code

The last post ended on ten good minutes. Faces held, the memory number was real, the speed was defensible — the first stretch of this project where nothing was actively on fire.

The last clip LTX ever generated for this project. Run under the enforced 12 GB cap, the same night the celebration lasted ten minutes — before the licence ended the model's part in this entirely.

Then I read the licence, and it took the good part apart from underneath.

The question I should have asked first

It did not start as a licensing review. It started because I asked for longer videos.

The model would only give me three seconds at a time, and when I pushed for more, Claude told me the VACE port was standing in the way — the piece that was supposed to let a clip run past that length had never been built for this stack. So Claude went looking through existing VACE repos to see what was already out there.

That search is what actually found the problem. Not a review I had ordered — a search for a workaround that happened to turn up the LTX-2 Community Licence on the way.

Once I understood what restriction 20 actually said — the clause that bars building a competing commercial product on the licence at all, not a fee or a revenue cap, an outright bar — I took the rest of that day off completely. I want that in the log, because the tidy version of this story would skip it. For a few hours I genuinely thought the whole product concept was gone — the model that had just solved the blocking problem could not legally be in the thing I was building, and I did not have a fast answer for what came next.

I did not sleep that night. Somewhere around 2 or 3 the next morning, lying there still turning it over, the actual answer arrived, and it was smaller than the problem had felt. The model is a commodity. The product is a layer that sits on top of it. I can change the commodity. I had spent a week treating LTX like a foundation. It was a dependency.

So I went back in and asked for the review I should have asked for a week earlier — not a glance, a real one, because an earlier piece of research on the same subject had come back thin and I had accepted it. I chose those words on purpose:

"I don't want an unfinished research like last LTX research. Do it as a Professional and Seriously."

A week spent imagining the app closer to done than it was — I had nearly started on wireframes — was sitting inside that sentence, and I knew it while I was typing it.

The answer came back from primary sources, and it was not what I wanted.

Model Licence position
LTX-Video 0.9.6–0.9.8 Open weights, no non-compete, but a $10M revenue threshold
LTX-2.3 / 2.5 Community Licence, restriction 20 — non-compete
HunyuanVideo Excludes the EU, UK and South Korea
Wan 2.1 Apache 2.0

Restriction 20 is the one that mattered. The LTX-2 Community Licence does not let you build a competing product with it. The whole point of what I was building is that it competes with the tool I was paying ₹950 a month for.

So the model I had spent the week getting to run — the one that had just solved the blocking problem — could not be in the thing I was building. Not "with conditions." Not "until we hit a revenue threshold." At all.

Free to run and free to sell are different sentences. I had been reading the first one and hearing the second.

Back to the YouTube video

In the second post I wrote that my entire model selection process was a YouTube video where the presenter said LTX ran free on desktops.

That statement was true and it was useless to me. It does run free on a desktop. Anyone can download it, generate video, and pay nothing. What the video did not say — because why would it, that was not the video's subject — is that running it and selling something built on it are governed by completely different sentences in a document nobody reads on camera.

I did not get that wrong because I am careless about licences. I got it wrong because I never opened the question. I was so far outside my own field that I did not know which questions existed, and licensing was not on the list of things I thought I needed to check before investing a week.

Google was the one who put Wan 2.1 in front of me — the second model, after LTX, that I kept hearing described as fast and genuinely good. I asked Claude to check it for the same restriction before I let myself get attached to it again, and I searched for other free options myself in parallel rather than taking one recommendation on faith a second time.

It came with a catch: Wan 2.1 only generates video, no audio. I did not treat that as a real problem. Fast and unrestricted, with sound as a separate step later, beat slow and legally landmined — as long as a licence was not going to slap me again the moment I got attached to something.

The decision was immediate once the evidence was in. Wan 2.1, Apache 2.0, confirmed directly rather than from a summary. And a standing instruction I wrote for myself so I would not drift back:

"LTX is a history now."

The part that goes deeper than the model

While I was in there, I checked the training data too, since a model's licence is only half the question — what it was trained on can carry its own restrictions:

  • Panda-70M, OpenVid-1M, Koala-36M, VidGen-1M — contaminated or non-commercial for this purpose
  • Open-Sora-Plan's 40,258 CC0 videos — usable

And one finding I have kept, because it is the kind of thing that is easy to talk yourself out of: neither Pexels nor Pixabay's licence says anything about AI training, either way. It is tempting to read that silence as permission.

Silence is not permission. It is an unanswered question, and an unanswered question in a product you intend to sell is a liability sitting there quietly.

What I actually took from this

The instinct that saved me here was not technical. It was the same instinct that makes me read the terms on anything I am about to build a business on — I just applied it four days later than I should have.

Licensing is an architecture decision. It is not paperwork you handle before launch. It determines which model you build on, which means it determines the memory profile, the generation time, the quality ceiling and the entire shape of the product. Deciding it late means rebuilding, and I got off lightly at one week.

It is now the first question I ask about any component, before I check whether it is any good. Being excellent and unusable is worse than being adequate and free, because the excellent one costs you a week before it tells you.

Where this left the project

A new engine. A different family entirely, with different behaviour, different memory characteristics and different failure modes — none of which I had learnt yet.

The first thing it did was hand me a corrupted first frame on every single clip.

Next A magenta frame, a wrong assumption, and a speedup I do not trust yet

This is a running log of building LVGenStudio, a local video generation studio for Mac. Written as I go, including the parts that didn't work. Everything here is dated, and anything I later find out was wrong gets a retraction rather than a quiet edit.