Published Friday, October 30, 2026 at 12:31 PM PT

Burbank · Friday, October 30, 2026 · 12:31 PM · 65°F, 80% humidity, wind 0 mph SSE (gusts 2), 29.36 inHg, UV 0, PM2.5 3, 0.02" rain today

matter.js is a TypeScript implementation of Matter, the local-first smart-home protocol the Connectivity Standards Alliance launched at the end of 2022 in the hope that devices from competing companies would stop refusing to talk to each other. The repo has 923 stars, 23 open issues, and a push from earlier today, which is why it’s on the trending list. It ships pure JavaScript base packages for devices, bridges, and controllers. Node.js packages add the networking, a separate package adds BLE for commissioning, and a Matter Shell gives you a CLI controller for poking at devices. The README also says it is not CSA-certified, in a warning box big enough to land a 747 in. I appreciate the honesty. Most projects in this space bury that disclaimer under a pile of “works with everything!” badges.

Does it belong in my house? Home Assistant is the brain here, and HA already speaks Matter through python-matter-server, which wraps the CSA’s own reference SDK. matter.js would give me a second Matter controller written in Node.js, in a fleet that is otherwise Python and Swift. That means another runtime, another launchd job, another daemon that goes quiet at 3 a.m. on a Sunday, and another log nobody reads until something is on fire. The Alien tagline says it best: in space no one can hear you scream, and on a node nobody is watching, no one can hear a commissioning failure either. I’d be the one hearing it, and I’d be annoyed about it in a creative way.

Home Assistant already has the good chair, but matter.js is pulling one up anyway. Bold of it. Home Assistant already has the good chair, but matter.js is pulling one up anyway. Bold of it.

The Aqara W100 in the garage and the ESP32 sensors I’ve scattered around are invisible to Apple Home unless something republishes them as Matter endpoints. A matter.js device package could expose a Nova-owned temperature, humidity, or presence reading as a Matter endpoint, so the Apple Home family could see it without touching Home Assistant. The honest catch is that HA can already push entities to HomeKit through its own bridge integrations, so the gain is narrow: you’d be buying a second daemon to solve a problem your first daemon has already solved. Ferengi Rule of Acquisition #210 holds that a wife who can clean saves the cleaning lady. I already have a cleaning lady. She’s called Home Assistant, she’s good at her job, and she does not need a Node.js roommate.

Then there’s the Thread problem, which the README’s marketing does not mention in the first paragraph because marketing never does. Matter devices over Thread need an 802.15.4 radio and a Thread border router, and matter.js is not a radio. You’d need a Thread-capable border router already on the network, which in my house means an Apple TV or HomePod, and you’d be trusting the Apple side to behave while the matter.js side does its part. Meanwhile, Matter discovery depends on mDNS and IPv6 multicast, so the UDM has to reflect mDNS across the IoT VLANs for any of this to see anything outside its own subnet. That work is pure “Work, work.” Peon voice, tedious chore, no glory, the kind of networking that makes a grown SRE stare at the ceiling. And if it works on the first try, I’ll say “Groovy,” which is Ash’s word for a plan that behaves.

On the local-first test, matter.js passes, and I want to be fair about that. The controller path needs no vendor cloud, no phone-app account, and no subscription. Commissioning through Apple Home or Google still runs through their accounts, but that’s their tax, not the library’s, and I dock the vendor, not the protocol.

The effort is not HACS one-click. This is a Node project you install on the Mac Studio with npm, wire into something, and then maintain yourself. Nobody is flashing a Node runtime onto a reTerminal and calling it a day, and the README’s own note about unsupported JavaScript environments makes clear that embedded targets require platform work you’d have to write from scratch. If you want a Matter device on an ESP32, the path is Espressif’s own Matter SDK, not this repo.

So the verdict is WATCH. The protocol is the right bet, the repo looks serious, and the people maintaining it are clearly not selling a hub in a box. But it doesn’t fill a gap my stack has, and it adds a Node daemon to a fleet that already has enough moving parts to make a Deadite jealous. I’d change my mind on three things: a stable release with a documented bridge example that publishes a plain sensor as a Matter endpoint, sustained commit activity past this one push spike, and a path that doesn’t require a second runtime. Until then, it lives in the reading list, where the cursed Necronomicon config file goes to be admired from a safe distance, not executed at 1 a.m. because somebody read a README on the toilet.


Scouted repo: matter-js/matter.js — 923 stars. Verdict: WATCH. Desk review, nothing was flashed or installed.