| title | Installation Guide |
|---|---|
| description | Learn how to install, set up and configure OM1. |
| icon | play |
- Linux (Ubuntu 20, 22, 24)
- MacOS 12.0+
- Sufficient memory to run vision and other models
- Reliable WiFi or other networking
- Sensors such as cameras, microphones, LIDAR units, IMUs
- Actuators and outputs such as speakers, visual displays, and movement platforms (legs, arms, hands)
- Hardware connected to the "central" computer via
Zenoh,CycloneDDS, serial, usb, or custom APIs/libraries
Ensure you have the following installed on your machine:
Go>= 1.25.0 (installation guide)makebuild toolportaudiofor audio input and outputffmpegfor video processing- Get your OpenMind API key here
# macOS
brew install go
# Linux - download from https://go.dev/dl/ or use your package manager
sudo apt-get update
sudo apt-get install golang-goFor other platforms, download from https://go.dev/dl/
For audio functionality, install portaudio:
# macOS
brew install portaudio
# Linux
sudo apt-get update
sudo apt-get install portaudio19-devFor video functionality, install FFmpeg:
# macOS
brew install ffmpeg
# Linux
sudo apt-get update
sudo apt-get install ffmpegTo install Rust and Cargo (required for building SDKs like cdp-sdk), follow the steps below
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envOM1 provides a command-line interface (CLI). The main entry point is the om1 binary built from cmd/main.go which provides the following options:
CONFIG=[config_name] make runconfig_name: Name of the config file (without.json5extension) in the/configdirectory.
For development with debug logging:
CONFIG=[config_name] make dev- Clone the repository
Run the following commands to clone the repository and set up the environment:
git clone https://github.com/OpenMind/OM1.git
cd OM1
make deps
make buildWhat these commands do:
make deps- Downloads and installs all Go module dependencies, fetches the zenoh-c library, and ensures your environment is ready for building.make build- Compiles the OM1 binary from source code.
Dependencies are managed via Go modules (go.mod and go.sum).
Adding New Dependencies
To add a new Go package:
go get <package> # Add the dependency
make deps # Tidy and verify modulesBest Practices:
- Keep dependencies minimal and prefer well-maintained packages
- Run
make checkbefore committing (runs fmt, vet, lint, and test) - Use
make fmtto format code andmake lintto check for issues
- Set the configuration variables
Locate the config folder and add your OpenMind API key to /config/conversation.json5 (for example). If you do not already have one, you can obtain a free access key at https://portal.openmind.com/.
# /config/conversation.json5
...
"api_key": "om1_live_..."
...Or, create a .env file in the project directory and add the following:
Note: Using the placeholder key openmind_free will generate errors.
OM_API_KEY=om1_live_...- Run the Conversation Agent
Run the following command to start the Conversation Agent:
CONFIG=conversation make runNote: Agent configuration names are only required when switching between different agents.
The conversation agent is just an example agent configuration.
If you want to interact with the agent and see how it works, make sure ASR and TTS are configured in conversation.json5.
ASR configuration (check in agent_inputs)
{
"type": "GoogleASRInput"
}TTS configuration (check in agent_actions)
{
name: "speak",
llm_label: "speak",
connector: "elevenlabs_tts",
config:
{
voice_id: "i4CzbCVWoqvD0P1QJCUL",
"silence_rate": 20,
},
}During the first build, the system will automatically download the zenoh-c library and resolve all Go dependencies. This process may take several minutes to complete.
If you have Docker installed, you can use the included Docker Compose configuration to spin up Grafana and Prometheus to monitor real-time AI pipeline metrics (such as LLM response times and ASR latencies).
Run the following command:
docker-compose up -d grafana prometheusThen navigate to http://localhost:3000 (default login: admin/admin). The OM1 Latency Monitoring dashboard is automatically provisioned and will display your latency metrics as you interact with the agent.
OM1 writes structured (JSON) logs using zap. At the default info level you see the high-level loop; run with make dev (or -log-level debug) for the full prompt, LLM response, and per-action detail.
The logs show one turn of the core loop — how the conversation agent senses its environment, calls the LLM, and dispatches actions:
- Inputs (e.g.
GoogleASRInputfor speech,VLMGeminifor vision) produce observations. - The State Fuser combines them into a single natural-language prompt.
- The cortex ticks: it sends that prompt to the configured
cortex_llmand receives a set of action calls. - Actions (e.g.
speak,emotion) are dispatched to their connectors. - Latencies are exported to Prometheus/Grafana (see below).
A representative run looks like this (fields abbreviated):
{"level":"info","ts":1749590400.12,"caller":"runtime/runtime.go","msg":"cortex loop started"}
{"level":"info","ts":1749590401.34,"caller":"runtime/runtime.go","msg":"cortex tick","mode":"conversation","prompt":"You see a person in front of you. They said: \"Give me your paw!\""}
{"level":"debug","ts":1749590401.98,"caller":"llm/gemini.go","msg":"llm response","actions":[{"name":"speak","value":"Hello, let's shake paws!"},{"name":"emotion","value":"happy"}]}
{"level":"debug","ts":1749590402.01,"caller":"actions/action.go","msg":"dispatching action","name":"speak","connector":"elevenlabs_tts"}Note: The exact prompt and actions depend on your agent config (
system_prompt_base,agent_inputs,agent_actions) and on what the sensors observe. Theconversationagent ships as a friendly dog named "Spot".
There are more pre-configured agents in the /config folder. They can be run with the following command:
For example, to run the greeting_conversation agent:
CONFIG=greeting_conversation make runIf you configure a custom agent, replace <agent_name> with your agent and run the below command:
CONFIG=<agent_name> make runTo get started with development, refer here