Model or dataset
RobotecAI/rai avatar
RobotecAI/rai

RAI: a ROS 2 agent framework for robots, judged on what the repository actually shows

RAI is a vendor agnostic agentic framework for Physical AI robotics, utilizing ROS 2 tools to perform complex actions, defined scenarios, free interface execution, log summaries, voice interaction and more.

588 stars76 forksPythonApache-2.0

At a glance

What is it?
RAI is Apache-2.0 Python middleware that puts LLM-driven agents on top of ROS 2 tool calls. It is aimed at teams already running ROS 2 who want language-level task execution without rewriting their stack, and its main cost is the Python 3.10/3.12 plus Ubuntu 22.04/24.04 matrix it pins you to.
Who is it for?
Adopt RAI if you already run ROS 2 Humble or Jazzy on Ubuntu 22.04 or 24.04, you are on Python 3.10 or 3.12, and you want agents that call ROS 2 tools rather than a bespoke planner. Do not adopt it if you need a non-ROS runtime, a stable API surface, or the unfinished rai_finetune path.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap RAI is trying to close between an LLM and a running robot

Most robotics stacks already expose capabilities as ROS 2 services, actions and topics. What they usually lack is a layer that decides which of those capabilities to call, in what order, and how to react when the result is not what was expected. RAI is that layer. The README describes it as a flexible AI agent framework to develop and deploy Embodied AI features for your robots, and the topic list names the target precisely: ros2, embodied-agent, physical-ai, multi-agent-systems, llm, vlm. This is not a general agent library with a robotics plugin bolted on. The ROS 2 dependency is structural, and the framework's value depends on your robot already speaking ROS 2. The audience is therefore narrow and identifiable: robotics engineers who have a working ROS 2 system and want to add language-driven task execution, scenario handling and voice interaction without replacing their existing nodes. If your robot does not run ROS 2, RAI is the wrong starting point, and no amount of prompt engineering changes that.

What the package split tells you about the architecture

The README lists the framework as separate packages rather than one monolith, and the split is the clearest architectural statement in the repository. rai core holds multi-agent orchestration, human-robot interaction and multi-modalities. rai_whoami extracts and synthesizes robot embodiment information from a structured directory of documentation, images and URDFs. rai_asr and rai_tts handle speech input and output. rai_sim connects RAI to simulation environments. rai_bench is a benchmarking suite for agents, models, tools and simulators. rai_perception provides object detection tools built on open-set models. rai_nomad integrates NoMaD for navigation. One entry is unchecked in the README's own list: rai_finetune, described as finetuning LLMs on embodied data. That unchecked box is worth reading as a statement of scope rather than an oversight. Everything downstream of a general-purpose model is present; the part that would adapt a model to a specific robot's data is not. The rai_whoami package is the interesting design choice here. Instead of hardcoding robot descriptions into prompts, it derives embodiment context from a directory of docs, images and URDFs. That means the quality of your robot's documentation becomes an input to agent behaviour, which is a dependency most teams do not currently treat as one.

Getting it running: what the repository actually specifies

The README points setup at the Quick setup guide at robotecai.github.io/rai/setup/install rather than inlining commands, so the exact install sequence is not in the material available here and should not be guessed. What the badges do pin down is the supported matrix: Ubuntu 24.04 and 22.04, Python 3.12 and 3.10, ROS 2 Jazzy and Humble. Those are hard constraints, not suggestions. A team on Ubuntu 20.04, Python 3.8, or ROS 2 Foxy or Iron is outside the stated support surface. The repository also ships simulation demos, which is the practical way to try the framework before wiring it to hardware. The README lists four: mission and obstacle reasoning in orchards with an autonomous tractor, manipulation tasks with natural language on a Franka Panda using Grounded SAM 2, an autonomous mobile robot demo on a Husarion ROSbot XL, and an agentic mobile manipulator on RB-KAIROS which the README notes runs with on-board execution and links to a separate repository, RobotecAI/agentic-mobile-manipulator. Each demo links to its own documentation page. The configuration story is explicitly per-robot: the developer resources section says the documentation covers creating a configuration specifically for your robot. That is the real setup work, and it is not a single command.

Where RAI is likely to be the wrong tool

