29 august 2026 · düsseldorf
watchbucko.online
The streaming app I built for one living room, on a real domain since 26 July. The first hole showed up that evening, and my fix for it opened the second one by morning.

I put the TV app I built for my living room on the public internet. Within hours, anyone who found it could have taken my account.
The app is called Bucko. I had been building it since April for my own TV, and on 26 July it got a real address at www.watchbucko.online. A real URL changes exactly one thing. Anyone can type it. Not my friends, anyone.
Becoming Bucko
It was going to be a hardware thing, running on a small chip.
That idea survived one day. On 8 April it became a web app.
The name took three tries. ipTV Local, then Bucko, then watchbucko.online. The dark rebrand landed on 12 June.
The day before that, 11 June, it reached the actual living room, installed on the Samsung. The same day the phone became a remote.
Bigger than the machine
On the Samsung the catalogue is bigger than the machine browsing it.
A catalogue that size arrives dirty. One film comes in from the provider two dozen times under two dozen names. Bucko now picks the name that appears most often across those copies. The old rule took the shortest one, which is how Harry Potter and the Order of the Phoenix turned up on my TV as "Harry Potter i Zakon Feniksa".
Going live
The domain was never the plan. What forced it was a browser rule. The provider sends every stream unencrypted, the app is served encrypted, and a browser will not play the one inside the other. The TV and desktop builds are exempt from that rule. The web app has to obey it, and the web app is the one I wanted to be able to hand to someone.
Every fix I could find was a proxy, something in the middle that re-serves the stream. The first one ran on Vercel, whose monthly allowance live TV eats in about 30 hours. The one that stuck runs on a Cloudflare Worker. That same morning I pointed the domain at the live app.
The hole
The first hole was there by launch evening. The app has a guest sign-in, for someone bringing their own account. The code behind it would set the app's access cookie for anyone who asked, and the value in that cookie was the access password itself. One request, no credentials, and you were holding the gate's own key.
That cookie unlocked more than the app. It also unlocked the part of the app that hands out my real provider account, the one the TV uses. Two steps. The app had been public for a few hours and its worst path was that short.
The evening fix split the session in two. Type the password and everything opens. Bring your own account and the app opens, and my credentials stay locked.
I went to bed thinking it was closed. It was. The same fix had opened the next one on the way past.
To keep the sign-in form working while my credentials stayed locked, I had the gate hand a guest session to anyone who so much as loaded the sign-in screen. That session opened two relays. The first gave out the address of my Cloudflare proxy and its token, so a stranger had an open pipe running on my account. The second fetched any URL you pointed it at and streamed the answer back through my Vercel account, wearing the app's domain.
A guest session costs a real account now. The rule I wrote down afterwards was to gate an endpoint by what it returns, not by what it's called.
What the weekend left behind is a front door that asks for your own account.
One connection
The provider account allows one connection at a time. Everything about Bucko follows from that. Whoever holds the slot keeps it. The TV usually wins because the TV is usually already playing.
One slot also means a dropped stream has to be recovered in place, so the player got the one quality I actually wanted from a TV. Stubbornness.
The domain still resolves
As of 29 August 2026 the repo had been quiet since 7 August. The domain is still there and strangers can still type it. What changed that weekend is what they get when they do, which is a gate asking for their own account while mine stays behind the password. It still plays every evening.