The open engine
for any robot.
OhhO OS is the open-source, robot-agnostic engine the whole platform runs on. One runtime controls anything on wheels, legs or wings — with or without ROS — and carries the entire stack from perception to training. It is the engine under every OhhO product, and it is yours to install, self-host and extend.
What's in the box
Six adapters, two runtimes, a real agent brain, the record→train→serve loop, a skill market, hardware profiles, and ten CLI commands — 151 tests, 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.
Write a behavior once and run it on a wheeled base, a quadruped, a humanoid or an arm. Capability-typed commands mean swapping hardware never means rewriting your application.
Other frameworks stop at control. OhhO OS also carries the agent brain, data collection, training, serving, and skills — the same engine from first prototype to deployed fleet.
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. 151 tests passing. Self-host every line, bring your own models and data, and move to OhhO Cloud only when you want managed GPUs, training and fleet operations.
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.
- ▸Zero setup friction — pip install and go, no ROS distro
- ▸Lightweight, fast cold start, fewer moving parts
- ▸Pure Python — no workspaces, colcon or launch files
- ▸Talks DDS, MAVLink and firmware directly
- ▸Runs anywhere Python runs
- ▸The entire mature ROS ecosystem — Nav2, SLAM, MoveIt 2
- ▸ros2_control, RViz, and thousands of community packages
- ▸Battle-tested multi-node / multi-machine over DDS
- ▸Industry-standard integration with existing fleets
- ▸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 — any OS | Ubuntu 24.04 + ROS 2 Jazzy |
| Drive · teleop · telemetry | yes | yes |
| Agent (Mind) · Train · Data · Serve | yes | yes |
| Direct DDS / MAVLink / firmware | native | via bridge |
| 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 | partial | yes (DDS) |
| Tooling | Foxglove | RViz + Foxglove + ecosystem |
| Footprint / cold start | light / fast | heavy |
| OS support | Windows · macOS · Linux | Linux |
One engine, every robot
A capability model describes what a robot can do — not how it does it — so the same code runs across wildly different hardware, degrading gracefully when a capability is absent. Adapters translate each robot's native protocol underneath.
Nineteen products. One engine.
Every OhhO product — from Build and Train to Autonomy, Mind and Fleet — is a console that runs on OhhO OS. Use the open engine on its own, or sign in to OhhO Cloud for the managed, hosted experience on top.
Explore all 19 products →From install to a moving robot
- 1Install
pip install 'ohho-os[base]' — add [serial], [arm], [unitree], [agent], [train], [serve] or [ros2] as you need them.
- 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.