🌐 Project Page | 📄 Paper | 📚 Docs | 🤗 Model
PyRUA-Lean (Python for lean Robot-Use Agents, the robot counterpart of computer-use agents)
turns a robot into a Python object. A tool-calling agent spends a full LLM call on every small step of a task
and re-sends everything before it each time. A PyRUA-Lean agent writes code against robo instead, so one call
can find an object, move above it, grasp, check the gripper and try again.
- [Coming soon] 🦾 Real robots.
- [2026/10/15] 🤗 PyRUA-Lean Coder v0.1-4B is on Hugging Face. [Model]
- [2026/10/13] 📄 arXiv v2 is out as a technical report: it adds RoboDojo and PyRUA-Lean Coder v0.1-4B. [Paper]
- [2026/10/13] 🤖 RoboDojo: without any VLA policy or privileged information, PyRUA-Lean reaches a 51.62% average success rate (Score 58.20), 19.4 points above the best entry of the public leaderboard (snapshot of October 9, 2026). The adapter is open as a pull request to XPolicyLab for RoboDojo's official evaluation (XPolicyLab#168). [Adapter]
- [2026/10/01] 📄 arXiv v1 is out. [Paper]
PyRUA-Lean has three parts so far:
- The framework. The agent composes robot primitives, VLA policies among them, into Python cells that check and retry locally and return only the images and state it asks for. On 700 task instances from LIBERO-PRO, RoboTwin 2.0 and RoboCasa365, with the same GPT-6 Astra planner and the same primitives as tool calling, success goes from 63.1% to 71.7%, with 49% fewer LLM calls and 65% fewer input tokens on the instances both agents solve.
- RoboDojo. With this library's own motion, gripper and perception primitives and the colour images of the benchmark's default observation, PyRUA-Lean reaches 51.62% average success rate (Score 58.20), first on all five dimensions of the public leaderboard (snapshot of October 9, 2026).
- PyRUA-Lean Coder v0.1-4B. Qwen3.5-4B trained with GRPO in the PyRUA-Lean framework, on 45 LIBERO-PRO instances, goes from 18.8% to 44.1% on 655 task instances it never saw in training, above the Qwen3.5-27B base model (29.2%).
LIBERO-PRO, RoboTwin 2.0 and RoboCasa365 run on the robot stacks of RPent: install RPent with the robot you want first (the Quick Start goes through it step by step). RoboDojo runs through XPolicyLab and needs no RPent (RoboDojo). Agents run through the Codex CLI 0.155.1, Claude Code, or any OpenAI-compatible endpoint.
git clone https://github.com/DAGroup-PKU/PyRUA-Lean.git && cd PyRUA-Lean
uv pip install -e . # into the Python environment of your RPent robot stack (or pip)
pyrualean api # the robot API the agent sees; no simulator needed
npm install -g @openai/codex@0.155.1 && codex login # the agent runtime
# one LIBERO-PRO episode: GPT-6 Astra writes code against robo, at most 40 code cells
export RPENT_ROOT=/path/to/rpent
pyrualean play --arm cells --suite libero_spatial_swap --task 7 --seed 2 \
--model gpt-6-astra --max-turns 40 --budget-s 7200 --out runs/demo --cuda-device 0
pyrualean summarize runs/demoThe run directory keeps the episode video, every cell the agent ran with its output, the ledger of primitive calls, the token usage and the benchmark's own verdict.
| Robot | Benchmark | Runs on | Robot and skills |
|---|---|---|---|
robodojo_xpl_rgb |
RoboDojo | XPolicyLab, under RoboDojo's own evaluation client | two ARX-X5 arms; this library's own motion, gripper and perception primitives, SAM3; the three colour images of the default observation; no VLA |
libero (default) |
LIBERO-PRO | RPent | Franka arm; scripted servos, Pi0.5 VLA, SAM3 perception |
robotwin |
RoboTwin 2.0 | RPent | two arms; LingBot-VLA |
robocasa |
RoboCasa365 | RPent | mobile manipulator; RLDX-1 VLA, navigation |
| coming soon | Real robots |
New robots are added through XPolicyLab (Adding a Robot).
Code cells against tool calling (GPT-6 Astra, same primitives; calls, tokens and cost per solved episode on the task instances both agents solved):
| Benchmark | Success, tool calling | Success, PyRUA-Lean | LLM calls | Input tokens | Cost |
|---|---|---|---|---|---|
| LIBERO-PRO | 83.0 | 94.0 | 21.4 → 8.4 | 1.23M → 273k | $2.49 → $0.79 |
| RoboTwin 2.0 | 60.0 | 69.2 | 12.2 → 8.9 | 415k → 245k | $1.00 → $0.66 |
| RC365 atomic | 78.9 | 86.7 | 10.4 → 5.6 | 261k → 171k | $0.62 → $0.54 |
| RC365 composite | 34.4 | 39.4 | 28.4 → 14.9 | 1.22M → 603k | $2.01 → $1.25 |
| All | 63.1 | 71.7 | 17.0 → 8.7 | 788k → 276k | $1.63 → $0.74 |
RoboDojo (success rate %, the leaderboard's average over its five dimensions; top entries of a snapshot of the public leaderboard taken on October 9, 2026):
| Entry | Type | Average | Gen. | Prec. | Long-Hor. | Memory | Open |
|---|---|---|---|---|---|---|---|
| PyRUA-Lean (GPT-6 Astra) | Agent | 51.62 | 45.83 | 37.25 | 48.00 | 63.00 | 64.00 |
| VPP2 | WAM | 32.26 | 29.50 | 35.17 | 37.00 | 55.56 | 4.08 |
| PhysicalRSI | Agent + VLA | 31.38 | 15.62 | 32.50 | 37.33 | 46.56 | 24.92 |
| Awomo-0.5 | WAM | 29.64 | 23.84 | 33.50 | 26.75 | 41.22 | 22.92 |
| Simate-beta | VLA | 27.96 | 27.95 | 26.92 | 43.42 | 33.00 | 8.50 |
PyRUA-Lean Coder v0.1-4B (success rate %, PyRUA-Lean framework):
| Planner | Trained on (45) | LIBERO-PRO other (155) | RoboTwin 2.0 (250) | RC365 atomic (90) | RC365 composite (160) | All unseen (655) |
|---|---|---|---|---|---|---|
| Qwen3.5-4B | 37.8 | 13.5 | 14.0 | 52.2 | 12.5 | 18.8 |
| Qwen3.5-27B | 64.4 | 38.1 | 20.8 | 65.6 | 13.1 | 29.2 |
| PyRUA-Lean Coder v0.1-4B | 71.1 | 37.4 | 52.4 | 76.7 | 19.4 | 44.1 |
If you use PyRUA-Lean, please cite our paper:
@article{si2026fewer,
title={Fewer tokens, better action: GPT-6 Astra robot agents with 14\% higher success rate but 65\% fewer tokens},
author={Si, Ruiyang and Bi, Jianxin and Yang, Shunyu and Ni, Rui and Huang, Wenbo and Wang, Qiang and Jiang, Shulong and Zhang, Yintianrun and Ruan, Feixiang and Zhang, Kewei and Wang, Duomin and Li, Xiuyu and Feng, Haiwen and Dong, Zhen and Zhou, Daquan},
journal={arXiv preprint arXiv:2610.01939},
year={2026}
}Apache License 2.0 (LICENSE). PyRUA-Lean builds on RPent
(Apache-2.0): on LIBERO-PRO, RoboTwin 2.0 and RoboCasa365 its robot stacks, services and primitive implementations
do the work behind robo, the tool-calling baseline is RPent itself, and parts of this repository are adapted from
it; see NOTICE. If you use
RPent, please cite its paper, Harness VLA: Steering Frozen VLAs into Reliable Manipulation Primitives via
Memory-Guided Agents.