Skip to content

Console

Miravo's embedded web dashboard — browse instances, view real-time metrics, stream fault and lifecycle events, and manage protocol adapters from the browser.

Miravo includes an embedded web console for monitoring and controlling simulations through your browser.

The console is served by the admin HTTP server. Open your browser to:

http://127.0.0.1:8080

In Docker, ensure port 8080 is mapped:

Terminal window
docker run --rm -p 1883:1883 -p 8080:8080 amineamaach/miravo:latest

The main dashboard provides a real-time overview of the running simulation:

  • Simulation state (running, paused, stopped)
  • Tick count and simulation time
  • Instance count and fleet summary
  • Per-adapter metrics (MQTT published messages, OPC UA updates, error counts)

Browse all active instances with their current member values, parameters, lifecycle stage, and active faults. Select an instance to view its full detail.

Events stream in real time over WebSocket:

  • Fault triggers and clears
  • Lifecycle stage transitions
  • Instance creation and removal
  • Engine state changes
  • Adapter enable/disable events

The control page includes protocol cards for each registered adapter (MQTT, OPC UA, and future protocols):

  • Enable/disable toggles
  • Live metrics (published messages, errors, health state)
  • Configuration details (port, host)
  • Port availability warnings

The console is a React + shadcn/ui single-page application built with Vite. It connects to the admin server’s REST endpoints and WebSocket for real-time updates.

The console is bundled into the Docker image and standalone binaries. No separate installation required.

The console is served automatically when the admin server starts. No additional configuration is needed.

To access the console from another machine, bind the admin server to a non-loopback address:

Terminal window
miravo start --admin-host 0.0.0.0

Or via environment variable:

Terminal window
MIRAVO_ADMIN_HOST=0.0.0.0 miravo start

API routes (/healthz, /metrics, /state, /commands, etc.) take precedence over console routes. Unknown paths fall back to the SPA router.