This core concepts guide provides a high-level overview of using Miru. It is NOT a tutorial detailing the installation and usage of Miru in depth. For this, refer to the getting started guide (after reading through these core concepts).

Terminology

Config Instances

A config instance is a particular instantiation of parameters used to alter the behavior of code.

Config instances are typically stored as JSON or YAML files (or potentially in a database somewhere), which applications parse into a structured format for consumption. The following YAML file defines a config instance for controlling a robot’s motion.

max_linear_speed_mps: 1.2
max_angular_speed_radps: 1.0
obstacle_avoidance_enabled: true
navigation_mode: balanced
telemetry:
  upload_interval_sec: 60
  heartbeat_interval_sec: 10

Config Schemas

A config schema defines the constraints on a config instance.

Config Types

A config type represents the parameters responsible for configuring a particular aspect of an application through time.

For instance, an application may have a Mobility config type that controls the motion of a robot. The Mobility config type goes through many iterations—parameters are added or deprecated (creating new config schemas for the config type) and given different values (creating new config instances for the config type).

The Mobility config type is not a particular instantiation of parameters or a particular specification of constraints. Instead, it is the parameters responsible for configuring the motion of a robot at any point in an application’s lifecycle.

Workflow Primer

The Miru workflow has four stages.

1

Define Schemas

Config schemas are defined in a git repository and used to validate config instances before deployment. Once ready to deploy a new version of an application, these schemas are uploaded to Miru via the command-line interface or in a continuous integration pipeline.

2

Set Configuration Data

Configuration data used to render config instances is defined and stored in the cloud. Configuration data is edited in the Miru dashboard or programmatically with the Miru REST API.

3

Create Overrides

Overrides are created to determine how configuration data is rendered to produce config instances. Like configuration data, overrides live in the cloud and are edited in the Miru dashboard or programmatically with the Miru REST API.

4

Deploy

Config instances are deployed to robots via the Miru Agent and the Miru SDK. The agent fetches updated config instances from the cloud and serves them to applications running the SDK on the same machine.