OhhO OS
Python package ohho-os (import ohho), version 1.1.2. The ohho console
script is installed by pip install -e ..
The badge reads .github/workflows/ci.yml on
ohho-robotics/ohho-sdk.
That workflow has not run for this tree yet.
Three commands
pip install -e .
ohho doctor
ohho sim --robot omnibot --seconds 2
pip install -e . installs the dependency-free base (stdlib only) and the
ohho script. ohho doctor prints the interpreter, the runtimes and
adapters it can import, and the built-in robot ids. ohho sim connects
with transport sim:// and runtime native, then drives an in-process
pattern for the given number of seconds.
On this machine (Python 3.12.3, Linux, base install) both commands exited 0.
ohho doctor reported runtime native, adapter sim, and robots
omnibot, sim, unitree-go2.
Tests
python -m unittest discover -s tests
Same environment as above:
Ran 197 tests in 22.971s
OK (skipped=18)
The 18 skips were: 4 hardware-in-the-loop tests (OHHO_HIL unset),
13 tests that need agent_engine and numpy, and 1 test that needs
fastapi ([serve]). No failures.
CI runs that discover command, then ohho doctor and
ohho sim --robot omnibot --seconds 2, on Ubuntu, macOS, and Windows
for Python 3.10, 3.11, 3.12, and 3.13. This commit does not include a
GitHub Actions result for those cells.
Needs hardware
ohho doctor, ohho sim --robot omnibot, and the default test run do
not open a serial port, a camera, or a GPU. The simulator is in-process.
tests/hil/ talks to real robots. Every test in that package is
skipped unless OHHO_HIL=1. The ports they use:
| Test | Device | Environment variable | Default |
|---|---|---|---|
| OmniBot base | Yahboom serial | OHHO_OMNIBOT_PORT |
/dev/ttyUSB0 |
| OmniBot arm | Feetech bus | OHHO_OMNIBOT_ARM |
/dev/ttyACM0 |
| OmniBot base + arm | both of the above | both | both defaults |
| Unitree Go2 | DDS interface | OHHO_GO2_IFACE |
eth0 |
Those adapters are not installed by pip install -e .. The extras are
serial (pyserial), arm (lerobot), and unitree (cyclonedds). The
ros2 extra does not pip-install rclpy; that module comes from a ROS 2
distro. train needs torch. None of those were installed for the test
run above.
TypeScript
ts/ is the previous TypeScript workspace (package.json,
tsconfig.json, packages/), moved with the same file contents. It does
not typecheck. tsc --noEmit -p ts/tsconfig.json (TypeScript 5.6.3)
exits with 246 error TS diagnostics, including missing modules
(react, vitest, @/lib/...) and files that are not in this tree
(packages/schemas/src/types.ts, packages/schemas/src/robot-catalog.ts).
See ts/AGENTS.md. Paths in that file still describe the old repository
root.
Licence
Apache-2.0. The full text is LICENSE.
Releasing
git tag v1.1.2
git push origin v1.1.2
v1.1.2 matches version in pyproject.toml. .github/workflows/release.yml runs on tags matching v*. It fails the release when the tag version and that version differ, checks every classifier against trove-classifiers, builds the sdist and wheel with python -m build, runs twine check, and publishes to PyPI with trusted publishing (pypa/gh-action-pypi-publish, environment: pypi, no API token). A following job, in a fresh virtualenv on Ubuntu and macOS, retries pip install ohho-os==<tag version> until that version is installable, then runs ohho doctor.
Tag v1.1.1 already points at 286d408 and was not published. PyPI returned 400 because Topic :: Scientific/Engineering :: Robotics is not a trove classifier. That tag stays. v1.1.2 has not been pushed.
Metadata
Release files for ohho-os 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ohho_os-1.1.2.tar.gz | 84.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ohho_os-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.2 kB
Release files / ohho_os-1.1.2.tar.gz
| Download URL | ohho_os-1.1.2.tar.gz |
|---|---|
| Size | 84.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ebe7cf664933acfa334a4370a70bf235f9614e861604ef721d1f92c9bdcde58
|
|
BLAKE2b-256 checksum How to use checksums |
eccc63f80a00b1b5425b1cfba941c0b398f64ac8c4463ce6654e218241ba2f3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / ohho_os-1.1.2-py3-none-any.whl
| Download URL | ohho_os-1.1.2-py3-none-any.whl |
|---|---|
| Size | 79.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e0c2170f3442e8ad42c8da6468d7b67ab8c53a0fc56651c01aefe0e3be34518
|
|
BLAKE2b-256 checksum How to use checksums |
43a2d2409b9ce9f352b8bcdaeb1085edc1d1964ec40e00cd011388f7bdaa4cb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log