* initial implementation Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update tests Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update postgres writer Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix readers tests Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * address comments Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix senML naming Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove logger from service Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix failing linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update messaging to NACK Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove error wrapping Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove message in logging Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * writer add msg error Signed-off-by: Arvindh <arvindh91@gmail.com> * revert the postgres writer changes Signed-off-by: Arvindh <arvindh91@gmail.com> * dependency: update supermq version Signed-off-by: Arvindh <arvindh91@gmail.com> --------- Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> Signed-off-by: Arvindh <arvindh91@gmail.com> Co-authored-by: nyagamunene <stevenyaga2014@gmail.com>
Magistrala
A Modern IoT Platform Built on SuperMQ
Scalable • Secure • Open-Source
Guide | Contributing | Website | Chat
Made with ❤️ by Abstract Machines
Introduction 🌍
Magistrala is a cutting-edge, open-source IoT cloud platform built on top of SuperMQ. It serves as a robust middleware solution for building complex IoT applications. With Magistrala, you can connect and manage IoT devices seamlessly using multi-protocol support, all while ensuring security and scalability.
Key Benefits:
- Unified IoT Management: Connect sensors, actuators, and applications over various network protocols.
- Scalability and Performance: Designed to handle enterprise-grade IoT deployments.
- Secure by Design: Features such as mutual TLS authentication and fine-grained access control.
- Open-Source Freedom: Patent-free, community-driven, and designed for extensibility.
✨ Features
- 🏢 Multi-Tenancy: Support for managing multiple independent domains seamlessly.
- 👥 Multi-User Platform: Unlimited organizational hierarchies and user roles for streamlined collaboration.
- 🌐 Multi-Protocol Connectivity: HTTP, MQTT, WebSocket, CoAP, and more (see contrib repository for LoRa and OPC UA).
- 💻 Device Management and Provisioning: Including Zero-Touch provisioning for seamless device onboarding.
- 🛡️ Mutual TLS Authentication (mTLS): Secure communication using X.509 certificates.
- 📜 Fine-Grained Access Control: Support for ABAC and RBAC policies.
- 💾 Message Persistence: Timescale and PostgreSQL support (see contrib repository for Cassandra, InfluxDB, and MongoDB).
- 🔄 Rules Engine (RE): Automate processes with flexible rules for decision-making.
- 🚨 Alarms and Triggers: Immediate notifications for critical IoT events.
- 📅 Scheduled Actions: Plan and execute tasks at predefined times.
- 📝 Audit Logs: Maintain a detailed history of platform activities for compliance and debugging.
- 📊 Platform Logging and Instrumentation: Integrated with Prometheus and OpenTelemetry.
- ⚡ Event Sourcing: Streamlined architecture for real-time IoT event processing.
- 🐳 Container-Based Deployment: Fully compatible with Docker and Kubernetes.
- 🌍 Edge and IoT Ready: Agent and Export services for managing remote IoT gateways.
- 🛠️ Developer Tools: Comprehensive SDK and CLI for efficient development.
- 🏗️ Domain-Driven Design: High-quality codebase and extensive test coverage.
🔧 Install
Clone the repository and start the services:
git clone https://github.com/absmach/magistrala.git
cd magistrala
docker compose -f docker/docker-compose.yaml --env-file docker/.env up
Alternatively, use the Makefile for a simpler command:
make run args=-d
📤 Usage
Using the CLI:
Check the health of a specific service using the CLI:
make cli
./build/cli health <service>
Replace <service> with the name of the service you want to check.
Using Curl:
Alternatively, use a simple HTTP GET request to check the platform's health:
curl -X GET http://localhost:8080/health
For additional usage examples and advanced configurations, visit the official documentation.
📚 Documentation
Complete documentation is available at the Magistrala official docs page.
For CLI usage details, visit the CLI Documentation.
🌐 Community and Contributing
Join the community and contribute to the future of IoT middleware:
📜 License
Magistrala is open-source software licensed under the Apache-2.0 license. Contributions are welcome and encouraged!
💼 Professional Support
Need help deploying Magistrala or integrating it into your systems? Contact Abstract Machines for expert guidance and support.