
6 min read
Disclaimer: this post is mostly to dump ideas from my mind and make the project goal more defined.
The Open RMM is project I am working on. It is Open Source RMM (Remote Machine/Monitoring Management) solution, mostly intended for homelabs (my homelab) and in the future maybe even something more.

There are multiple Open Source (or at least free) RMM solutions: MeshCentral, RPort, Remotely, RustDesk. But none of work or look how I wanted/expected. In my day job I use N-Able RMM so there are some ways I am used to how they work and look. But also there are things I hate about it, so it is not my intention to just clone it. Second reason will be, I needed some kind of long term project to work on (when I have time and motivation). Also I always want to learn new technologies so this is my excuse and also reason for so many rewrites.
The goal is to be full solution to monitor status of your Computers, Virtual Machines and Containers (LXD not Docker), to be able to connect to them (how to do it is still TDB) and to be able to simply deploy the Open-RMM in you homelab.
This is high level overview
Number of rewrites 4.
Will try to update the timeline in future.
Well, where do I start? This is just a hobby and I am little too much enthusiastic for new technologies/frameworks I find. So I want to try them all. But also I am learning this as I go so I may start with something and learn new stuff so I wan to do it more correct/modern way. So probably there will be a lot more rewrites in the future.
SvelteKit for fullstack is great and with move to TRPC, I had some questions about the API. I still can use SvelteKit for collection API and it would work but was thinking about separating this so I can in the future update Web and API separately. This also started the migration of the whole project to Turborepo, I need access to Prisma client from two different projects and Turborepo was the tool to achieve this. The migration was struggle, still it barely works but it works and that is what I need. I opened the old Express code I written before removed all the models, controllers and services. It just made hard to lookup anything and to remember where the code I need to look at is. I reduced it to the minimum just using Prisma to for DB, validating data with Zod and that is it.
I was thinking about to moving to Rust or Go. Rust is super safe and fast, the code I did look up looked pretty clean and easy. Go was more less made for writing APIs, their handling of JSON is just brilliant, but I somewhat don’t like how they handle packages (Cargo rocks!). But I still did go with Node/TS/Zod/Express stack. It was for one simple reason… Prisma (and sharing of Prisma). I seen there are ORMs like Prisma but I still have to write models and schemas. The most thing I hate is writing the same stuff twice. That was the reason I did go with the pain of learning and moving everything to Turborepo. (Also I had written the whole Express server from last year…)
Well, I hope I will continue to work on this more often and I hope I will get into stave there is at least somewhat useful. And for the post? I will see if I will update the post or make a new one when I will have some updates. Will see…
If someone read this, I am sorry ,it was just pure mind dump. I don’t think it made much sense but I hope there is at least some value.
Follow-up: Update on Open-RMM development