Casset is one sentence with a lot of code under it. The sentence: it is the place a piece of music keeps its identity and proves where it came from. The code: about three hundred thousand lines of TypeScript, seventy-seven database models, one app.
It did not start as that sentence. It started because I wanted an easier place to put my own music. The finished songs, but mostly the works in progress, the demos and the half-finished ideas, and somewhere to share them with the other people I make things with. That was the whole of it. Every grand word that follows grew out of that small, practical want, and out of using the plain version long enough to notice what it could not yet do.
I want to give the honest version, the part that flatters and the part that does not, because a summary that only flatters is not a summary. I keep a folder of internal docs where I argue with myself about this company. This is what they say when I am being straight.
What it actually is
There are two things in the box, and only one of them is the idea.
The first is a surface that works today. An artist gets a Profile World, a cinematic page that behaves more like a room than a bio. A song arrives as a short hook with atmosphere and a visual runtime around it. It is built like a media runtime with React holding it, not a React app pretending to play media. When it is working, a song stops being a file you press play on and becomes a place you stand inside. The internal note for this is blunt: nothing here is just content. A song is evidence about an artist.
This is the part I built first, and the part I keep wanting to make. It is also, embarrassingly, the part that matters least to the argument.
The second thing is the part nobody sees, and it is the actual company. Under the surface is a record: releases, versions, manifests, contributors, lineage, permissions, derivatives, the origins a generation descended from. The release is canonical, and everything else hangs off it. The provenance is append-only and hash-chained, so the record cannot be quietly rewritten after the fact. There are endpoints built for machines, not people, so an agent can ask a release what it is, what it came from, and whether it is allowed to touch it. Humans get the room. Agents get the structured answer. Those are two different loops, and the thing I have learned is not to let them collapse into one.
What it is not, since the negative space is half the definition: not a streaming app, not a music generator, not a smart link, not a pre-save tool. It owns identity, lineage, permission, and the release. It owns none of the generation and none of the tools, because that is the part about to be everywhere.
The honest part
Here is the sentence I least want to write. I built the beautiful part more than the defensible part. The provenance graph, the one genuinely hard to copy thing, is the piece I have built the least and tested the least. My own audit puts it plainly: I wrote down the moat and then coded around it. The knowledge layer I shipped first was a search index dressed as intelligence, the same retrieve-and-narrate trick everyone ships, and it never once touched the creator graph that is the entire reason to build any of this. The semantic graph has a schema and no contents. It is, today, an empty table with good intentions.
So the real work is not more surface. It is to make the deterministic thing real. Walk the graph first. Let a model narrate only after the structure has already answered. Keep the database as the source of truth instead of the model. The graphs stay separate on purpose. What derived from what is a discovery question. Whether a thing is allowed, and by whom, is a rights question, and a rights answer that a model hallucinated is not a feature, it is a liability. Those wires never get crossed.
And the hardest open problem, stated so I cannot pretend it is solved: a provenance graph is only worth anything if its edges can be trusted, and right now anyone could claim their track descended from anyone's. A record nobody can forge is the whole product. A record anyone can forge is decoration. I am closer to the second than the first, and the next real milestone is the distance between them.
The bet
Underneath all of it is one guess about what becomes scarce.
When making becomes cheap, and it is getting cheaper by the week, the made thing stops being the scarce thing. What stays scarce is whose it is and where it came from. An architecture that owned the part getting cheaper would be in trouble. This one owns the part getting more durable, on purpose: identity, lineage, permission, the release. The generation, the tools, the raw material, all of it can belong to anyone, because soon it will.
So picture a working musician a year from now. Generative tools make and remix at a volume no person can match, and every one of them has to answer the same dull questions before it can act. What is this. Who made it. What is it descended from. Am I allowed. One app, a single PWA, is a good shape to be the thing that answers, because it is one codebase, instant and current, and it can hand the same answer to a person looking at a page and to an agent hitting an endpoint. The workshops where the making happens can be anyone's. Casset is where the work lives. The runtimes where the work happens can be many.
That is the company, stated flat. Build the record. Make it beautiful enough that people want to be inside it. Then be the thing every agent has to ask before it touches the work. The three hundred thousand lines are mostly in service of a sentence I could have written on a napkin. The point was never the lines. It was standing on the right side of what stays scarce, and being honest, in public, about how far I still am from the part that matters.
And underneath the bet is the same small thing I started with. I wanted a good place to keep my music and show it to people whose ears I trust. Everything else is just the work of making that worth keeping.