Properties
The file format used to define the schema.Config schemas support the following file formats:
Note that a schema’s format does not need to match the format of the config instance it validates. For example, a YAML-formatted JSON Schema can validate a JSON-formatted config instance.Allowed values:
| Language | Schema Formats | Instance Formats |
|---|---|---|
| JSON Schema | JSON, YAML | JSON |
| CUE | CUE | JSON |
cuejsonyaml
The raw schema definition, written in the specified schema language.The exact contents of a schema file is preserved in Miru, including any comments, whitespace, and formatting.
A hash of the canonicalized schema content.Digests are computed by converting schemas to a canonical format—a format that ignores whitespace, comments, and other non-semantic differences—and then hashing the result. This is useful for comparing schemas and detecting duplicates.Examples:
sha256:45YeoJJ2btBnAKQztAEXEjHsqyyQfC1z1Mw3LLM4xMUyThe instance file path is the file path to deploy config instances (for this schema) on a device, relative to the
/srv/miru/config_instances directory.The default instance file path for a schema is {my-config-type-slug}.json, which deploys config instances to /srv/miru/config_instances/{my-config-type-slug}.json.Examples: /v1/mobility.json, /config/safety.jsonThe config type to which the schema belongs.Examples:
Mobility, Safety Features, PerceptionSchema languages
Config schemas are defined using a schema language—a formal language for describing the structure, constraints, and data types of a configuration. Miru supports:- JSON Schema (draft 2020-12)
- CUE
File formats
Config schemas support the following file formats:| Language | Schema Formats | Instance Formats |
|---|---|---|
| JSON Schema | JSON, YAML | JSON |
| CUE | CUE | JSON |
Validating instances
The primary purpose of schemas is to validate config instances. Let’s look at a simple example to see this in action. The following is a toy schema written in JSON Schema.JSON Schema
- Names the available properties
- Organizes the configuration structure, placing some properties at the root while nesting other properties into logical groups
- Gives each property a type, such as
number,boolean, etc. - Constrains the values of each property—minimums, maximums, enumerations, etc.
- Supplies default values to properties where appropriate

max_angular_speed_radps field exceeds the maximum allowed value of 3.0.
Luckily, before deployment to the device, the config instance is validated against the schema, throwing the following error:

max_angular_speed_radps field to use the maximum allowed value of 3.0 and deploy the config instance to the device.



