Rust-native EAIOS. Capability-centric runtime with Atlas (control plane), Pilot (LLM + plan), Executor (dispatch), Liaison (dialogue) — human intent to embodied action.
git clone --recursive https://github.com/syswonder/robonix
cd robonix/rust
make install # → ~/.cargo/bin (rbnx, robonix-atlas, robonix-pilot, robonix-executor)
# also runs `rbnx setup` to register this clone as the source treeThe Webots Tiago example (examples/webots/) is the standard end-to-end demo.
It runs in two terminals: the simulator and Robonix itself.
# Terminal (1) — simulation environment (Webots GUI; not a Robonix package — just docker compose)
bash examples/webots/sim/start.sh
# Then in another terminal (2) — Robonix stack: system services + Tiago primitives + Nav2 service
export VLM_BASE_URL=https://api.openai.com/v1 # any OpenAI-compatible endpoint
export VLM_API_KEY=sk-...
export VLM_MODEL=gpt-5.4-mini
cd examples/webots
rbnx build # might take a while since scene and speech needs some model weights and docker containers downloaded while building
rbnx bootOnce rbnx boot reports the stack is up, in a third terminal:
# Terminal (3)
rbnx caps # list registered capabilities + interfaces
rbnx chat # interactive ratatui chat with the pilotTo tear everything down — Ctrl-C the rbnx boot terminal, or from
any other shell:
cd examples/webots && rbnx shutdown # reads rbnx-boot/state.json,
# SIGTERMs each component's PGID
bash sim/stop.sh # then stop the Webots containerFull first-run walkthrough: docs/src/getting-started/quickstart.md.
Atlas is the single control plane: every capability provider (primitive / service / skill) calls RegisterPrimitive / RegisterService / RegisterSkill + DeclareCapability(transport, endpoint, params) on startup; pilot/executor discover via Query and open data-plane connections via ConnectCapability. Transports are pluggable — gRPC, MCP, ROS 2 — and the contract TOMLs under capabilities/ describe the schemas all of them are allowed to carry.
Reasoning lives in Pilot (LLM agent loop with persistent execution semantics; CAPABILITY.md per provider is lazy-loaded by the LLM via read_file). Capability dispatch lives in Executor (capability-call routing + a few in-process builtins for filesystem / shell). User-facing dialogue lives in Liaison (audio / NLP front-end + session orchestration; clients talk to Liaison, never to Pilot directly).
Dive deeper:
- Overview — control plane, one full request end-to-end
- Crates — each binary's role and listening port
- Namespaces & contracts — how
robonix/primitive/*androbonix/service/*work - Interface catalog — every primitive + service contract
Warning
Robonix is in early development. API and interfaces, IDL layouts, internal designs may change without notice. No API stability until a versioned release.
Mulan Permissive Software License, Version 2 (MulanPSL-2.0). See LICENSE.
