Remote Monitoring and Control (RMC)
At a Glance
Section titled “At a Glance”- Category: Monitoring & Analytics
- Primary environment: MaaS Provider
- Documentation focus: Design reference
- Maturity: TRL 4–5 (first release, M18)
- Related architecture docs: Reference Architecture Guide, Environments
Purpose
Section titled “Purpose”The Remote Monitoring and Control (RMC) solution is a web application reserved for MaaS Consumers. It provides a dashboard to remotely monitor and control production processes running in the MaaS Provider environment, presenting production parameters, machine data, and KPIs in a simple and intuitive way. Its main objectives are monitoring the performance of key indicators, controlling production status, and promptly identifying deviations between expected and actual results, making large amounts of data easier to understand and enabling quick data-driven decisions.
Primary Actors
Section titled “Primary Actors”The D5.2 usage viewpoint defines roles, permissions, constraints, a role-task matrix, and a use case diagram for this solution.
- User: Can access and view the data presented in the dashboard; constraint: Can only view the dashboard
- System Administrator: Manage users; constraint: N/A

Use-case diagram extracted from MaaSAI deliverable D5.2.
Functional Components
Section titled “Functional Components”RMC links authentication, frontend interaction, data-query services, MQTT integration, and visualisation outputs to support remote supervision. The functional view highlights how edge data and secure messaging are transformed into live dashboards and control-oriented information for users.

Functional components diagram extracted from MaaSAI deliverable D5.2.
Design Baseline
Section titled “Design Baseline”A login system based on Keycloak will be developed to verify the identity of each user and determine which resources they can access. It is a user login management and auditing tool designed for modern applications and services that supports protocols such as OpenID Connect, OAuth 2.0, and SAML, as well as two-factor authentication, permission and role management, token service creation, and Single Sign-On. Keycloak provides fine-grained authorisation services that make it possible to define the exact policies the application needs.
The RESTAPI component will allow and manage the communication between frontend and database via HTTP requests and responses. It will be the backend of the application, and it will implement a communication layer between the UI and the API. All the RESTAPI requests will be authenticated through Keycloak server, and data exchange will be in JSON format.

Architecture diagram extracted from MaaSAI deliverable D5.2.
Technology Stack
Section titled “Technology Stack”RMC is built as a containerised web application with a clear frontend/backend split and a dedicated monitoring stack.
| Category | Technology |
|---|---|
| Frontend | Angular 21 with PrimeNG; Chart.js 4.5 for plots and charts |
| Backend | Python with FastAPI |
| Authentication | Keycloak 26 for identity and access management, backed by a PostgreSQL database; Redis 8.6 for auth-token management |
| Monitoring & visualisation | Prometheus 3.5 (metrics scraping and storage) and Grafana 13 (visualisation) |
| Other | Nginx reverse proxy; Docker Compose containerisation |
| Licence | no licence file is currently included in the repository |
Integrations & External Dependencies
Section titled “Integrations & External Dependencies”RMC serves the MaaS Consumer environment, presenting data on production processes, machines, and sensors provided by the MaaS Provider. Within MaaSAI, it exchanges data with the Edge Data Storage (PostgreSQL), which supplies the machine data and KPIs shown in the dashboard. Third-party dependencies include Keycloak (authentication, authorisation, and accounting), Redis for token management, Nginx as reverse proxy, Prometheus and Grafana for infrastructure monitoring, and the python-keycloak and redis-py libraries used by the backend.
APIs & Interfaces
Section titled “APIs & Interfaces”The backend exposes a REST API consumed by the Angular frontend, with data exchanged in JSON format.
- Data:
/api/data/machinesand/api/data/machines/{id}— machine lists and per-machine details - Calendar:
/api/data/calendarand/api/data/calendar/{id}— production calendar events - Auth:
/api/auth/login,/api/auth/logout,/api/auth/users— token generation/blacklisting and user management (create/update/delete restricted to administrators) - Consumer:
/api/consumer/messages— consumer messages supporting remote control
The UI is a web dashboard with a home screen showing production data and KPIs in tables and graphs, a settings screen for language and visualisation preferences, and a profile screen for user information.
User Interface
Section titled “User Interface”Representative screens of the RMC web interface in the first release:

Remote Monitoring and Control — home screen — MaaSAI deliverable D10.1.

Remote Monitoring and Control — settings screen — MaaSAI deliverable D10.1.
Deployment & Configuration
Section titled “Deployment & Configuration”All components are containerised and deployed with a single Docker Compose file (docker compose up -d --build) that also manages virtual networks and storage volumes.
| Requirement | Minimum | Recommended |
|---|---|---|
| CPU | 2 vCPUs | 4 vCPUs |
| RAM | 4 GB | 8 GB |
| Storage | 100 GB | 500 GB |
| OS | 64-bit Linux (Ubuntu/Debian) | Debian 13 |
| Network | — | Gigabit Ethernet with strict firewall/VLAN routing |
Key environment variables cover the public domain used by the reverse proxy for request redirection and TLS termination, and Keycloak admin credentials and Keycloak database (PostgreSQL) settings.