// the take
OpenRemote is a self-hosted IoT platform for building device management and automation products: it combines protocol agents (MQTT, HTTP, Modbus, Bluetooth mesh, Art-Net, etc.), an asset/rules model, multi-tenant realms, and a dashboard builder. It's aimed at teams building a branded IoT product on top of someone else's infrastructure rather than developers who just want to wire up a few sensors.
The agent/protocol abstraction is genuinely broad — MQTT, Modbus, HTTP, WS, Art-Net and a full Bluetooth mesh provisioning/transport stack ship in the box, which saves real integration work if your devices happen to speak one of those. Multi-tenancy (realms) and role-based users are first-class rather than bolted on, so it's usable as a base for a multi-customer SaaS product, not just a single-site dashboard. The rules engine supporting when-then, flow, JS and Groovy side by side gives real flexibility in how automation logic gets authored depending on who's writing it. OpenTelemetry tracing support is a sign of actual production use, not just demo polish.
Historical attribute data is kept indefinitely by default — Postgres will grow unbounded unless you remember to set OR_DATA_POINTS_MAX_AGE_WEEKS yourself, which is an easy footgun to miss until storage costs show up. Groovy as a supported rules language means arbitrary JVM code execution is reachable through the rules UI; fine if only trusted admins author rules, risky if that surface is ever exposed more broadly. The Bluetooth mesh implementation is a large amount of protocol state-machine code (provisioning, transport, opcodes) to maintain — BLE mesh stacks are notoriously fragile across devices and firmware versions, and that's a lot of surface area for a project this size to keep solid. The documented path to production is still 'self-signed cert on 127.0.0.1 then go read a separate custom-deployment guide' — docker-compose gets you a demo fast, but going from that to a real multi-tenant deployment is left largely to external docs rather than anything in this repo.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →