A system substrate for building embodied intelligence across heterogeneous robots.
Robonix
Robonix is an operating system for embodied intelligence. It explores how to
construct a robot’s “brain” at the system level: a common substrate on which
models can perceive, understand, plan, and act through heterogeneous robot
bodies without being rewritten around every vendor SDK.
Robonix treats AI models and skills as programs and exposes robot hardware as
discoverable capabilities. This separation lets robot developers integrate a
body once, while model and skill developers build against shared interfaces for
cameras, lidar, chassis, arms, mapping, navigation, speech, and other
capabilities. The long-term goal is simple: train once, deploy on any robot.
[!WARNING]
Robonix is in early development. APIs and internal designs may change before
a versioned release.
Supported Robots
Robot
Integrated hardware
Maintained by
Deployment
Catalog
AgileX Ranger Mini v3
Ranger Mini v3 chassis; Livox MID-360 lidar and IMU; Intel RealSense D435i RGB-D camera; optional AgileX Piper arm; audio
Each deployment links the complete robot manifest and its primitive, service,
and skill dependencies. Published deployment metadata does not replace the
hardware-specific safety, commissioning, and acceptance gates documented by
each repository. See the
robot catalog
for published integrations.
Quick Start
Install Robonix:
git clone --recursive --branch dev https://github.com/syswonder/robonix.git
cd robonix
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
make install
Then run rbnx chat in a third terminal. Try go to room 101, what can you see?, or explore the office. See the
Getting Started guide
for the complete walkthrough.
Robonix grows in two directions: reusable services and skills above the system
layer, and reusable robot integrations below it. Both use the same package and
capability model, so a model or skill depends on what a robot can do rather
than on a particular vendor implementation.
Services and skills
A service provides a general capability that many models and skills can
reuse, such as mapping, navigation, memory, speech, or voice identification.
Services own their runtime state and interfaces, and a deployment can replace
one implementation without changing the skills that consume it.
A skill is a task-facing package and is the closest Robonix equivalent to an
application in the operating-system analogy. It may orchestrate several
services and primitives, wrap a learned VLA policy, or combine model inference
with scripts and task-specific logic. Exploration, greeting people,
transporting an object, and grasp-and-place behaviors are examples of skills.
Skills remain independently installable and can be activated only when a task
needs them.
Services and skills declare capabilities through Atlas. Pilot can select those
capabilities while planning, and Executor dispatches the resulting RTDL nodes
while preserving per-task state, concurrency, and cancellation. Browse current
drivers, services, and skills in the
package catalog.
The package badge above is updated from the
catalog API.
Hardware and robot deployments
A primitive adapts one physical device, such as a camera, lidar, chassis,
arm, gripper, or audio device, to Robonix capability contracts. A robot
deployment repository assembles these primitives with the complete body
description, selected services and skills, and runtime configuration for one
platform. This gives models and skills one consistent view of each robot.
Browse complete integrations in the
robot catalog.
Build services and skills
template-rbnx provides a minimal
service and skill package that can be built and booted without robot hardware.
Use it to define capability interfaces, configuration, lifecycle hooks, and
package metadata before connecting the package to a real deployment.
Robonix Skill Toolkit
supports the VLA skill workflow: collect teleoperation data, fine-tune an
OpenVLA-OFT policy, and deploy the resulting
skill on a real robot arm such as the
AgileX Piper.
Why an Operating System?
Robonix is more than a set of robot APIs. It provides the shared execution
environment in which models, skills, services, and hardware providers coexist.
Models and skills use common capability contracts, while the system handles
discovery, body and environment state, task execution, provider lifecycle,
policy checks, cancellation, and structured history.
In the operating-system analogy, models and skills are programs and robot
capabilities are resources. Long-running and concurrent plans have explicit
identity and state, so they can be observed, steered, and cancelled without
embedding these mechanisms independently in every skill.
System architecture
The system components below keep planning, execution, state, communication,
health, and safety separate from individual hardware drivers and skills.
Robot-facing and model- or skill-facing packages fall into three open categories.
They implement shared contracts from capabilities/ and may be
replaced independently in each deployment:
primitive — one device per package (camera, lidar, chassis, arm). Lives
in deployment repos and per-example folders (e.g. examples/webots/primitives/).
service — runtime functionality (mapping, navigation, semantic map,
memory, speech, voiceprint). Default reference implementations ship in
services/; each can be swapped out by a deployment.
“Tested” means the full Robonix pipeline runs end-to-end on that platform —
in simulation or on a real robot: voice & interaction, task execution, body
movement, scene & mapping (semantic map + spatial map), navigation, and skill
execution. Other Linux distributions will likely work but are not regularly
verified.
Relationship with ROS 2. Robonix itself does not depend on ROS 2 — it is
one of the transports nexus offers, not a requirement of the system. If a
capability provider needs the ROS 2 communication libraries and the host OS
has no ROS 2 support, run that provider in a Docker container. Within a single
Robonix deployment, all ROS 2-based capability providers must use the same
ROS 2 distribution (Foxy / Humble / Jazzy); Humble is recommended.
Webots Environments
The simulator launcher supports multiple built-in .wbt environments. Select one
explicitly with --world or ROBONIX_WEBOTS_WORLD:
Available worlds in examples/webots/sim/ros_ws/src/eaios_webots/worlds/:
office.wbt, apartment.wbt, complete_apartment.wbt, break_room.wbt, and
kitchen.wbt.
office.wbt is the fully seeded default and is recommended for a first run.
Other worlds may need Cyberbotics’ offline asset bundle on their first launch:
The launcher caches the bundle in the webots_cache Docker volume. Network
mirror overrides are documented in the
Webots example.
office.wbt
apartment.wbt
complete_apartment.wbt
break_room.wbt
kitchen.wbt
Stop the example with rbnx shutdown from examples/webots, followed by
bash examples/webots/sim/stop.sh from the repository root.
Quick Development
The Robonix package template
contains a mock primitive, a service, and a skill that boot without robot
hardware:
git clone https://github.com/syswonder/template-rbnx.git
cd template-rbnx
cp .env.example .env
# Fill in the three VLM values in .env.
set -a; source .env; set +a
rbnx build
rbnx boot
Run rbnx caps to inspect the live providers, then try rbnx chat and ask the
robot to say hello. Each example package keeps its manifest, config.spec,
build/start scripts, implementation, and optional capability definitions in
one directory. Start there, then follow the
package integration guide
to publish a reusable package.
Repository Layout
system/ system components, one directory each
services/ default reference service implementations (memsearch, voiceprint, speech)
pylib/ Python SDK (robonix-api on PyPI)
capabilities/ contract TOMLs + ROS-style IDL tree (capabilities/lib/)
tools/ dev tooling — rbnx CLI + codegen
examples/ end-to-end deployments (webots, test_ci)
docs/ mdBook developer guide (submodule)
Cargo.toml workspace for the Rust components (4 in system/, 2 in tools/)
Makefile top-level orchestrate (build / install / fmt / check)
system/<name>/ and services/<name>/ and tools/<name>/ are each
self-contained packages — Rust ones carry their own Cargo.toml, Python
ones their own pyproject.toml. There is no top-level rust/ /
python/ split; the runtime role is what determines where a component
lives, not the implementation language.
Learn More
Dive deeper:
Overview — control plane, one full request end-to-end
Namespaces & contracts — how robonix/primitive/* / robonix/service/* / robonix/skill/* / robonix/system/* work
Robonix is built from small, swappable packages, each implementing one or
more capability contracts normally grouped under a primary
robonix/<kind>/<area>/* namespace. Shared framework contracts may be
implemented across those provider namespaces. Namespace mismatches are
diagnostic rather than a runtime authorization boundary. The contract
definitions are documented in the
interface catalog.
This repository contains Robonix system components, built-in reference services, and
examples such as Webots/Tiago. Reusable community packages are indexed by the
Robonix Package Catalog;
their source stays in separate package repositories instead of being duplicated
here.
scene (3D scene graph), atlas, executor, pilot, and liaison are
system components under system/, not services.
External packages
Use the Robonix Package Catalog
to find reusable primitive, service, and skill packages maintained outside this
repository. The catalog also exposes a machine-readable static JSON API:
primitive-[company]-[model]-[primitive_type]-rbnx for primitive packages.
service-[service_namespace]-rbnx for service packages.
skill-[skill_namespace]-rbnx for skill packages.
To contribute a community package:
Put the package source in its own GitHub repository. The repository root
must contain package_manifest.yaml.
In package_manifest.yaml, provide catalog metadata under package:
name, version, description, tags, and maintainers.
maintainers is a list of Name <email@domain> entries.
Open a pull request to
syswonder/robonix-package-catalog
and add only name + repo to catalog.yaml. The catalog CI fetches the
package manifest from GitHub, validates the name and metadata, generates the
website/API, and deploys it to GitHub Pages.
ROS 2 and Zenoh
ROS 2 is an optional Robonix transport rather than a dependency of the system
itself. Providers that use ROS 2 may run natively or in containers, but all of
them in one deployment must use the same ROS 2 distribution and RMW
implementation. Humble is currently recommended for robot deployments.
The Webots deployment uses rmw_zenoh_cpp and starts one rmw_zenohd router
for its multi-container ROS graph. Primitive, service, and skill code continues
to use normal ROS 2 APIs; the deployment selects the RMW through its process
environment. See the
rmw_zenoh design
and the robot integration guide
for topology and deployment details.
Contributing
See CONTRIBUTING.md for the repository’s license headers,
code style, validation commands, commit format, human-authorship policy, and AI
assistance disclosure rules.
Robonix — The Embodied AI Operating System
A system substrate for building embodied intelligence across heterogeneous robots.
Robonix
Robonix is an operating system for embodied intelligence. It explores how to construct a robot’s “brain” at the system level: a common substrate on which models can perceive, understand, plan, and act through heterogeneous robot bodies without being rewritten around every vendor SDK.
Robonix treats AI models and skills as programs and exposes robot hardware as discoverable capabilities. This separation lets robot developers integrate a body once, while model and skill developers build against shared interfaces for cameras, lidar, chassis, arms, mapping, navigation, speech, and other capabilities. The long-term goal is simple: train once, deploy on any robot.
Supported Robots
Each deployment links the complete robot manifest and its primitive, service, and skill dependencies. Published deployment metadata does not replace the hardware-specific safety, commissioning, and acceptance gates documented by each repository. See the robot catalog for published integrations.
Quick Start
Install Robonix:
Start the Webots simulator in one terminal:
Boot Robonix in a second terminal with any OpenAI-compatible VLM endpoint:
Then run
rbnx chatin a third terminal. Trygo to room 101,what can you see?, orexplore the office. See the Getting Started guide for the complete walkthrough.https://github.com/user-attachments/assets/604b2c7f-3b6d-46be-858b-c52acaf686e3
Services, Skills, and Robot Integrations
Robonix grows in two directions: reusable services and skills above the system layer, and reusable robot integrations below it. Both use the same package and capability model, so a model or skill depends on what a robot can do rather than on a particular vendor implementation.
Services and skills
A service provides a general capability that many models and skills can reuse, such as mapping, navigation, memory, speech, or voice identification. Services own their runtime state and interfaces, and a deployment can replace one implementation without changing the skills that consume it.
A skill is a task-facing package and is the closest Robonix equivalent to an application in the operating-system analogy. It may orchestrate several services and primitives, wrap a learned VLA policy, or combine model inference with scripts and task-specific logic. Exploration, greeting people, transporting an object, and grasp-and-place behaviors are examples of skills. Skills remain independently installable and can be activated only when a task needs them.
Services and skills declare capabilities through Atlas. Pilot can select those capabilities while planning, and Executor dispatches the resulting RTDL nodes while preserving per-task state, concurrency, and cancellation. Browse current drivers, services, and skills in the package catalog. The package badge above is updated from the catalog API.
Hardware and robot deployments
A primitive adapts one physical device, such as a camera, lidar, chassis, arm, gripper, or audio device, to Robonix capability contracts. A robot deployment repository assembles these primitives with the complete body description, selected services and skills, and runtime configuration for one platform. This gives models and skills one consistent view of each robot. Browse complete integrations in the robot catalog.
Build services and skills
template-rbnx provides a minimal service and skill package that can be built and booted without robot hardware. Use it to define capability interfaces, configuration, lifecycle hooks, and package metadata before connecting the package to a real deployment.
Robonix Skill Toolkit supports the VLA skill workflow: collect teleoperation data, fine-tune an OpenVLA-OFT policy, and deploy the resulting skill on a real robot arm such as the AgileX Piper.
Why an Operating System?
Robonix is more than a set of robot APIs. It provides the shared execution environment in which models, skills, services, and hardware providers coexist. Models and skills use common capability contracts, while the system handles discovery, body and environment state, task execution, provider lifecycle, policy checks, cancellation, and structured history.
In the operating-system analogy, models and skills are programs and robot capabilities are resources. Long-running and concurrent plans have explicit identity and state, so they can be observed, steered, and cancelled without embedding these mechanisms independently in every skill.
System architecture
The system components below keep planning, execution, state, communication, health, and safety separate from individual hardware drivers and skills.
sequence/parallel/do)Robot-facing and model- or skill-facing packages fall into three open categories. They implement shared contracts from
capabilities/and may be replaced independently in each deployment:examples/webots/primitives/).services/; each can be swapped out by a deployment.Supported platforms
“Tested” means the full Robonix pipeline runs end-to-end on that platform — in simulation or on a real robot: voice & interaction, task execution, body movement, scene & mapping (semantic map + spatial map), navigation, and skill execution. Other Linux distributions will likely work but are not regularly verified.
Relationship with ROS 2. Robonix itself does not depend on ROS 2 — it is one of the transports nexus offers, not a requirement of the system. If a capability provider needs the ROS 2 communication libraries and the host OS has no ROS 2 support, run that provider in a Docker container. Within a single Robonix deployment, all ROS 2-based capability providers must use the same ROS 2 distribution (Foxy / Humble / Jazzy); Humble is recommended.
Webots Environments
The simulator launcher supports multiple built-in
.wbtenvironments. Select one explicitly with--worldorROBONIX_WEBOTS_WORLD:Available worlds in
examples/webots/sim/ros_ws/src/eaios_webots/worlds/:office.wbt,apartment.wbt,complete_apartment.wbt,break_room.wbt, andkitchen.wbt.office.wbtis the fully seeded default and is recommended for a first run. Other worlds may need Cyberbotics’ offline asset bundle on their first launch:The launcher caches the bundle in the
webots_cacheDocker volume. Network mirror overrides are documented in the Webots example.office.wbtapartment.wbtcomplete_apartment.wbtbreak_room.wbtkitchen.wbtStop the example with
rbnx shutdownfromexamples/webots, followed bybash examples/webots/sim/stop.shfrom the repository root.Quick Development
The Robonix package template contains a mock primitive, a service, and a skill that boot without robot hardware:
Run
rbnx capsto inspect the live providers, then tryrbnx chatand ask the robot to say hello. Each example package keeps its manifest,config.spec, build/start scripts, implementation, and optional capability definitions in one directory. Start there, then follow the package integration guide to publish a reusable package.Repository Layout
system/<name>/andservices/<name>/andtools/<name>/are each self-contained packages — Rust ones carry their ownCargo.toml, Python ones their ownpyproject.toml. There is no top-levelrust//python/split; the runtime role is what determines where a component lives, not the implementation language.Learn More
Dive deeper:
robonix/primitive/*/robonix/service/*/robonix/skill/*/robonix/system/*workPackage Model
Robonix is built from small, swappable packages, each implementing one or more capability contracts normally grouped under a primary
robonix/<kind>/<area>/*namespace. Shared framework contracts may be implemented across those provider namespaces. Namespace mismatches are diagnostic rather than a runtime authorization boundary. The contract definitions are documented in the interface catalog.This repository contains Robonix system components, built-in reference services, and examples such as Webots/Tiago. Reusable community packages are indexed by the Robonix Package Catalog; their source stays in separate package repositories instead of being duplicated here.
Built-in services —
services/memsearchrobonix/service/memory/*speechrobonix/service/speech/*voiceprintrobonix/service/voiceprint/*External packages
Use the Robonix Package Catalog to find reusable primitive, service, and skill packages maintained outside this repository. The catalog also exposes a machine-readable static JSON API:
GEThttps://syswonder.github.io/robonix-package-catalog/api/v1/packagesGEThttps://syswonder.github.io/robonix-package-catalog/api/v1/searchGEThttps://syswonder.github.io/robonix-package-catalog/api/v1/package/<package-name>package-nameis the exactpackage.name, URL-encodedExample:
Repository naming follows the catalog convention:
primitive-[company]-[model]-[primitive_type]-rbnxfor primitive packages.service-[service_namespace]-rbnxfor service packages.skill-[skill_namespace]-rbnxfor skill packages.To contribute a community package:
package_manifest.yaml.package_manifest.yaml, provide catalog metadata underpackage:name,version,description,tags, andmaintainers.maintainersis a list ofName <email@domain>entries.syswonder/robonix-package-catalogand add onlyname+repotocatalog.yaml. The catalog CI fetches the package manifest from GitHub, validates the name and metadata, generates the website/API, and deploys it to GitHub Pages.ROS 2 and Zenoh
ROS 2 is an optional Robonix transport rather than a dependency of the system itself. Providers that use ROS 2 may run natively or in containers, but all of them in one deployment must use the same ROS 2 distribution and RMW implementation. Humble is currently recommended for robot deployments.
The Webots deployment uses
rmw_zenoh_cppand starts onermw_zenohdrouter for its multi-container ROS graph. Primitive, service, and skill code continues to use normal ROS 2 APIs; the deployment selects the RMW through its process environment. See thermw_zenohdesign and the robot integration guide for topology and deployment details.Contributing
See CONTRIBUTING.md for the repository’s license headers, code style, validation commands, commit format, human-authorship policy, and AI assistance disclosure rules.
Contributors
Thanks goes to these wonderful people:
wheatfox
💻 🚧
Zhaobo Zhang
💻
Guowei Li
💻
wuzheng
💻
Kaile Liu
💻
Feiyang Li
💻
MuJue
💻
Zhenyu Zhang
💻
lhw2002426
💻
Zihao Zheng
🔧 🔣
qingfeng123
🔧 🔣
longyunhou
💻
Origamii520
💻
Xiankun Chen
💻
This project follows the all-contributors specification. Contributions of any kind welcome!
License
Mulan Permissive Software License, Version 2 (MulanPSL-2.0). See LICENSE.