NVIDIA OSMO - Developer Guide
February 26, 2026 ยท View on GitHub
For developers who want to try out OSMO or test out their changes, this guide will demonstrate how to run OSMO using Bazel:
Prerequisites
Install the required tools for developing OSMO.
Set the following environment variables:
export HOST_IP=$(ifconfig | grep "inet " | grep -Fv 127.0.0.1 | grep 10. | awk '{print \$2}' | head -1)
Compile OSMO with Bazel
Bazel mode runs OSMO services directly as local processes using bazel, providing faster iteration for development.
Start OSMO Services
bazel run @osmo_workspace//run:start_service -- --mode bazel
This command:
- Creates postgres, redis, and localstack-s3 docker containers if they do not exist
- Starts core OSMO services (osmo, router) using bazel and the UI using pnpm (from
src/ui/)
Start OSMO Backend
After OSMO services are started, start the backend:
bazel run @osmo_workspace//run:start_backend -- --mode bazel
This command:
- Checks for a KIND backend cluster that can be used for compute
- If one is not accessible, a new KIND cluster is created for compute
- Starts backend operators (listener, worker) using bazel
Update Configuration
bazel run @osmo_workspace//run:update_configs -- --mode bazel
This command:
- Updates workflow configuration with local development settings
- Configures object storage endpoints and credentials
- Sets up backend image configurations
- Sets the default pool for the user profile
Access OSMO
The OSMO UI and APIs can be accessed at: http://$HOST_IP:8080
Next steps
Log into OSMO using the CLI:
bazel run @osmo_workspace//src/cli -- login http://$HOST_IP:8000 --method=dev --username=testuser
Test your setup with hellow_world.yaml:
bazel run @osmo_workspace//src/cli -- workflow submit ~/path/to/osmo/cookbook/tutorials/hello_world.yaml
The workflow should successfully submit and run to a "completed" state.