miravo
v0.14.1
Published
Open-source factory simulator that generates realistic industrial data for whatever you're building. Node launcher for the Miravo binary.
Readme
Build and test software on industrial data against equipment that runs, wears and fails on demand.
Software that runs on industrial data gets built against fake data. Real equipment is off-limits, failures can't be triggered on demand, and wear takes months to show up. So teams test against random tags and homemade scripts, and find the problems in production.
What Miravo does
- Define your factory in YAML. Start from a template, write your own, or have your agent build it.
- Test beyond normal operation. Model equipment cycles, wear and part flow through production lines. Accelerate time and trigger faults that affect other assets.
- Test across industrial protocols. Read the same live values through OPC UA, Modbus TCP and MQTT, with more to come.
- Run it the same way every time. Seeded, repeatable runs for CI, demos and load tests.
Who it's for
Miravo is for anyone building software on industrial data: dashboards, historians, MES and OEE apps, UNS pipelines, SCADA and BMS integrations, edge and analytics platforms, predictive maintenance. Also demos, CI tests and load tests.
What it's not
- Not for PLC logic testing, virtual commissioning, 3D visualization or throughput/layout optimization.
- Not physics-grade.
- No PackML.
- MQTT payloads are custom JSON, not Sparkplug B.
Built-in templates
- Smart Factory (production line)
- Water Treatment Plant
- Commercial Building
- Backup Power Facility
- District Heating
- Pharma Cleanroom
Install
Install Miravo on Linux/macOS with the install script.
curl -fsSL https://miravo.dev/install | bashOr install from npm on Linux, macOS, or Windows (x64).
npm install -g miravoThe npm package requires Node.js 18 or later. The install script and the standalone binaries do not need Node.js.
Full install options: Docker, Windows, and standalone binaries.
Quickstart
Start the built-in Smart Factory machining line (CNC → wash → press → test) at 10× speed:
miravo start --template smart-factory --speed 10The Console is served at http://127.0.0.1:8080. Point your software at the same data:
| Protocol | Endpoint |
|---|---|
| OPC UA | opc.tcp://127.0.0.1:4840 |
| MQTT | mqtt://127.0.0.1:1883, topics under MiravoWorks/smart-factory/# |
| Modbus TCP | 127.0.0.1:1502, holding registers |
Each station publishes state, good_count, scrap_count, cycle times and time spent per state. In a second terminal, inject a stuck valve on the press and watch the line react:
miravo inject press-001 valve_stuck
miravo status --watchThe press stops. The wash station blocks as its buffer fills, the test station starves, and every station's counters and state times keep the record your OEE logic needs.
All listeners (Console, MQTT, OPC UA, Modbus) bind 127.0.0.1 by default. Protocol endpoints have no authentication. See Security before exposing them.
Privacy
No telemetry. The CLI checks GitHub Releases for a newer version at most once per 24 hours in interactive terminals. Disable with MIRAVO_NO_UPDATE_CHECK=1.
Docs
- Documentation
- Core concepts
- Asset models
- CLI reference
- Protocols: MQTT, OPC UA, Modbus TCP
- Integrations: Litmus Edge today, with Ignition, AWS IoT SiteWise, and Azure IoT coming
This repository is licensed under the Apache-2.0 License.
