Cloud-Based

Unlike config schemas, configuration data is not stored in a git repository. Instead, configuration data is stored in the cloud and is accessible via the Miru dashboard or programmatically via the Miru REST API.

Miru uses the concepts of devices, tags, and metadata to structure how configuration data is stored and rendered.

Think of tags and metadata as a datastore for configuration data. Overrides reference this data to render config instances in the format of a particular config schema.

Devices

A device is the machine to which config instances are deployed. This could be an NVIDIA Jetson, Raspberry Pi, industrial PC, or any other machine powering a robot.

Tags

Groups of devices share configurations based on criteria like hardware, customers, location, etc. Miru uses the concepts of tag types and tags to group devices in a logical way.

A tag type is a group of related tags, while a tag is an instantiation of a tag type. Examples illustrate this best.

A hardware tag type could be used to group devices based on their hardware:

  • Raspberry Pi 4 Model B
  • NVIDIA Jetson Orin Nano
  • NVIDIA Jetson Orin AGX

An environment tag type could group devices based on their stage of development:

  • Dev
  • QA
  • Beta
  • Stable

An accelerometer tag type could define a tag for each accelerometer:

  • Accelerometer 1
  • Accelerometer 2
  • Accelerometer 3
  • Accelerometer 4

A device’s accelerometer tag reflects the specific accelerometer in use by the device, which may change as accelerometers are replaced or upgraded.

Devices may be “tagged” with any number of tags as long as they are from unique tag types.

Metadata

Metadata is data stored about a particular tag.

Suppose a robots support certain features based on their hardware. This information can be stored as metadata for each tag in the hardware tag type.

For example, say robots powered by the NVIDIA Jetson Orin Nano can support the jump and spin features but not the backflip feature. This information can be stored as metadata for the NVIDIA Jetson Orin Nano tag.

A metadata schema defines the constraints on the metadata.

Metadata schemas are written in a configuration language like JSON Schema. The following JSON Schema is a plausible metadata schema for the robot_id metadata we showed above.

Miru requires every tag type to have a metadata schema describing what constitutes valid metadata for any tag of that tag type. For instance, the hardware tag type may have the following metadata schema to specify the features (jump, spin, backflip) supported by a given hardware.

Any tags of the hardware tag type can only store metadata that adheres to the hardware metadata schema.

Metadata schemas look eerily similar to config schemas but serve a different purpose. A metadata schema does not describe or enforce any constraints on the config instances that are deployed to devices. Metadata schemas only describe what constitutes valid metadata, effectively structuring the metadata stored for devices and tags.

Customization

Tags are defined by you. We gave examples with the hardware, accelerometer, and environment tag types. However, you can define any tag type you want and create any number of tags for each tag type.

This flexibility allows you to tailor tags to the needs of your application. Maybe your customers don’t have unique configurations. A customer tag type would be unnecessary then. You may have many different sensor types. Defining a tag type for each sensor type would then prove useful.

The metadata stored for devices and tags is also completely defined by you. We showed simple examples of metadata and their schemas: a device storing a robot_id and hardware tags storing supported features like jump, spin, and backflip. However, you can define the metadata custom to your application.