The first limitation is visible in the package list itself. rai_finetune is unchecked, so if your requirement is a model tuned on your own embodied data rather than a prompted general model, the framework does not currently cover that step. The second is the support matrix. Pinning to Ubuntu 22.04/24.04, Python 3.10/3.12 and ROS 2 Humble/Jazzy is reasonable for a project tracking current ROS 2 releases, but it means RAI cannot be dropped into a long-lived deployment frozen on an older distribution without an upgrade you may not control. The third is subtler and follows from the design. The README advertises free interface execution alongside defined scenarios. Free execution means the agent chooses tools at runtime rather than following a fixed script, and the failure mode of that choice is a robot that does something valid but unwanted. rai_bench exists precisely because that behaviour needs measuring, and the README describes it as a suite for testing agents, models, tools and simulators. If your application cannot tolerate an agent selecting an unexpected tool, the defined-scenario path is the safer half of the framework, and the free-execution half is the part you would disable or fence off. None of this is a defect in the code. It is a property of putting a language model in the control loop of a physical machine.

How RAI differs from wiring an LLM to ROS 2 yourself

The obvious alternative is not another framework. It is the direct approach: take an agent library, expose your ROS 2 services as tools, and write the glue yourself. That path gives you total control over the prompt, the tool schema and the failure handling, and it has no version matrix beyond the agent library and ROS 2 themselves. What it does not give you is rai_whoami's embodiment extraction, rai_perception's open-set detection tools, rai_nomad's navigation integration, or rai_bench's test harness. The honest comparison is effort against coupling. Building the glue is a few hundred lines that you own and can debug; adopting RAI means inheriting its package boundaries, its release cadence and its supported platforms. The release history supports a read on that cadence: three releases on 2026-09-08, versions 2.12.2, 2.12.3 and 2.12.4, followed by 2.12.4 dated 2026-09-08 and the last push to main on 2026-09-10. Two patch releases within the same minute suggests active iteration on a 2.12 line rather than a frozen API. Teams that need a stable interface to build against should check how much churn the 2.x series has shown before pinning a version.

Licence and the cost of keeping up

RAI is Apache-2.0, which permits commercial use and modification and includes an explicit patent grant. That is a permissive licence, and for most robotics companies it removes the licensing question from the adoption decision. It does not remove the maintenance question. The framework depends on ROS 2, and ROS 2 distributions have their own support windows, so an upgrade to a new ROS 2 release will eventually force an RAI upgrade alongside it. The same applies to the model providers behind the agent layer: the framework is described as vendor agnostic, which means the model is a configuration choice rather than a fixed dependency, but it also means model behaviour can shift under you without any RAI release. The practical cost is not the licence fee. It is the combination of tracking ROS 2 releases, tracking RAI's 2.x patch cadence, and re-validating agent behaviour when either moves. rai_bench is the tool the project provides for that re-validation, and treating it as optional is the mistake that makes the upgrade cost real.

Who should adopt RAI, and what to check first

RAI fits teams that already have a ROS 2 robot, are on a supported Ubuntu and Python combination, and want to add agentic task execution, voice interaction and multimodal input without building the orchestration layer from scratch. The simulation demos give a low-risk way to evaluate it before touching hardware, and rai_bench gives a way to measure agent behaviour rather than eyeball it. It does not fit teams outside the ROS 2 ecosystem, teams that need a frozen API for a long deployment, or teams whose requirement is a model finetuned on their own data, since rai_finetune is listed as unchecked. The verification order that follows from the material: confirm your platform matches the badge matrix, run one of the four listed demos on your simulator, then test rai_whoami against your own URDF and documentation directory, because that package's output feeds the agent's understanding of the robot and it is the step most likely to be under-prepared on a real project.

Editorial conclusion

Adopt RAI if you already run ROS 2 Humble or Jazzy on Ubuntu 22.04 or 24.04, you are on Python 3.10 or 3.12, and you want agents that call ROS 2 tools rather than a bespoke planner. Do not adopt it if you need a non-ROS runtime, a stable API surface, or the unfinished rai_finetune path. Before committing, verify three things against your own robot: that rai_whoami can build a usable embodiment description from your URDF and docs directory, that your tool set survives the agent's free interface execution, and that rai_bench reproduces your target scenario on your simulator.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. RobotecAI/rai on GitHub
Community notes

Community notes