Home Assistant quietly rewrote its Matter server from Python to TypeScript — here's what changed

Home Assistant quietly rewrote its Matter server from Python to TypeScript — here's what changed

Published Jul 24, 2026, 1:30 PM EDT Maker, meme-r, and unabashed geek, Joe has been writing about technology since starting his career in 2018 at KnowTechie. He's covered everything from Apple to apps and crowdfunding and loves getting to the bottom of complicated topics. In that time, he's also written for SlashGear and numerous corporate clients before finding his home at XDA in the spring of 2023. He was the kid who took apart every toy to see how it worked, even if it didn't exactly go back together afterward. That's given him a solid background for explaining how complex systems work together, and he promises he's gotten better at the putting things back together stage since then. I'll admit I didn't notice at first. My Matter devices kept working, my Home Assistant dashboard kept showing the right states, and nothing in my logs screamed for attention. But under the hood, Home Assistant has been swapping out one of its most critical components: the Matter Server that sits between your smart home and every Matter device on your network has been rewritten from scratch, moving from Python bindings over the official C++ CHIP SDK to matter.js, a pure TypeScript implementation of the entire Matter protocol. The python-matter-server is now archived; version 8.1.2 is its final release, and the replacement, matterjs-server, has been rolling out to beta users since January. If you run Matter through Home Assistant, or you're weighing it against Zigbee or another protocol, this rewrite changes more than you'd think. And the reasons behind it say a lot about where the whole Matter ecosystem is heading. The old Matter server was built on a foundation nobody wanted to maintain Compiling the C++ CHIP SDK was the tax everyone paid The original Open Home Foundation Matter Server wasn't really a Python project. It was a Python wrapper around the official Matter (formerly CHIP) SDK, a sprawling C++ codebase maintained by the Connectivity Standards Alliance. To make that work, the team maintained a separate chip-wheels project just to compile the SDK into Python packages for every supported platform. That repo is archived now too, and honestly, nobody seems sad about it. Native dependencies are a chore in any project, but they're especially painful for something that ships to Raspberry Pis, x86 boxes, and everything in between. Every SDK update meant rebuilding wheels, every platform quirk meant another build fix, and the actual protocol logic lived in a codebase the Home Assistant team didn't control. matter.js takes the opposite approach: the entire Matter protocol is implemented in TypeScript, with no native CHIP dependency at all. It uses code generation to build a complete, typed model of every Matter cluster straight from the specification, which means new device types and clusters land as generated code rather than hand-ported C++. It's also a genuine second implementation of the Matter standard, and the matter.js team argues that having two independent implementations validates the spec itself. Sure, "we rewrote it in TypeScript" is usually a punchline, but this is the rare case where it's the correct call. What actually changes when the new server takes over A drop-in replacement, with a few genuinely better behaviors The headline design goal is that you shouldn't notice. The new server speaks the exact same WebSocket API the Home Assistant integration already uses, supports Matter 1.4.2, and migrates your existing setup automatically: on first start it reads the old server's chip.json and fabric data files, converts them to its own storage format, then interviews your nodes and carries on. The migration only took a few minutes on my setup, and was as unremarkable as any other Home Assistant upgrade. There are real behavioral improvements hiding in the "drop-in" framing, too. The new server detects whether a device is on Thread or Wi-Fi/Ethernet and queues connections to Thread devices instead of flooding the mesh with simultaneous requests, which matters a lot once your Thread network grows past a handful of sensors. There's a community-driven custom clusters package for vendor-specific features that fall outside the core spec. And you can now change the log level at runtime from the dashboard instead of restarting the server, which is a small thing until you're debugging a flaky device at 11 PM. Then there's my favorite feature: a visualization of your Thread or Wi-Fi networks via the Matter Server web UI. A few sharp edges exist: the server now requires Node.js 22.13 or newer, and it generates a random fabric ID by default instead of the Python server's fixed default of 1, though migrated setups keep their existing fabric. The rollout was deliberately slow, and certification is why But the stable rollout is now happening The Matter Server is now on version 9.1.0, so everyone installing it now is getting the new TypeScript version, and not the old Python one. It's also worth saying plainly: this is an Open Home Foundation project, funded through Nabu Casa. Given how many smart home platforms treat local control as an afterthought, watching the open-source side out-engineer them on protocol plumbing is quietly satisfying. Before this, you had to enable a Beta flag in the configuration, reboot your HA instance, and cross your fingers it all came back up. Now the transitionary period is over, and everyone updating will get the new version of the server. And really, that's the one you want anyway. It's been beta-tested since the end of January, and six months later it's time to roll out to every instance. And based on my update process, you probably won't notice the change at all. The rewrite nobody notices is the best kind The measure of success for matterjs-server is that your lights turn on exactly like they did last month. But the long game is bigger than parity: a fully typed, code-generated, natively dependency-free Matter stack is dramatically easier to keep in lockstep with a specification that's still evolving fast. When Matter 1.6 features land, they'll arrive as generated cluster code, not a months-long C++ porting effort. If you've been holding off on Matter entirely, this rewrite is a decent signal that the protocol's foundations are settling. My Thread network survived the switch without a single dropped sensor. That's already a win.

Original Source

Read the full article at Xda-developers →

KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.