> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mirurobotics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI

> Changelog and migration steps for the Miru CLI

export const Dropdown = ({title, defaultOpen = false, children}) => {
  const [isOpen, setIsOpen] = React.useState(defaultOpen);
  function cn(...inputs) {
    return inputs.filter(Boolean).join(' ');
  }
  return <div>
            <button className="w-full flex justify-between items-center py-3 bg-transparent 
                border-none cursor-pointer text-left" onClick={() => setIsOpen(!isOpen)} aria-expanded={isOpen}>
                <span className="font-bold text-gray-100 text-md">
                    {title}
                </span>
                <svg className={cn("transition-transform duration-200 opacity-50 flex-shrink-0", isOpen && 'rotate-90')} width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
                    <polyline points="6 4 10 8 6 12"></polyline>
                </svg>
            </button>

            {isOpen && <div className="pb-3 space-y-4">
                    {React.Children.map(children, (child, i) => <div key={i}>{child}</div>)}
                </div>}
        </div>;
};

# v0.10.2

*July 20, 2026*

CLI `v0.10.2` adds support for including [upload rules](/data-uploads/primitives/upload-rules) in a release, letting you define data uploads alongside your config schemas.

## Features

* `miru release create` now accepts `--upload-rule` and `--upload-rules` flags to include upload rules (and their upload collections) in a release
* Emit API key source notice when `MIRU_API_KEY` is set in the environment
* Show platform-aware upgrade command when notifying users of a new CLI version
* Publish a SBOM for CLI releases

***

# v0.10.1

*May 17, 2026*

## Features

* Config types referenced in schema annotations are now automatically created if they do not yet exist instead of throwing an error

## Fixes

* Don't rewrite `~/.miru/settings.json` on read-only commands when no defaults need to be applied
* Fix the install-docs link printed in the CLI's update-available notification

***

# v0.10.0

*April 12, 2026*

CLI `v0.10.0` adds support for specifying config instance file paths anywhere on your devices' file system, not just in the `/srv/miru/config_instances/` directory.

Note that file paths which do not live in `/srv/miru/config_instances/` require Miru Agent [v0.8.0](/changelog/agent#v0-8-0).

## Breaking changes

<Dropdown title="Absolute instance file paths">
  The `instance_filepath` annotation has been updated to be an absolute file system path instead of a path relative to `/srv/miru/config_instances/`. Update all schema annotations:

  ```diff theme={null}
  # JSON Schema
  - x-miru-instance-filepath: "mobility.json"
  + x-miru-instance-filepath: "/srv/miru/config_instances/mobility.json"

  # CUE
  - @miru(instance_filepath="mobility.json")
  + @miru(instance_filepath="/srv/miru/config_instances/mobility.json")
  ```
</Dropdown>

<Dropdown title="Default instance file path">
  The default instance file path has been updated from `/srv/miru/config_instances/{config-type-slug}.json` to `/srv/miru/configs/{config-type-slug}.json`.

  Because the new default path is outside `/srv/miru/config_instances/`, it requires Miru Agent [v0.8.0](/changelog/agent#v0-8-0) or later, as noted above.

  We recommend adding the instance file path annotation pointing at the previous default location, `/srv/miru/config_instances/{config-type-slug}.json`, to preserve the old path. Below is an example for the `mobility` config type:

  ```diff theme={null}
  # JSON Schema
  + x-miru-instance-filepath: "/srv/miru/config_instances/mobility.json"

  # CUE
  + @miru(instance_filepath="/srv/miru/config_instances/mobility.json")
  ```
</Dropdown>

## Fixes

* Don't persist login tokens to disk until they've been successfully validated
* Add missing out-of-bounds check in the create schema pipeline
* Prevent double-close panic in async writer

## Improvements

* Improve performance of populating setting defaults to disk
* Persist credentials with more restricted file system permissions

***

# v0.9.2

*March 5, 2026*

## Fixes

* Display a more descriptive error message when the CLI is not logged in and no API key is provided

***

# v0.9.1

*February 4, 2026*

## Fixes

* Error messages are properly flushed to the console, ensuring outputs are always visible in CI

***

# v0.9.0

*January 27, 2026*

`v0.9.0` is a major release replacing the schema-push workflow with a single `miru release create` command that handles releases, schemas, and Git metadata in one step. Also adds API key authentication for CI/CD use.

## `miru release create`

The `miru schema push` command has been replaced by [miru release create](/references/cli/release-create), which bundles the entire release process into a single command. [CUE packages](/references/cli/release-create#cue-packages) are now supported, allowing schemas to span multiple files.

```bash theme={null}
miru release create --version v1.0.0 schema.json
```

## API key authentication

The CLI now supports authentication via API keys using the `MIRU_API_KEY` environment variable, enabling non-interactive use in CI/CD pipelines.

Visit the [CI/CD guide](/developers/ci/overview) for more information on using the CLI in CI/CD pipelines.

## Improvements

* Improved error messages to be more descriptive and readable

## Retired

* Retired the `miru schema push` command

***

# v0.8.0

*December 18, 2025*

`v0.8.0` is a cleanup release removing deprecated flags from `miru schema push` ahead of the v0.9.0 command replacement.

## Breaking changes

**Schema push command**

* Removed the `--version` flag
* Removed the `--allow-duplicate` flag

```diff theme={null}
miru schema push schema.json \
-   --version v1.0.0 \
-   --allow-duplicate
```

***

# v0.7.0

*December 4, 2025*

`v0.7.0` introduces first-class CUE support and updates the schema push workflow to support multiple schema languages.

## CUE support

`v0.7.0` is the first CLI release with [CUE](/cfg-mgmt/primitives/schemas/languages/overview) support. You can now push CUE-based schemas directly and use CUE alongside existing JSON Schema workflows.

## Schema push improvements

* Added the `--language` flag to `miru schema push` to specify schema language
* Added the `--allow-duplicate` flag to `miru schema push` to allow multiple schemas with the same content
* Schemas uploaded to Miru are now preserved exactly as defined, including original ordering, spacing, and comments

## Other improvements

* Improved readability of error messages
* Users are notified when the CLI version is out of date

## Breaking changes

**Version flag**

The `--version` flag is now required when pushing a schema, and JSON Schema annotations were renamed:

```diff theme={null}
- "$miru_config_type_slug": "my-config"
- "$miru_instance_filepath": "/etc/myapp/config.json"
+ "x-miru-config-type": "my-config"
+ "x-miru-instance-filepath": "/etc/myapp/config.json"
```

**Instance file path**

* Removed the ability to update the instance file path for an existing schema

## Retired

* Removed the `miru instance to jsonschema` command
