Ohho is the open harness layer for physical AI. Bring any model, we make it run on a real robot.
Simulation (Gazebo) → Data (VR teleop into LeRobot datasets) → Policy runtime (OpenVLA, SmolVLA, RL over ROS 2) → Safety guards → Deployment (ohho-os). The robot you can inspect today is OmniBot.
Website · LinkedIn · Documentation · Demos
OmniBot (Apache-2.0) is the public robot repository. Photos and short clips are in assets/: demo 1 and demo 2. The OmniBot README documents the hardware (Raspberry Pi 5, Yahboom expansion board, SO-101 arm).
What the latest green CI run of .github/workflows/ci.yml checked:
- CPU tests and ruff. Pytest for
mecanum-kinematics/tests,yahboom-python-driver/tests,ros2-bev-stitcher/tests, andomnibot_arm/test, plus the learning, agent, and data engine tests underomnibot-ai-engines. - colcon build and test.
src/is the colcon workspace (symlinks to the ROS 2 packages). That job runs in theros:jazzy-ros-base-noblecontainer named in the workflow file.
What is in the tree:
- omnibot-ros2 — ROS 2 packages
omnibot_driver,omnibot_bringup,omnibot_navigation,omnibot_arm,omnibot_description, andomnibot_hybrid. Launch files, includingrobot_with_joy.launch.pyandperception.launch.py, are inomnibot_bringup/launch. - omnibot-ai-ros2 — ROS 2 packages
omnibot_vla,omnibot_lerobot(includingteleop_recorder_node.py),omnibot_rl, andomnibot_orchestration. - omnibot-ai-engines — Python packages
agent_engine,data_engine,learning_engine,lerobot_engine,rl_engine, andvla_engine. - omnibot-digital-twin — configs, scripts, and world file
omnibot_lab.sdf. - omnibot-vr and omnibot-android — client trees kept inside this repository. The standalone repos are below.
ohho-os is OhhO OS: the Python package ohho-os (Apache-2.0). pyproject.toml sets name = "ohho-os". The v1.1.2 release run completed successfully, and the 1.1.2 project page is the published distribution.
pip install ohho-os
ohho doctor
ohho sim --robot omnibot --seconds 2ohho doctor and ohho sim --robot omnibot --seconds 2 are the CLI smoke steps in .github/workflows/ci.yml. The latest CI run on main succeeded.
The TypeScript workspace in ohho-sdk is not published to npm. package.json sets "private": true.
@ohho/connect— adapter sourceswebserial.ts,webbluetooth.ts,rosbridge.ts, andyahboom.ts.@ohho/schemas— schema sources.package.jsondepends onzod.@ohho/mcp— MCP tool modules andregistry.ts.@ohho/client—OhhOClientis an empty class.
OhhO-VR (Apache-2.0) is a Unity project (Assets, Packages, and ProjectSettings at the repo root). Its README documents a Meta Quest teleop client for OmniBot over ROSBridge. Vendored packages keep their own licences (NOTICE).
ohho.apk (Apache-2.0) is a Kotlin Gradle project. Its README documents an Android ROSBridge controller for OmniBot and which on-screen values are demo data. Android CI runs ./gradlew assembleDebug test. The latest run on main succeeded.
ohho-humanoid, ohho-quadruped, and ohho-drone are concept — not started. Each README says the repository does not contain a robot stack, and there is no quick-start command for them.
These are directories in OmniBot, not separate repositories. The CPU job linked above tests all three.
| Directory | What the code is |
|---|---|
mecanum-kinematics |
Mecanum wheel kinematics (C++ header and a Python package). Apache-2.0 LICENSE in that directory. |
ros2-bev-stitcher |
ROS 2 node that warps several cameras into one bird's-eye view. Tests are in tests/. |
yahboom-python-driver |
Serial protocol encoder/decoder for Yahboom expansion boards. Tests are in tests/. |
CPU demo from ohho-os CI. No robot, ROS install, or container is required:
pip install ohho-os
ohho doctor
ohho sim --robot omnibot --seconds 2In OmniBot, src/ is the colcon workspace. The colcon job builds that path.
See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.
This repository is Apache-2.0. The public repositories linked above are Apache-2.0; each Apache-2.0 link points at that repository's LICENSE file. Vendored third-party code keeps its own licence (OhhO-VR NOTICE, OmniBot NOTICE).

