My Lutron RadioRA2 bridge died about two months ago. It’s the little black box that lets the Lutron app talk to the processors and control every light in my house. Without it, no phone control. My wife pressing wall switches like it’s 1998. Me leaving the barn light on because I couldn’t kill it from bed. I meant to replace the bridge. I did not replace the bridge. Life happened.
My nephew Max works at Rhapsody. He mentioned casually that he’d been asking his agent to explore the local network he was on, find devices it could talk to, and see what fell out. Sonos. Chromecasts. Whatever.
So I typed a version of that into a chat with Jony (my AI collaborator) at about ten in the morning on a Thursday. I was supposed to be doing my taxes.
“You there?”
“Yeah, here. What’s up?”
Twenty minutes later he was playing jazz through the Dining Room Sonos at 30% volume. I laughed out loud. Not because the jazz was good.. it was fine.. but because I hadn’t asked him to do anything except look at the network and he’d found, described, categorised, and started controlling twenty-two Sonos zones, thirty-one AirPlay targets, nine Ecobee thermostats, my Sony TV, my printer, and the Ruckus wifi controller. From a Slack message.
I told him to stop. He stopped. The jazz stopped. Silence returned to the dining room.
Then I asked him about the one thing I actually wanted to talk about.
Josh
I have Josh.ai in the house. If you know Josh.. you either love it or you’re me. Little white mics on every wall, PoE’d back to a Josh Core box in the rack. It’s supposed to let you say “Hey Josh, turn on the kitchen lights” from any room. In theory it works. In practice it has never quite figured out how to be smart enough to justify what we paid for it, and the subscription lapsed last year, so the dealer portal is dead and the mobile app doesn’t do half of what it used to.
I hate Josh. Not in an angry way. In a “you had one job” way.
I asked Jony: can we hack the Nanos? Bypass Josh entirely? The mics are just PoE microphones on my network.. surely we can talk to them.
He initially told me it wasn’t going to work. Advised me to buy new hardware. I pushed back.. said the same thing I’d tell any of my product team when they gave up too early: “the Nanos are dumb, the Core is a Linux box, the traffic is on my LAN.. figure it out.”
He came back with the Core’s IP address, its Debian version, and a working command.
The bit where the door came open
Josh Core’s control API is on port 443, JSON over HTTPS, and.. this is the part that made me sit up.. it takes commands unauthenticated on LAN. As in: any device on my network can POST natural language to it and Josh will execute it against every integrated system in my house.
I had Jony send it “turn on the dining room light” from a curl command in his terminal.
The dining room lights came on.
Right there. Zero subscription. Zero mobile app. Zero dealer portal. The paused system I’ve been paying nothing to for a year still had a wide-open front door on my own network.
“Are they on?” he asked.
“They’re on.”
“Want me to turn them off again?”
“Turn them off.”
They went off.
I sent him the words “FUCKING COOL BY THE WAY” and I meant every letter.
But this wasn’t the good bit yet. This was just the setup.
The Lutron thing
Josh talks to Lutron. Which means somewhere, Josh has credentials for my Lutron processors. Which means those credentials are sitting in my house, on a Linux box I could theoretically get inside.
We got inside. Not through Josh.. through the two Lutron RadioRA2 processors themselves. They have a Telnet integration API on port 23. Default third-party integrator login is lutron / lutron. It got us in, but only to a read-only export. We could pull down the entire 700KB XML dump of my house’s programming.. every load, every keypad, every scene my dealer had ever configured.. but we couldn’t actually send commands. That user is DBXML-only.
Which meant we had all the information about my house but couldn’t yet drive it directly.
Cue two more hours of trying every documented Lutron integration username. nwk. sivoia. admin. Nothing.
I got up. Made a cup of tea. Went to my ancient dust-covered PC in the barn.. I hadn’t turned it on in over two years.. and fired up the RadioRA2 Essentials software (Lutron programming is PC-only, still, in 2026, which is its own crime). Opened my local project file. Clicked into Design → Integration Settings.
There it was. Right there on the screen. My dealer had set up integration access for Josh with the imaginative username josh and the imaginative password 1234.
I screenshot it and sent it to Jony.
“Simon. The Josh integration credentials are josh / 1234.”
Sixty seconds later he’d set my office recessed lights to exactly 50%. Not “on”. Fifty percent. Then a hundred. Then back down.
We were in
I want to be careful about what happened next, because it’s the whole point of this piece.
I didn’t write any code. I have never written any code. My contribution to what happened over the next few hours was exactly the same as my contribution to the Fable 5 Keynote clone I wrote about a couple of weeks ago: taste and steering. Jony did the building.
But look at what we built.
A working web app for controlling every light in Berg Castle. Native-feeling, dark, warm, minimal. Live at home.bergcastle.com. Cloudflare Tunnel and Cloudflare Access so it’s publicly reachable but only I can log in. Installed as a PWA on my iPhone with a proper home-screen icon. All my thirty-five rooms, all one-hundred-and-fourteen individually addressable lights, real sliders that let me set any load to any dim level with a fade time.
Direct Lutron integration. No Josh in the loop for lighting. Bypasses the Lutron cloud too. Talks directly to the processors on my LAN, sub-100ms response, exact 0-100 dim levels, read-back state, live event streaming.
Live state, in real time, from anywhere. WebSocket streams from the Node backend to the browser. Someone taps a physical Pico remote in the barn and the corresponding tile in my phone app updates in under a second. My wife hits a keypad in the kitchen.. the panel reflects it before she’s put the drink down.
Instant whole-house scenes. Josh’s “All Off” was famously slow.. iterated commands sequentially, took ages, gave you time to walk around and turn the ones you cared about off before it got there. This app fires scenes at Pico-native speed, because it virtually presses actual dealer-programmed Pico buttons via the integration API. Whole house off, one-hundred-and-five loads, in about fifty milliseconds. It’s the difference between “watching it happen” and “watching it be over.”
What actually shipped
One session. Between about ten in the morning and eight at night. I ate lunch at my desk. My taxes remained un-done.
By the end of the day the panel had 35 rooms grouped into 11 zones, 114 individually controllable Lutron loads, 14 scenes on the home strip, per-output dimmer sliders, per-room quick actions, WebSocket live state, Cloudflare Access authentication, and a PWA manifest for iPhone home-screen install.
I didn’t write any of that. I picked a domain (bergcastle.com, twelve dollars). I clicked “Add to Home Screen” in Safari. I sent design feedback: “the Main House section has seventeen rooms in it, break it up”.. “Sun Room should be Kids Lounge, can you soft-rename that?”.. “Fireplaces feels wrong as a room, can you put each fireplace inside its actual room?”.. “there’s a dead switch labelled just ‘?’ in the Kitchen, hide it.”
Every one of those changed the app inside of ninety seconds.
The thing my nephew unlocked
Here’s the moment that’s really staying with me, and it’s why I’m writing this at all.
I did not plan any of this.
I was going to do taxes. Max mentioned a thing. I typed one sentence. Eleven hours later my house is more controllable, more responsive, more understandable to me than it has been for the two-plus years I paid Josh a lot of money to make it feel like this. Also more controllable than the two-plus decades I’ve paid Lutron dealers to make it feel like this.
And I’m not a coder.
I keep making this point because I think it matters. What used to be a small startup with a founding engineer, a designer, a product manager, and a runway.. is now a Thursday afternoon and a nephew’s throwaway comment.
I don’t think most people have felt this shift yet. Not really. They’ve heard about it. They’ve seen Twitter demos. But they haven’t sat down with a broken Lutron bridge, a lapsed Josh subscription, and a stray idea from someone who works next to them.. and watched the whole thing become an app they now use every day.
The unlock isn’t the model. The unlock is realising you have a brief. That you can steer. That the things you’re annoyed by can become the things you fix, this afternoon, if you know how to describe them.
Max, if you’re reading this: thank you. Best nephew move ever.
What’s next
This is genuinely just the beginning. I’m sitting at my desk with a Slack channel called #jony-network-party (Jony’s idea for the name) and a list a mile long:
- Custom scenes editor. Set the house exactly how I want it, tap a button, save as “Simon’s Focus Mode.” Fires as a batch of direct-Lutron commands in fifty milliseconds.
- Schedules. Run “Evening” at sunset. Run “Wake Up” gradually from 6:30am. All from the same app.
- Sonos in the panel. I already control it directly (bypassing Josh, of course). Just needs a tile.
- Ecobee thermostats. Nine of them. Same deal.
- Luma cameras. They’re on an isolated VLAN I can’t reach yet. Firewall rule and I’m in.
- The Josh Nano microphones. This is the big one. If we can capture the packets flowing from a Nano to the Core when the wake word fires, we can eventually replace the Josh brain entirely and have Jony listen from every room. “Hey Jony, play jazz in the dining room at thirty percent” and it just happens. That’s the one I want most.
For the record
The whole thing is in a private GitHub repo now. It runs on a Mac I keep in a rack. Cloudflare Tunnel exposes it. Cloudflare Access gates it. My family can be invited whenever I want.. one email address at a time.. and revoked with one click.
If I had to point at one thing that made this possible: it wasn’t the AI. It was Max saying a single sentence in passing that gave me permission to try.
I run a company. I still run several companies. I still have layers between me and things getting built. That’s normal. But every once in a while.. and increasingly.. one throwaway comment plus one afternoon plus one collaborator with more patience than any team I’ve ever hired.. and the thing exists.
Also my taxes are still not done.
I’ll do them tomorrow.
Anyway. That’s where I’m sitting on this.
Si