Ilan LenznerAI developer · design engineer עברית
Side project · one night

A spare TV box that talks back

We replaced the living-room streamer and the old Xiaomi box ended up in my room. One night later it was a wall dashboard, a home AI with a sense of humor, and a remote that lives in my phone.

Home screen: internet, devices, robot vacuum, DNS Weather screen The AI answering on the TV News and mail screen Calendar screen News photo with its headline
The phone app: talking to the home AI
The box's original remote

See it work

One take, waits cut out.

Filmed on my Mac in demo mode: the mail, calendar and news on the TV are demo data. Sound on for the voice.

What it became

Three things, one box that nobody needed anymore.

A wall dashboard

Weather, mail, calendar, news and the state of the house, rotating on the TV. Five screens drawn for a 960 px browser on a box with 2 GB of RAM.

A home AI

Ask from the phone, the TV answers out loud. It sees what the dashboard sees, remembers earlier conversations, jokes a little, and can put something on YouTube.

One app for all of it

The AI, a full remote and every app on the box, installed from the phone's home screen. It even knows what is playing right now.

On the TV

Five channels and a voice.

The pages rotate on their own. The remote's arrows switch them, OK holds one, arrow down opens the AI.

In the phone

The remote moved to the phone.

A home-screen app with three tabs. When the TV is busy with YouTube or Netflix, the AI answers from the phone instead of talking over the show.

AI tab
TalkTap, speak, the TV answers.
Remote tab
RemoteEvery key, hold to repeat.
Apps tab
AppsThe real icons, pulled from the box.

How it works

The box only draws. The Mac does the thinking.

A small server on my Mac collects everything, talks to Claude, makes the voice and drives the box over adb. The phone reaches it privately through Tailscale.

Tailscale httpstextvoice Phone app talk · remote · apps Mac · home server dashboard data · memory AI tools · loudness envelope adb over wifi Claude Sonnet 5.5 persona · tool use TV · Mi Box S kiosk app · YouTube · apps

What fought back

Four problems I did not see coming.

01

The remote's microphone belongs to Google.

The plan was to talk into the remote. The voice key always opens Google Assistant, and the remote only streams sound while that key is held, so an app of its own hears silence. I proved it with a test build before giving up on it.

What I did

Speech moved to the phone. Chrome only allows the microphone on https, so the server sits behind a private Tailscale https address.

02

A 2 GB box can't listen and draw at once.

The first voice had dropouts, like bad reception. The box was analysing the audio live and painting waves on a canvas while it played, with 120 MB of free memory.

What I did

The Mac measures the loudness of each answer ahead of time. The box downloads the clip whole and only moves a CSS transform. The dropouts went away.

03

My AI twin is for clients. This one is for me.

It started on my public voice twin, which speaks as me to visitors. At home that felt wrong: it pitched itself and called the room the living room.

What I did

A separate home personality on Claude: honest, a bit funny, reads my calendar and mail. The public twin was not touched.

04

Don't talk over yourself.

"Put on some lo-fi" opens YouTube, which pushes the AI off the screen in the middle of its own sentence.

What I did

Actions that take the screen wait until the voice ends. If the TV is already busy with a show, the answer plays on the phone.

"Three hours of quiet piano, coming up. If it puts you to sleep before the ten o'clock review, that's on you."

The home AI, after "put on something calm for work" (demo conversation)

Under the hood

Small parts, mostly boring on purpose.

Stack

Python stdlib serverAndroid TV 12 · Mi Box Sadb over wifi 17 KB WebView kiosk app, built without GradleClaude Sonnet 5.5 + tool use Claude Haiku for memory notesAzure neural voiceyt-dlp Tailscale servePWAOpen-MeteoGoogle Calendar + Gmail, read only Flux on my own GPU, for the icon

Privacy

  • The TV reaches the Mac over the home network through an unguessable path. Everything else answers 404.
  • The phone app is only reachable inside my tailnet.
  • The AI can drive this one TV. It can't buy, sign in, or change settings.
  • Every screenshot on this page runs on demo data: no real mail, calendar or names.