Skip to main content

Cloud Docker Management Service

The cloud docker management service allows remote management of Docker containers via a web interface. To enable this service, follow these steps:

Step 1: Sign up

Sign up for an account on OpenMind Portal.

Step 2: Get OpenMind API key

Get you API key from the Dashboard page.

Step 3: Set the API key

Set your API key as an environment variable in your Bash profile:
vim ~/.bashrc
Add the following lines:
export OM_API_KEY="your_api_key_here"

Step 4: Get the API Key ID

Get API_KEY_ID from the Dashboard page. The API Key ID is a 16-digit character string, such as om1_live_<16 characters>. Now, export the API Key ID as an environment variable:
vim ~/.bashrc
export OM_API_KEY_ID="your_api_key_id_here"
Reload your Bash profile:
source ~/.bashrc

Step 5: Setup OTA Update Services

To enable the Over-The-Air (OTA) update service for Docker containers, you need to set up two docker services: ota_agent and ota_updater. These services will allow you to manage and update your Docker containers remotely via the OpenMind Portal. To create a ota_updater.yml file, follow these steps:
cd ~
vim ota_updater.yml
Copy the content from the ota_updater.yml template to ota_updater.yml file.
Note: You can use the stable version as well. The file example provided is the latest version.
Save and close the file (:wq in vim). Start OTA Updater Service
docker-compose -f ota_updater.yml up -d
A .ota directory will be automatically created in your home directory to store OTA configuration files. Now, you can set up the ota_agent service. Create an ota_agent.yml file: Navigate to the OTA directory:
cd ~/.ota
vim ota_agent.yml
Copy the content from the ota_agent.yml template to ota_agent.yml file.
Note: You can use the stable version as well. The file example provided is the latest version.
Save and close the file. Start OTA Agent Service
docker-compose -f ota_agent.yml up -d
Verify both services are running:
docker ps | grep ota_updater
docker ps | grep ota_agent
Expected output: Both ota_updater and ota_agent containers listed. You can now manage and update your Docker containers remotely via the OpenMind Portal.

Model Downloads

Riva Models

Riva models are encrypted and require authentication to download. To download Riva models, you need to set up the NVIDIA NGC CLI tool.

Install NGC CLI

⚠️ Warning: Run the following commands in your root directory (cd ~). Otherwise, Docker Compose may not locate the required files.
To generate your own NGC api key, check this video.
wget --content-disposition https://ngc.nvidia.com/downloads/ngccli_arm64.zip && unzip ngccli_arm64.zip && chmod u+x ngc-cli/ngc
find ngc-cli/ -type f -exec md5sum {} + | LC_ALL=C sort | md5sum -c ngc-cli.md5
echo export PATH=\"\$PATH:$(pwd)/ngc-cli\" >> ~/.bash_profile
source ~/.bash_profile
ngc config set
This will ask several questions during the install. Choose these values:
Enter API key [no-apikey]. Choices: [<VALID_APIKEY>, 'no-apikey']: <YOUR_API_KEY>
Enter CLI output format type [ascii]. Choices: ['ascii', 'csv', 'json']: ascii
Enter org [no-org]. Choices: ['<YOUR_ORG>']: <YOUR_ORG>
Enter team [no-team]. Choices: ['<YOUR_TEAM>', 'no-team']: <YOUR_TEAM>
Enter ace [no-ace]. Choices: ['no-ace']: no-ace
⚠️ Warning: NGC CLI creates a .bash_profile file if it doesn’t exist. If you already have a .bashrc file, merge them manually to avoid losing your bash configuration.
ngc cli will create a .bash_profile file if it does not exist. If you already have a .bashrc file, please make sure to merge the two files properly. Otherwise, your bash environment may not work as expected.

Download Riva Models

Download Riva Embedded version models for Jetson 7.0:
ngc registry resource download-version nvidia/riva/riva_quickstart_arm64:2.24.0
cd riva_quickstart_arm64_v2.24.0
sudo bash riva_init.sh
This will ask the NGC api key to download the model, use <YOUR_API_KEY>. It will take a while to download.
Note: The following command is for testing.
Run Riva locally:
cd riva_quickstart_arm64_v2.24.0
bash riva_start.sh
Now, please expose these environment variables in your ~/.bashrc file to use Riva service:
export RIVA_API_KEY=<YOUR_API_KEY>
export RIVA_API_NGC_ORG=<YOUR_ORG>
export RIVA_EULA=accept
source ~/.bashrc

OpenMind Riva Docker Image for Jetson

We created a openmindagi/riva-speech-server:2.24.0-l4t-aarch64 docker image that has Riva ASR and TTS endpoints with example code to run Riva services on Jetson devices. You can pull the image directly without downloading the models from NGC:
docker pull openmindagi/riva-speech-server:2.24.0-l4t-aarch64
The dockerfile can be found here and the docker-compose file can be found here.
Note: Once you download the models from NGC and export the environment variables, you can use OpenMind Portal to download Riva dockerfile and run Riva services.

Test Riva Services

Once you have Riva services running, you can use the following script to test the ASR and TTS endpoints:
git clone https://github.com/OpenMind/OM1-modules.git

cd OM1-modules

# Activate poetry shell
poetry shell

# Install dependencies
poetry install

# Test ASR
python3 -m om1_speech.main --remote-url=ws://localhost:6790

# Test TTS
poetry run om1_tts --tts-url=https://api-dev.openmind.org/api/core/tts --device=<optional> --rate=<optional>

Port Reference

Services use the following ports:
PortServicePurpose
1935MediaMTX RTMP ServerVideo streaming
6790Riva ASR WebSocketSpeech recognition API
6791Riva TTS HTTPText-to-speech API
8000MediaMTX RTMP APIRTMP control
8001MediaMTX HLS APIHLS streaming
8554MediaMTX RTSPRTSP streaming
8860Qwen 30B QuantizedLLM inference
8880Kokoro TTSTTS engine
8888MediaMTX StreamingStreaming control
50000Riva Server APIInternal Riva API
50051Riva NMT Remote APIRemote TTS/ASR APIs

Troubleshooting

IssueSolution
OTA services won’t startCheck API key is correct: echo $OM_API_KEY
NGC CLI not foundVerify PATH: echo $PATH includes ngc-cli directory
Riva models download failsConfirm NGC API key is valid and you have quota
Port already in useCheck what’s running: sudo lsof -i :PORT_NUMBER
Docker permission deniedAdd user to docker group: sudo usermod -aG docker $USER