With a valid concrete config for Robot 1 available for the v1 schema of the Mobility config, it’s time to deploy.

SDK in Development

To begin using the Miru C++ SDK, navigate to the /cpp directory of the getting-started repository cloned at the beginning of the guide.

Build the CMake project (you can find the build requirements here).

cmake -B build -S .
cmake --build build

The from_file example demonstrates how to use the SDK in development by loading a concrete config from a file on the local file system.

./build/examples/from_file/from-file

The example simply reads in a concrete config from the file system and lists the parameters inside. You should see the following output:

$ ./build/examples/from_file/from-file

Printing Parameters From File
=============================
Name: mobility.max_angular_speed_radps
Key: max_angular_speed_radps
Type: scalar
Value: "1.0"

Name: mobility.max_linear_speed_mps
Key: max_linear_speed_mps
Type: scalar
Value: "1.2"

Name: mobility.navigation_mode
Key: navigation_mode
Type: scalar
Value: "balanced"

Name: mobility.obstacle_avoidance_enabled
Key: obstacle_avoidance_enabled
Type: scalar
Value: "true"

Name: mobility.telemetry.heartbeat_interval_sec
Key: heartbeat_interval_sec
Type: scalar
Value: "10"

Name: mobility.telemetry.upload_interval_sec
Key: upload_interval_sec
Type: scalar
Value: "60"

Miru Agent

To use the Miru SDK in production, the agent must be installed and activated. Before installing, double check your platform is supported.

The Miru agent has been tested and verified to work on the following operating systems.

  • Ubuntu 20.04 LTS
  • Ubuntu 22.04 LTS
  • Ubuntu 24.04 LTS
  • NVIDIA Jetson (JetPack 5.1)
  • NVIDIA Jetson (JetPack 6.1)
  • Raspberry Pi OS (64-bit)

Other Linux distributions and versions should also work, but have not been explicitly tested.

Install

Run the following installation command in your terminal.

curl -fsSL https://raw.githubusercontent.com/miruml/agent/main/manual-install.sh | sh

The script requires curl to be installed and sudo privileges may be required.

Review the contents of the installation and activation scripts here.

The script downloads the Miru agent debian package and installs the agent as a systemd service. It then downloads and executes the activation script, waiting for a client activation token to be provided.

To retrieve a client activation token, navigate to the Clients page and click the ellipses (three dots) to the right of the client to activate.

Click the Token tab and copy the token.

Paste the token into the activation script.

To authenticate the miru agent, you'll need to retrieve the authentication token from https://configs.miruml.com/clients for the client you want to authenticate as.

 Enter Authentication Token › *******

A message will confirm that the agent has been activated for the specified client.

Successfully activated the miru agent as the Robot 1 client!

Verify

Invoke the agent’s test endpoint to verify the installation.

sudo curl --unix-socket /run/miru/miru.sock http://localhost/v1/test

You should see something similar to the following

{"server":"miru-config-agent","status":"ok"}

SDK in Production

Navigate back to the /cpp directory of the getting-started repository.

The from_agent example demonstrates how to use the SDK in production by loading a concrete config from the Miru agent.

./build/examples/from_agent/from-agent

As before, the example simply reads in a concrete config from the agent and lists the parameters inside. You should see the following output:

$ ./build/examples/from_agent/from-agent

Parameters from Agent
=====================
Name: mobility.max_angular_speed_radps
Key: max_angular_speed_radps
Type: int
Value: 2

Name: mobility.max_linear_speed_mps
Key: max_linear_speed_mps
Type: double
Value: 2.500000

Name: mobility.navigation_mode
Key: navigation_mode
Type: string
Value: "aggressive"

Name: mobility.obstacle_avoidance_enabled
Key: obstacle_avoidance_enabled
Type: bool
Value: false

Name: mobility.telemetry.heartbeat_interval_sec
Key: heartbeat_interval_sec
Type: int
Value: 15

Name: mobility.telemetry.upload_interval_sec
Key: upload_interval_sec
Type: int
Value: 45

For more information on the Miru C++ SDK, visit the SDK Reference documentation. In depth SDK usage examples can be found in the official C++ SDK repository.