What is Mantle?
MQTT Sparkplug B data aggregator and historian
Why Mantle?
Industrial automation has been dominated by proprietary hardware & software for decades and the companies that provide these products have focused their energy on locking customers into their ecosystems, complex licensing models to increase their profits, and making their products cheaper while selling them at a premium "industrial" price. As a result, industrial technology lags so far behind mainstream technology. Innovation energy is simply spent on increasing and ensuring profits instead of making the technology better.
SCADA and HMI platforms, while more open platforms have turned up in the last decade, have historically followed this trend. Technologies like MQTT have enabled a more standardized way to deliver industrial data to many platforms. However, managing SCADA applications and data is still very expensive in terms of licensing costs and development effort. The software solutions out there don't fulfill their promise of reducing the development effort well enough to make up for the fact that they don't have first class support for version control, CI/CD pipelines, and open IDEs. Even worse, they don't prioritize ease of configuration, mass deployment or data loss prevention.
Mantle is a log by default historian and data access layer for SCADA. It discovers all Sparkplug B metrics and automatically historizes their values and properties. The only necessary configuration is the MQTT Broker address. Point it to an MQTT broker and let it start logging. Then use its GraphQL to pull data into your SCADA applications. You can even use subscriptions powered by server sent events to get real-time status and values.
Source
https://github.com/joyautomation/mantle
Installation
It's recommended to run multiple Mantle replicas in parallel for easy high availability. In this case, a Redis or Valkey instance is needed to synchronize state and load balance between the replicas. Mantle can also operate with a single instance if required, but not recommended for production environments.
Quick start
The easiest way to get started with mantle is by using docker compose (See Docker Compose for compose yaml files). For a complete system, using Tentacle PLC, Mantle and a simple custom front end, use this docker compose file:
Docker Compose
version: '3.8'
services:
mantle:
image: registry.digitalocean.com/jar-containers/joyautomation/mantle:0.0.50
deploy:
replicas: 3
env_file:
- .env
resources:
limits:
cpus: '0.1'
memory: 500M
reservations:
cpus: '0.1'
memory: 500M
valkey:
image: valkey/valkey:latest
ports:
- "6379:6379"
resources:
limits:
cpus: '0.5'
memory: 256M