Architecture & Deployment
Six cooperating services around one message bus
DynamicPlantMesh runs as 6 loosely coupled processes around a shared MQTT v5 broker and the historian that ships with the platform. Coupling is by message and API, so each process deploys, restarts and scales on its own.
System architecture
One web front end, five backend services, one shared bus
Browsers, external API consumers and AI agents each get their own entry point. Everything meets at the MQTT v5 broker and the historian data API.
System architecture
- Browser → Web app (live updates)
- External API consumers → Integration API (REST)
- AI agents → AI tool server (MCP over HTTP)
- Web app → MQTT v5 broker
- Web app → Historian data API
- Field gateway service → MQTT v5 broker
- Event & expression engine → MQTT v5 broker
- Event & expression engine → Historian data API
- KPI service → Historian data API
- Integration API → Historian data API
- AI tool server → Historian data API
- Historian data API → Historian database
Service roster
What each service does
One web front end and five backend services. Each has a single job, its own process and its own restart.
Web app
Dashboards, trends and timelines in the browser.
The screen your plant looks at every day. Live values arrive from the broker; history and configuration come from the historian.
KPI service
KPI and event extraction with live progress.
Recalculates KPIs and extracts events over any period on request, reporting progress live while it runs. A heavy recalculation never touches the web tier.
Integration API
Governed REST access to tags and time-series.
Gives reporting, MES and data-science teams the same historian data, behind per-user API keys and endpoint allow-lists.
Field gateway service
Installs as a Windows serviceOPC-UA, OPC classic DA, embedded MQTT v5 broker and monitoring.
Reads equipment over OPC-UA and OPC classic DA, hosts the embedded MQTT v5 broker and buffers samples to disk when a link drops, replaying them on reconnect, bounded by the configured disk buffer.
Event & expression engine
Evaluates expressions over live data.
Subscribes to the broker and evaluates the expressions your engineers author into events, states and KPI logs, written back to the historian for dashboards and timelines.
AI tool server
MCP for external agents.
Exposes purpose-built historian tools to your own AI agents over MCP, so every answer is grounded in the live historian rather than a copy of it.
Deployment model
Runs where your plant runs
On-premise, data-sovereign, operated by the team you already have. Nothing here needs a container orchestration team.
On-premise Windows hosts
Every service installs on Windows hosts at the plant, with the historian and its relational database beside them, and your IT/OT team runs it with the tools they already have.
Independent restart and scale
Coupling is by message and API only. Restart the KPI service, upgrade the field gateway or add capacity to one process without touching the others. A heavy KPI recalculation never touches the web tier.
No container orchestration required
Plain Windows services and a web host. There is no cluster to stand up and no container orchestration team to hire.
Plant-vs-server time-zone model
NewThe historian keeps its own clock; every chart and timeline shows plant wall-clock time. The offset is derived from both zones at query time, so daylight-saving transitions are honoured.
Console mode for development
The field gateway runs as a Windows service in production and in console mode on a developer machine, so an integrator can prove a new OPC-UA connection before it goes live.
Multi-site
Shared platform core, per-site deployments
One shared platform core, one production-site deployment per plant. Every site reuses the same UI library and core data model, then adds what is unique to it.
- Shared
- One UI library and one core data model, reused by every site and upgraded once.
- Per site
- Its own data library, theme, time zone, authentication and endpoints.
- Isolated
- Each site is a separate app instance. An upgrade or outage at one never touches another.
Shared-core multi-site model
- Shared UI library → Site A app instance
- Shared UI library → Site B app instance
- Core data model → Site A app instance
- Core data model → Site B app instance
- Site A data library → Site A app instance
- Site B data library → Site B app instance
In numbers
What runs behind a single deployment
- 6cooperating services
- 43domain entities
- 2live progress hubs
- 9worker service roles
Configure a plant solution — don't build one.
See the six services running against live plant data.