The open engine
for any robot.
OhhO OS 1.1.2 is ohho-os on PyPI. Engine: ohho-os. Client SDK: ohho-sdk. First robot: OmniBot, in simulation. There is no hosted service.
Concept render — not footage of OmniBot
What's in the box
Six adapters, two runtimes, a real agent brain, the record→train→serve loop, a skill-registry prototype, hardware profiles, and the checked CLI commands. Apache-2.0.
sim, serial base, bus-servo arm, DDS-native, ROS 2 topics, and composite (base+arm merge). Native runtime or ROS 2 — auto-detects which is available.
HarnessBrain wires agent_engine — perceive→reason→act→reflect with LLM tool-calling. Tools built automatically from robot capabilities. ScriptedBrain fallback needs zero deps.
Recorder captures 9-D state+action to LeRobot v2.0. finetune() delegates to lerobot_engine (smolvla/act/diffusion/openvla). FastAPI server with /predict endpoint.
@skill decorator, ohho market list/run, 4 built-in skills (patrol, wave, stop, status). Capability-gated — a skill that needs manipulation won't run on a base-only robot.
5 built-in profiles (pi_workstation, jetson_single, workstation_single, mac_dev, edge_cpu). ohho profile detect auto-detects your machine. device="auto" everywhere.
ohho doctor list version connect sim drive agent serve market profile — everything from diagnostics to serving a policy, from one command.
Built differently from the rest
The market is full of robot frameworks and "agentic OS" projects. Here is what sets OhhO OS apart — no asterisks, no lock-in.
Most agentic robot stacks force a choice: go all-in on ROS, or abandon it entirely. OhhO OS runs both ways — a lightweight pure-Python runtime or the full ROS 2 stack — and you switch with a single argument. get_runtime("auto") detects ROS 2 automatically.
OmniBot is supported today with capability-typed commands. Adding future form factors — quadrupeds, humanoids, or other arms on the roadmap — never means rewriting your application.
Other frameworks stop at control. OhhO OS also carries the agent brain, data collection, training, serving, and skills — one unified engine across your development lifecycle.
A continuous perceive → reason → act → reflect loop powered by agent_engine with an LLM tool-calling reasoner. Tools are built automatically from the robot's capabilities. ScriptedBrain fallback needs zero deps.
Record demonstrations → fine-tune VLA policies (SmolVLA, ACT, diffusion, OpenVLA) → serve over REST → close the loop. All with device="auto" hardware detection. Mock mode for sim loops — no GPU needed.
Apache-2.0 licensed. The package is ohho-os on PyPI. There is no hosted service.
Run with ROS, or without it
OhhO OS ships two runtimes behind one identical API. Pick what fits — and switch later by changing a single argument. Your agent, training and application code never change.
- ▸pip install ohho-os from PyPI
- ▸Lightweight, fast cold start, fewer moving parts
- ▸Pure Python — no workspaces, colcon or launch files
- ▸Yahboom serial and ROS 2 topics; other protocols are roadmap
- ▸Runs anywhere Python runs
- ▸The entire mature ROS ecosystem — Nav2, SLAM, MoveIt 2
- ▸ros2_control, RViz, and thousands of community packages
- ▸Multi-machine distribution is not built
- ▸Simulation today is the public Gazebo lab world. Isaac Sim is not built.
- ▸The most capable navigation and manipulation stacks
No wrong choice. Start native today and graduate to ROS 2 later — Robot.connect("omnibot", runtime="ros2") — without touching the rest of your code.
| Capability | No-ROS | ROS 2 |
|---|---|---|
| Install | pip install ohho-os | pip install ohho-os |
| Drive · teleop · telemetry | yes | yes |
| Agent (Mind) · Train · Data · Serve | yes | yes |
| DDS / MAVLink | roadmap | roadmap |
| Lightweight nav (built-in A*) | yes | yes |
| Nav2 full navigation | no | yes |
| SLAM (slam_toolbox / 3-D) | basic | yes |
| MoveIt 2 manipulation | no | yes |
| Multi-machine distribution | not built | not built |
| Simulation | public Gazebo lab world | public Gazebo lab world; Isaac not built |
| Tooling | Foxglove | RViz + Foxglove + ecosystem |
| Footprint / cold start | light / fast | heavy |
| OS support | Windows · macOS · Linux | Linux |
OmniBot today. More robots on the roadmap.
A capability model describes what a robot can do — not how it does it. OmniBot is supported today; other robot form factors and native protocol adapters are on the roadmap.
One engine. OmniBot today.
The engine does not power twenty shipped products. It drives OmniBot. The other product pages are prototypes or roadmap. There is no hosted service.
Read the product pages →From install to a moving robot
- 1Install
pip install ohho-os. The package is on PyPI. Engine: github.com/ohho-robotics/ohho-os. Client SDK: github.com/ohho-robotics/ohho-sdk. There is no ohho-os[base] extra.
- 2Connect
Robot.connect("omnibot") auto-detects the runtime, or pass transport="sim://" / "serial://" / "dds://" / "ros2://".
- 3Control
bot.drive(vx=0.2), bot.move_joints([...]), bot.telemetry() — same API on any robot. Capability-gated, safe no-ops.
- 4Automate
Agent(bot).run("explore the room") — perceive→reason→act→reflect loop with LLM tool-calling.
- 5Train & Serve
Recorder → finetune() → ohho serve — record→train→serve loop with mock mode for sim (no GPU needed).
- 6Skills
ohho market list / ohho market run omnibot patrol — 4 built-in skills, or write your own with @skill.