Skip to main content
OMG RoIS 2.0AlphaApache License 2.0

OpenRoIS: One Standard Interface for Physical Robots, Virtual Avatars, and Digital Services

A community-driven open-source middleware implementing the OMG Robotic Interaction Service (RoIS) Framework 2.0. Service applications control physical robots, virtual avatars, and digital services through standard, symbolic interfaces, locally or over the internet.

localhost:8080 · OpenRoIS Inspector
The OpenRoIS Inspector against the mock adapter, no robot attached. Run It Yourself →
Why OpenRoIS

Write the Application Once. Integrate Each Platform Once.

Service applications for human-robot interaction are usually written against the interface of one platform, so every change of hardware forces a rewrite. RoIS 2.0 standardizes the interaction at the symbolic level, and OpenRoIS provides the maintained implementation, SDKs, and adapters that the standard needs in practice.

With vendor-specific interfaces, N applications and M platforms, whether physical robots, virtual avatars, or digital services, need N times M integrations. With OpenRoIS, they need N plus M.With vendor-specific interfaces, N applications and M platforms, whether physical robots, virtual avatars, or digital services, need N times M integrations. With OpenRoIS, they need N plus M.
Architecture

The RoIS Model, Realized as Processes You Can Deploy

The gateway hosts the main HRI Engine. Each adapter hosts a sub HRI Engine for one robot, avatar, or service, and reaches it through the transport that platform requires. Media stays on a separate data plane.

OpenRoIS architecture: service applications, among them an AI agent through the MCP server, the gateway hosting the main HRI Engine, adapters hosting sub HRI Engines for physical robots, virtual avatars, and digital services, and their hosts.OpenRoIS architecture: service applications, among them an AI agent through the MCP server, the gateway hosting the main HRI Engine, adapters hosting sub HRI Engines for physical robots, virtual avatars, and digital services, and their hosts.
The Five RoIS Interfaces

Standard Operations over JSON-RPC 2.0

RoIS 2.0 defines what a service application can ask of an HRI Engine. OpenRoIS maps each operation onto a JSON-RPC 2.0 method, with requests, responses, and asynchronous notifications over one WebSocket connection.

System

rois.system.*
  • connect
  • disconnect
  • get_profile

Command

rois.command.*
  • search
  • bind
  • set_parameter
  • execute
  • release

Query

rois.query.*
  • query

Event

rois.event.*
  • subscribe
  • unsubscribe
  • notify_event

Streaming

Planned
streaming components
  • connect_stream
  • suspend_stream
  • notify_stream_status
For Developers

Build on Either Side of the Standard

Application developers use an SDK to address any platform through the RoIS interfaces. Robot developers write components that translate those interfaces into calls to their own stack, and the adapter framework handles the rest.

  • JavaScript SDK for web and Node.js applications
  • Python SDK for scripts and services
  • Unity SDK for desktop, mobile, and VR applications
  • Python component SDK for adapters, with ROS 2 support
Run the Quick Start
import { RoISClient } from "@openrois/sdk";

const client = await RoISClient.connect("ws://localhost:8765");

// Discover components across every connected robot, then pick one by type.
const refs = await client.search();
const nav = refs.find((ref) => ref.includes("Navigation"))!;

// Read state synchronously.
const status = await client.query(nav, "component_status");

// React to events.
client.on("reached_target", (n) => console.log(n.params));
await client.subscribe(nav, "reached_target");

// Reserve an actuation component, command it, release it.
await client.bind(nav);
await client.setParameter(nav, [
{ name: "target_positions", data_type_ref: "string[]", value: '["kitchen"]' },
]);
await client.execute(nav, { command_type: "start" });
await client.release(nav);
Project Status

Built in the Open, One Capability at a Time

OpenRoIS is alpha software with an unstable API. The foundations are in place and demonstrated with a physical robot. The rest of the RoIS surface follows a public roadmap.

Available
  • RoIS interface types in Python, JSON Schema, TypeScript, and C#
  • Recursive engine, gateway process, and component SDK (Python), on PyPI
  • Client SDKs for JavaScript (npm), Python (PyPI), and Unity, passing one conformance list
  • The OpenRoIS Inspector, and an MCP server that lets AI agents drive robots
  • Reachy Mini adapter, run on the real robot and in simulation
In Progress
  • RoIS conformance: run-time XML component profiles and a conformance claim
  • Applications and engines that recover from a restart
Planned
  • A physical robot and a virtual avatar behind one gateway
  • Authentication and authorization
  • Media streaming, transport-neutral, with an optional WebRTC integration
  • A stable API with semantic versioning guarantees (v1.0)
Get Involved

Help Carry RoIS into Practice

OpenRoIS is community-driven and developed in the open under the Apache License 2.0. Components for new robots are the natural entry point, and the roadmap lists work that can be picked up in parallel.

OMG RoIS 2.0JSON-RPC 2.0WebSocketJSON SchemaROS 2Unity
Cite OpenRoIS

Using OpenRoIS in Your Research?

The position paper describing OpenRoIS is accepted at SII 2027. Until it appears in the proceedings, please cite its preprint, arXiv:2609.21178, or the software. The repository also provides a CITATION.cff file.

@misc{carrera2026openrois,
author = {Carrera Villalobos, Sebastian and Arellano, Christopher Nolan and
Hitzmann, Arne and Morais Brito, Edilson and Utsumi, Akira and
Horikawa, Yukiko and Miyashita, Takahiro and Ishiguro, Hiroshi and
El Hafi, Lotfi},
title = {{OpenRoIS}: A Community-Driven Open-Source Middleware Implementing
the Robotic Interaction Service ({RoIS}) Framework for Physical
Robots, Virtual Avatars, and {AI} Agents},
year = {2026},
eprint = {2609.21178},
archivePrefix = {arXiv},
primaryClass = {cs.RO},
doi = {10.48550/arXiv.2609.21178},
url = {https://arxiv.org/abs/2609.21178},
note = {Accepted at the 2027 IEEE/SICE International Symposium on
System Integration (SII 2027), to appear}
}
@software{openrois,
author = {{OpenRoIS Community}},
title = {{OpenRoIS}: Open-Source Middleware Implementing the {OMG}
Robotic Interaction Service ({RoIS}) Framework 2.0},
url = {https://openrois.org/},
license = {Apache-2.0},
year = {2026}
}