Journal

The first version of Twiga could see your streams. So we deleted it.

The first version was self-hosted software that reshaped your streams on the server — which meant the server could see them. Four days later the transcoder was gone, and the rule was law: the server never sees what's inside your stream.

We’re writing down how Twiga got built, a piece at a time, from the only source that doesn’t flatter anyone — the version git log tells on you. This is where it started.

The first version was self-hosted: software you ran on your own machine that took your IPTV streams in, reshaped them on the server so any device could play them, and handed them on. It was a neat piece of plumbing, and we were proud of it for about two and a half days.

Then the question that wouldn’t go away — is this actually private? — ran into the one fact you cannot refactor around. If the server reshapes the stream, the server has seen the stream. And if the server has seen it, your privacy lives in a paragraph next to the product, not in it: a policy that’s a different document from the architecture, the thing you hide behind instead of the thing you can explain.

You can’t keep both the transcoder and the promise. So over four days we deleted the transcoder, the recorder, the entire self-hosted story — you can watch the server binary lose weight in the diff, 21.6 MB down to 18.0 — and rebuilt the whole thing around one rule the server would never again be allowed to break:

The server is a pure blind byte relay. It NEVER inspects, decodes, re-encodes, remuxes, probes, or modifies stream data in any way.

Today it reads six bytes of every packet — just enough to find where one ends and the next begins, the moral equivalent of an IP header. Everything else is opaque, on purpose. The architecture and the privacy policy finally became the same document. The catch: a complete television decode pipeline now had to run somewhere else — in a browser tab, which is a thing almost nobody asks a browser to do. That’s the next entry.

Next: we built the player five times →

— Twiga team