Skip to main content
Push a config schema to Miru.

Requirements

  • The schema file must be committed to a local git repository
  • The git repository must have a remote URL (GitHub, GitLab, Bitbucket, etc.) configured
  • The schema must be annotated with its config type (see annotations below)

Usage

miru schema push PATH --version VERSION
Arguments
PATH
string
required
The relative or absolute file system path of the schema file to push.
Flags
--version, -v
string
required
The version to give the schema. Must be a valid semantic version.Examples: v1, 2.0.0, 1
--allow-duplicate
boolean
Allows the schema to be created even if another schema with equivalent content, but a different version, already exists for the same config type.
--language, -l
string
The language the schema is written in. The language is auto-detected but may be overridden with this flag if needed.Examples: jsonschema, cue

Annotations

config type
required
The config type is a required annotation that identifies the config type that a schema belongs to. Below is the syntax for annotating your schema with the config type slug.
x-miru-config-type: "{config-type-slug}"
Examples: mobility, safety-features, perception
instance file path
The instance file path is the file system location that config instances (for this schema) are deployed to relative to the /srv/miru/config_instances directory.This annotation is optional and defaults to {config-type-slug}.json, which deploys config instances to /srv/miru/config_instances/{config-type-slug}.json on a given device.
x-miru-instance-filepath: "{instance-file-path}"
The instance file path can be updated after schema creation, so don’t worry about getting it right the first time. You can always update it later.Examples: /v1/mobility.json, /safety.json, configs/perception.json

Examples

  • New Schema
  • Existing Schema
If a schema with the provided version does not exist, a new schema is created.
command
$ miru schema push communication.yaml --version=v1.5
🔍 Collecting Git Info...
    commit: df48a89cc19751f84cfbdc5908896235418a6719
    origin: [email protected]:miruml/getting-started.git
    file path: jsonschema/communication.yaml
    message: refactor: drop watchdog timeout from 5s to 2s

🟢 Successfully created communication v1.5
    language: jsonschema
    format: yaml
    created: Nov 20, 2025 at 3:45 PM PST
    instance file path: /communication.json

Troubleshooting

  • Version Conflict
  • Duplicate Schema
If a schema with the same version but different content already exists, an error is returned.
output
miru schema push communication.yaml --version=v1.5
🔍 Collecting Git Info...
    commit: f64bcd1d80f5589b773b63590174bfc08325d28e
    origin: [email protected]:miruml/getting-started.git
    file path: jsonschema/communication.yaml
    message: refactor: migrate communication instances to /v1/communication.json

 Error: Config schema version v1.5 already exists for config type 'communication' but its content is not equivalent to the provided schema content.
To troubleshoot the issue, first navigate to the Config Types page and click into the config type the schema belongs to.
Click the schema with the version in question to open the schema details panel and view the schema content.
You can also select the Metadata tab to view the git commit information, which provides a link to the schema’s original commit in your hosted git repository provider (GitHub, GitLab, Bitbucket, etc.).