Intro
Welcome to the OpenMind OS (OM1) Developer Guide — your essential resource for building, configuring, and managing agents within the OM1 runtime environment.
This guide offers an overview of the OM1 agent runtime system, helping developers understand its core components and workflows.
Inside, you’ll find detailed explanations of OM1’s CLI commands, recommended project structure, step-by-step instructions for adding new actions, and guidance on configuring your agent for different environments. Additionally, the guide includes practical development tips to streamline your workflow, along with a reference to optional environment variables that can be used to customize the runtime behavior of your agents.
Whether you’re just getting started with OM1 or looking to optimize an existing project, this guide will equip you with the tools and best practices to develop, deploy, and maintain high-performance agents.
CLI
The OpenMind OS provides a command-line interface (CLI) to manage agents and projects.
The main entry point is src/run.py
which provides the following commands:
start
: Start an agent with a specified config
-
config_name
: Name of the config file (without .json5 extension) in the config directory -
--debug
: Optional flag to enable debug logging
Linting and Testing
Maintaining code quality and ensuring your agents work correctly is crucial when developing with OpenMind OS (OM1). This section covers recommended linting and testing practices to help you catch errors early, maintain code consistency, and validate agent behavior before deployment.
To check/format your code, run:
To automatically run the lint check before committing, install pre-commit and execute pre-commit install
. This ensures that pre-commit checks run before each commit. Additionally, you can manually trigger all checks by running pre-commit run --all-files
.
Unit Testing
To unit test the system, run:
Use type hints
and docstrings
for better code maintainability.
Adding New Actions
Actions are the core capabilities of an agent. For example, for a robot, these capabilities are actions such as movement and speech. Each action consists of:
- Interface (
interface.py
): Defines input/output types. - Implementation (
implementation/
): Business logic, if any. Otherwise, use passthrough. - Connector (
connector/
): Code that connectsOM1
to specific virtual or physical environments, typically through middleware (e.g. custom APIs,ROS2
,Zenoh
, orCycloneDDS
)
Example action structure:
In general, each robot will have specific capabilities, and therefore, each action will be hardware specific. For example, if you are adding support for the Unitree G1 Humanoid version 13.2b, which supports a new movement subtype such as dance_2
, you could name the updated action move_unitree_g1_13_2b
and select that action in your unitree_g1.json
configuration file.
Was this page helpful?