Monarch Connect

Monarch connect is a dataflow editor for creating modular command-and-control systems quickly.


View on github:


Monarch allows users without significant client-side programming experience to construct custom interfaces to talk to a wide array of external nodes. Example applications include command-and-control systems for mobile robots, telemetry interfaces for remote sensing systems, web bridges for non-networked devices, control interfaces for automation systems, and more! Monarch is designed to interface with any device with a serial link, whether it be over TCP/IP, USB, or something else. Monarch is not tied to any particular hardware platforms, so users can easily connect their own systems to Monarch.

Monarch uses an easily-understood dataflow system, where endpoints, filters, remappers, and other nodes can be connected together with a drag/drop interface to create robust command/control systems in minutes. This dataflow system is powered by 3 interface types:

  • Payloads: tag/value pairs for data. Payload interfaces are automatically propagated across nodes as data updates in real-time. Ex: raw sensor readings, command values, etc
  • Events: Binary “kick” events to synchronize nodes. Ex: button press, connected/disconnected events, fault indicators.
  • Streams: Payload+Event interface. Allows directional data streaming with discrete packets. Ex: sensor feed, comms links.

Monarch is developed with C++/Qt, and is designed to be fully cross-platform compatible. (Temporarily limited to Windows only until xinput for USB controllers is replaced though). Currently, Monarch is in early development. The editor frontend and dataflow systems are done, but nodes need to be written and a post-install library system should be added to support custom nodes. Nested flows are a major planned feature. For more info and up-to-date progress, check out the github page.