Skip to main content
To keep things simple, we’ve provided a getting-started repository that contains everything you need to create a release. Follow along with us by cloning the repository.
The repository provides the same schemas in two schema languages, JSON Schema and CUE. Use the selector at the top of the page to follow along in either language. If you’re unfamiliar with schema languages, we recommend starting with CUE.

Define the schemas

Releases are defined by the config schemas they contain. Each schema sets the file path where the Miru Agent writes its config instance on the device, and a release can only be deployed to devices running the operating system its file paths target.The getting-started repository has a folder for each operating system:
  • linux/ writes config instances to /srv/miru/configs/
  • windows/ writes config instances to C:\ProgramData\Miru\configs\
Each folder contains two sets of schemas:
  • Empty schemas - regard all config instances as valid
  • Strict schemas - constrain the valid fields, types, and values for instances of the config type they belong to
For this tutorial, select the tab for the operating system of the device you’ll deploy to and choose one of its schema sets to create your release with. If you don’t currently use a schema, we recommend starting with an empty schema and gradually adding constraints as needed.
Empty Schemas
Strict Schemas

Schema annotations

Each of the above schemas carries the following annotations:
required
The config type is a required annotation that identifies the config type to which a schema belongs. Below is the syntax for annotating a schema with a config type slug.
If the provided config type slug does not yet exist, it is automatically created. To edit a config type after creation, visit the config types documentation.Examples: mobility, communication, perception
The instance file path is the absolute file system path where config instances for this schema are written on the device.This annotation is optional and defaults to /srv/miru/configs/{config-type-slug}.{instance-format}. The default is a Linux path, so schemas for Windows devices must set an explicit path such as C:\ProgramData\Miru\configs\mobility.json.To share the same schema amongst multiple config instances, declare instance slots instead.
The Miru Agent ships with out-of-the-box access to /srv/miru. Any local account can read configs deployed to /srv/miru.
To deploy configs to a custom directory, visit File system access.
  • /srv/miru/configs/mobility.json
  • /home/myapp/configs/communication.yaml
Miru supports more annotations, such as instance slots and instance formats. However, this tutorial only covers the two annotations above.For the full list and their syntax in each schema language, visit the annotations documentation.

Set up the CLI

Next, we’ll install the CLI—the primary method of creating releases in Miru.Creating releases via the CLI is a deliberate design choice. We believe a release’s schemas should live in a Git repository. This allows them to be versioned alongside the code that uses them and encourages better software development practices.While this tutorial covers creating releases on your local machine, the CLI can also be used to create releases in a CI pipeline.
The CLI runs on your development machine, not on the device. The CLI is not yet available for Windows, so if your device runs Windows, install the CLI on a macOS or Linux machine to create the release.
InstallThe CLI is only available on macOS and Linux. Windows is not supported.
Install via Homebrew.
If you are not seeing the latest CLI version, refresh Homebrew with brew update.
LoginTo log in, run the login command.
The CLI prints a verification URL and a short code, then opens the URL in your default browser. Confirm that the code in the browser matches the code in the terminal.

Create a release

With the CLI setup, we are ready to create a release in Miru.Navigate to the root of the getting-started repository and create the release with the schema set you chose for your device’s operating system.
Upon a successful creation, you’ll see a confirmation message similar to the following:
Git metadata is pulled from the local Git repository that the schemas are defined in.
To view the release in Miru, navigate to the releases page and click into the release.
Releases page
Then select the overview tab at the top of the page to view the release’s details.
Release overview page
For a more comprehensive guide on creating releases, visit the define releases documentation.
Last modified on October 16, 2026