Still Maintained

Self-hosted Internet of Things (IoT): what licence are you actually agreeing to

“Self-hosted” and “open source” are not the same promise, and the lists that recommend these projects rarely separate them. This page sorts 20 internet of things (iot) projects by the licence you are actually agreeing to, as read on 2026-08-20.

10 of 20 are permissive: run them, change them, keep your changes to yourself. 3 are AGPL, where serving a modified copy over a network obliges you to publish those changes, which is the clause that catches people who self-host for a team. 0 are not open source at all, carrying a proprietary or restricted-use licence. The remaining 7 are ordinary copyleft.

ProjectLicenceWhat that meansStarsMaintenanceLanguage
Home AssistantApache-2.0Permissive, no strings89,998ActivePython
Node REDApache-2.0Permissive, no strings23,554ActiveJavaScript
ThingsboardApache-2.0Permissive, no strings22,283ActiveJava
EMQXApache-2.0Permissive, no strings16,644ActiveErlang
evccMITPermissive, no strings7,100ActiveGo
GladysApache-2.0Permissive, no strings3,154ActiveJavaScript
ioBrokerMITPermissive, no strings1,373ActiveShell
FlowForgeApache-2.0Permissive, no strings395ActiveJavaScript
LHAMITPermissive, no strings13ActiveLua
polluSensWebMITPermissive, no strings11ActiveJavaScript
TasmotaGPL-3.0Copyleft, publish your changes24,717ActiveC
DomoticzGPL-3.0Copyleft, publish your changes3,793ActiveC++
WebThings GatewayMPL-2.0Copyleft, publish your changes2,644ActiveTypeScript
openHABEPL-2.0Copyleft, publish your changes1,134ActiveJava
SIP Irrigation ControlGPL-3.0Copyleft, publish your changes419ActivePython
FHEMGPL-3.0Copyleft, publish your changes-Not measuredPerl
FMD ServerGPL-3.0Copyleft, publish your changes-Not measuredDocker
OpenRemoteAGPL-3.0AGPL, network copyleft1,873ActiveJava
SOLECTRUSAGPL-3.0AGPL, network copyleft161ActiveRuby
OnlocAGPL-3.0AGPL, network copyleft10ActiveTypeScript

What the licence column means

The Maintenance column is a second, independent check: the age of the most recent commit on the default branch, read from the GitHub API on 2026-08-20. Active is within 180 days, Slowing is 180 to 365, Dormant is over a year, Archived means the maintainer marked the repo read-only, and Not measured means the project is hosted outside GitHub so the check does not apply.

Source data from awesome-selfhosted-data, used under CC BY-SA 3.0. Licence family grouping and maintenance status are computed by this site (from the upstream licence fields and the GitHub API) and are not part of the upstream dataset. Licence classification is a summary, not legal advice: check the project’s own LICENSE file before you rely on it. This page is published under the same licence.