A Windows desktop in the house runs Frigate, the cat detector, Home Assistant, the two 24/7 YouTube streams and the script that cuts the Shorts; it can see the cameras and nothing on the internet can see it. The desktop, and how Frigate runs on it.
If helencam.com sent you to the live court, that was an old redirect your browser saved. You are on the making-of now.
Helen the Cat Live · the build log
Frigate on a Windows desktop watches seven Tapo cameras through an out-of-process OpenVINO detector running on the processor’s own graphics. ffmpeg pushes two live streams to YouTube with no OBS and no capture card. A three.js court on a one-processor server paints the live cameras onto its walls, and a Stripe payment closes a relay on a treat dispenser. Every config file, script and measured number is on this site, with the secrets replaced by placeholders.
The cat it was built for is Helen, a dilute tortoiseshell calico from the Woman’s Club of Winter Park. The live show is next door.
00 · The system
Two machines. A Windows 11 desktop with an i7-8700 and no graphics card runs Frigate in Docker inside WSL2, decodes ten enabled camera streams on the CPU and finds the cat with OpenVINO on the Intel UHD 630 built into the processor. Frigate’s container cannot see that iGPU, so a 170-line Python process beside it does the inference and answers Frigate over ZMQ. The same box encodes two 24/7 YouTube streams on Quick Sync and runs the Python that cuts and uploads the Shorts. A rented one-vCPU server runs both websites behind Caddy: the three.js court, the Stripe checkout, the print-on-demand shop, and the proxy that fetches one JPEG per camera over a private network. Nothing on the desktop faces the internet; the server never touches video.
| Part | What runs, and what we measured |
|---|---|
| Cameras | Eleven defined in Frigate on one LAN, RTSP over TCP; the ones on the cat are TP-Link Tapo (C120 / C210). Seven watch Helen, three watch the house, one is a spare that is switched off. Main stream 2560×1440 at 20 fps for recording; sub-stream 640×360 for detection at 2 fps. Which cameras work, and what the streams are. |
| NVR | Frigate 0.17 in Docker inside WSL2 (Ubuntu, systemd on, mirrored networking). go2rtc pulls each camera once and re-serves it locally to the detector, the recorder and the live streams. With everything running, the Linux side of the six-core CPU sat at 13.6 % when we captured its stats. The WSL2, Docker and boot files. |
| Detector | OpenVINO ssdlite_mobilenet_v2 on the Intel UHD 630, in a separate Python process using Frigate’s zmq detector type. About 12.4 ms per inference including the round trip; 3.29 million inferences at last count. The detector, line by line. |
| Recording | Three days continuous plus 21 days of anything with a cat in it; the house cameras keep 21 days continuous. Measured: 16.4 GiB per camera per day at 1440p, 107 GiB a day across nine recording cameras, on a 3.7 TB drive. The retention math. |
| Live streams | Six ffmpeg processes: four stream-copy tiles, one 2×2 mosaic (h264_qsv, 1080p, 10 fps, 3.5 Mbit/s) and one Face cam (d3d11va decode, 15 fps, 2.5 Mbit/s). Both encoders together under 4 % of the CPU. A watchdog restarts a stream whose RTMP socket goes dark. The scripts. |
| Shorts | A task every 15 minutes: Frigate events become visits, visits become a shot list, the shot list becomes a 1080×1920 cut with a caption, and the YouTube Data API uploads it. One per run, 25-minute cooldown, four publish windows a day, and a rule that refuses a cut that runs backwards. The pipeline. |
| The court | three.js 0.170 on Vite 6, no framework. Four live JPEG textures refreshed round-robin, meshopt-compressed GLBs, adaptive resolution and an output dither. The build went from 92 MB to 11 MB; the critical three.js chunk is 648 kB (168 kB gzipped). The court in code. |
| Treat | Stripe PaymentIntent → signed webhook → Home Assistant webhook → a 5-volt dry-contact WiFi relay soldered across the dispenser’s remote. $2, a cap of 120 a day, an 8-second cooldown, one dispense per payment. The whole path in plain Node. |
| Shop | Sixteen print-on-demand products in a three.js room, each object wearing the real print file as a decal. A hand-kept catalog bound to Printify variant ids, 49 variants, and the same Stripe webhook turning a paid intent into a print order. The 3D shop and print-on-demand. |
| Web tier | One vCPU, 3.8 GB, Ubuntu. Caddy in front, pm2 for the Node API, releases as dated folders behind a symlink so a rollback is one mv. Caddy, pm2 and symlink releases. |
Frigate: the hub · the full config.yml · why no Coral. Streaming: two streams that never stop. Web: the server · the camera proxy. The 3D site: what it is made of · the byte ledger. The models: what AI did here, and did not · which tool for which job · 3D and image generation.
01 · What runs where
A Windows desktop in the house runs Frigate, the cat detector, Home Assistant, the two 24/7 YouTube streams and the script that cuts the Shorts; it can see the cameras and nothing on the internet can see it. The desktop, and how Frigate runs on it.
A one-processor rented server runs the two websites, takes the treat payments, and fetches a still from each public camera through a locked-down proxy over a private network. The server, its config, and how a release goes live.
The desktop never faces the public; the server never touches video. What crosses is one JPEG per camera, over a private network, through a locked-down proxy. The proxy between them.
02 · The files
Everything above is written so a person who has never opened a terminal can follow it. The pages below are the other register: the real config files, scripts and code, with the secrets replaced by placeholders and the numbers we measured left in.
03 · The whole build
The sections above are the machinery. This is the method it serves, written so a person who has never opened a terminal can follow it: one sitting room, a cat who takes no direction, a website people can walk, and four Shorts a day that cut and post on their own once the rules are set.
Walk the live show. Then come back and build yours the same way, one step at a time.
The kit
We did not buy a studio truck. We bought store cameras, a PetSafe treat dispenser, a 5-volt dry WiFi switch, and a regular computer that stays on. No graphics card, no Coral: the Intel graphics built into the processor finds the cat. Frigate is free software. YouTube Studio is the same Studio everyone uses. The court is a website people walk. The amazing part is what those ordinary pieces do when each one has a job.
| Ordinary machine | Amazing thing it does |
|---|---|
| Five home-network cameras | A walkable 3D court, and five angles of the same visit. |
| Wide pictures, 2560×1440 at 20 frames a second | A tall 1080×1920 Short. The crop follows the cat so a phone still has a subject. |
| A regular computer that stays on. No graphics card. | The processor decodes the cameras; the Intel graphics inside it finds the cat. Same box cuts the Short. No graphics card. No cloud farm. How it runs on Windows. |
| Frigate on that computer | The room is watched while we sleep. A detection is a visit. We cut the visit, not a 24-hour tape. |
| A white PetSafe dispenser and its handheld remote | A treat that already drops when a thumb clicks. We did not wait for a “smart” bowl. |
| A 5-volt dry WiFi switch, not a 120-volt one | A payment on the shop presses that same remote. Two wires. One solder joint. An event in the sitting room. |
| YouTube Studio | Four doors a day: 05:00, 07:00, 17:00, 19:00 Eastern. The Shorts feed is where people find the court. |
| Part | Spec we actually use |
|---|---|
| Kind | A regular Windows PC that stays on. Not a studio rack. Not a rented GPU box. |
| Graphics card | None. The Intel graphics built into the processor does the finding, through OpenVINO, at about 12 milliseconds a look. The CPU does the decoding and the cut. Why we never bought a Coral. |
| Watcher | Frigate from frigate.video. Detection set to cat. Seven home-camera streams watched at two frames a second. What Frigate is. The whole config. |
| Cut | Same computer. Ordinary tools: Python and ffmpeg. Wide 2560×1440 at 20 fps in. Tall 1080×1920 Short out. The crop follows the cat. |
| Upload | YouTube Studio on that same machine. Four doors a day. Skip a still visit. |
| Website | The 3D court is a normal website. The computer at home watches. Visitors never see the watcher screen. |
| What you do not need | A gaming GPU. A Coral stick. A cloud render farm. A second “AI computer.” If the PC can stay on and see the cameras, it can do this. |
Cameras. · Which cameras work. · Frigate — no graphics card. · The 5-volt solder trick. · Proof on the live court and S1E01 · The Letter.
04 · The court
Pick one room the cat already uses. Dress it so a drink, a meal, a treat, a walk, and a face each have a home. When she does the ordinary thing, a camera already knows why it is there.
Aim Court as the wide after you re-think leftover names. Aim Face at the bowl so a viewer stays past the first half-second. The map is a job list, not a floor plan to copy inch for inch.
Water Cam Give this one the fountain and the night glow. If the drink is not readable, raise it or move the light, not the cat.
Food Cam Body and bowl in one frame. You want the walk-in, not a tight dish.
Treat Cam Closest, warmest, whiskers readable. Point it at the quilt before anyone presses the button.
Court Cam The whole room. Weak for whiskers, strong for a walk between stations. Tilt until a visitor can tell where they are.
Face Cam Cat-eye level at the kibble. Open here. This is the job that keeps a thumb from swiping.
Build a 3D court people can walk. Same five stations. A visitor should be able to stand at water, turn toward food, and understand the room the way you do from the wide. Four public chambers can refresh from the live site. Face Cam is not on that public strip — show a frame you chose, not a stream you cannot share.
05 · Shooting
You cannot ask a cat for a second take. Frigate finds a visit. You write a pattern to match: which camera, which station, what she is doing, how long that usually lasts. That is the script. It is not choreography.
Write patterns to match. Not blocking.
Day Harder. White brick blows out. Make the blue fountain work for a living. Do not invent a day look the room does not have.
Night The water glow becomes the look. Do not invent a night grade. The room already has one. Shoot it.
06 · The cut
Assemble one visit in the order it happened. Start a beat after she arrives so frame one already has a cat. End as soon as she leaves. Dissolve the last moments into frame one so the loop does not flash empty room.
A note that says “done” is not evidence. Look at the frames.
Drag: tight crop on the left, hybrid on the right. The source is wide. The viewer gets a slice. Hybrid spends resolution to keep the whole cat. Use the slider until you can see which ears survive.
Three ways to fill a phone Crop ships today. Hybrid keeps ears and set. Fit shows the whole room and loses her. Pick by looking, not by habit.
How far to pull back Too tight clips ears. Too wide and she becomes furniture. The useful band is narrow. Walk the ladder on one visit before you lock a default.
Time order, open, close, crop. Drag the compare on this page until the cat stays whole.
07 · The copy
The daily Short carries one decree. Season chapters keep that voice and spend it across four timed lines on a longer cut. Write for the bottom of a phone. Leave her face alone.
The court has received a letter. It is not good.
That is the title we aired. Two earlier premieres used the same footage and thinner copy. They stay private. The one people can watch is below.




S1E01 · The Letter is the aired example. Ten words. Four beats. Then leave the frame to her. · What the models did on this build, and did not. · Which tool wrote which line.
08 · The series
Season One is a written season. Each episode names the beat, the cameras it prefers, and a handful of decrees. You could let the next chapter go out on its own. Pause that on purpose. A chapter is chosen by looking at frames, then marked aired. The counter only goes up.
The Letter is episode one. The next one waits for frames, not a schedule.
09 · YouTube
Do not park type on every frame A reason line and a wordmark fighting the decree. Clear the top. The cat is the first half-second.
What you put at the end One ask. One domain. Then the loop returns her to frame one. Point the ask at the live court, not at this workshop.
How the four doors work. · The two 24/7 streams that never stop. · @helenthecatlive · S1E01 · The Letter
10 · The channel
Those four numbers were pulled from the channel, not guessed. We do not invent others. Average view percentage on a looping Short is not a clean read — it can exceed one hundred percent. What matters is whether someone swipes in the first second.
Change the avatar when the brand changes. Do not leave an old picture on every Short. Older thumbnails that burned a retired domain taught us that a stale picture is not a small mistake.
The public channel. If a number is not on that page, do not print it. · The checks that gate a deploy of the 3D site.
11 · Shop and treat
Put the shop on the live site, not on the workshop. We bought an ordinary treat dispenser, then a 5-volt dry WiFi switch — not a 120-volt one — and soldered it to the remote. Someone pays. Those two wires touch. The dispenser thinks a person pressed the button. Treat Cam is already pointed at the quilt. A person on a phone, a solder joint in a clicker, a cat who may or may not care.
Not a camera frame Made by ChatGPT's image model in July 2026, when it was asked for studio pictures of her. The live stills are in the strip under section 04.
Not a camera frame The same July batch of twenty generated pictures; one of the others became the Royal Portrait in the shop.
12 · The control room
The desk that runs a channel has tabs for cameras, the season, and what already aired. Money and mail stay off a public page. What you see here is the honesty rule: if a card cannot see its source, it stays empty.
Four doors. A card here would name which ones already aired — from what already went out, not from memory.
Paused on purpose. Episode one is The Letter. The next one waits for frames, not a score.
If this card cannot see its source it stays empty. It does not invent a green light.
13 · Lessons
Questions
What Frigate is doing. Why five jobs and seven cameras. How a Short gets cut. Why a treat on the live site becomes an event. The answers live on a page a search can quote.
Read the questions. · How we use Frigate. · Every live example, linked.
Crowd-shaped
The court, the cut, and this site get better when visitors say what felt empty, too tight, or worth another angle. Kind notes only. We read them. The good ones go on the wall.