Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go.
It accepts user and thing connections over various network protocols (i.e. HTTP, MQTT, WebSocket, CoAP), thus making a seamless bridge between them. It is used as the IoT middleware for building complex IoT solutions.
- Multi-protocol connectivity and bridging (HTTP, MQTT, WebSocket and CoAP)
- Device management and provisioning (Zero Touch provisioning)
- Mutual TLS Authentication (mTLS) using X.509 Certificates
- Fine-grained access control
- Message persistence (Cassandra, InfluxDB, MongoDB and PostgresSQL)
- Platform logging and instrumentation support (Grafana, Prometheus and OpenTracing)
- Event sourcing
- Container-based deployment using [Docker][docker] and [Kubernetes][kubernetes]
- [LoRaWAN][lora] network integration
- Small memory footprint and fast execution
- Domain-driven design architecture, high-quality code and test coverage
The following are needed to run Mainflux:
Developing Mainflux will also require:
Once the prerequisites are installed, execute the following commands from the project's root:
docker-compose -f docker/docker-compose.yml up
This will bring up the Mainflux docker services and interconnect them. This command can also be executed using the project's included Makefile:
The quickest way to start using Mainflux is via the CLI. The latest version can be downloaded from the [official releases page][rel].
It can also be built and used from the project's root directory:
make cli ./build/mainflux-cli version
Additional details on using the CLI can be found in the CLI documentation.