// the find
sagoo-cloud/sagooiot
SagooIOT是一个基于golang开发的开源的企业级物联网基础开发平台。负责设备管理和协议数据管理,支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。旨在通过可复用的组件,减少开发工作,简化和加速物联网开发交付。适配多种接入协议(TCP,MQTT,UDP,CoAP,HTTP,GRPC,RPC等)
SagooIOT is a full-stack, Go-based IoT platform (GoFrame backend, Vue3 frontend) covering device management, multi-protocol ingestion, rule-based alerting, and a plugin system for custom protocol handlers. It's aimed at teams building an internal device-management console for industrial, building, or agricultural IoT rather than hobbyists wiring up a single sensor.
Protocol breadth is real, not just a marketing list: TCP, MQTT, UDP, CoAP, HTTP, Modbus, OPC UA, IEC104, JT808 are all wired in, and the plugin system runs on hashicorp/go-plugin so new protocols can be added as separate C/C++/Python/Go processes without touching the core binary. TDengine integration for time-series storage is the right call for device telemetry at scale instead of forcing everything through a relational table. The feature set (thing model, JS-based rule engine, Casbin RBAC, alarm dedup/suppression, code generation) covers a lot of the boilerplate that normally eats weeks on an internal IoT tool, and there are actual *_test.go files next to the business logic, not just a demo scaffold.
It's GPL-3.0, and the README is explicit that shipping a closed-source derivative requires a separate commercial license from the maintainer - a hard blocker for a lot of companies before they even read the code. Getting it running means standing up MySQL/PostgreSQL, Redis, TDengine or InfluxDB, an MQTT broker, and MinIO simultaneously, which undercuts the 'lightweight' framing. Support and the real documentation live in a QQ group and a Chinese-first doc site; the English README is a translation layer over a project whose primary community you can't easily participate in. The architecture also assumes you take the whole stack (GoFrame + Vue3 + Casbin + gToken) as-is - swapping any one piece isn't a designed-in option, and it ships with a default admin/admin123456 credential you have to remember to change.