One policy, any robot — the smooth all-in-one real-robot stack. Debug, record, evaluate, visualize, all in the browser.
Project Page Technical Report Documentation (English) Documentation (Chinese) GitHub Stars
eva-promo-slim.mp4
EVA-Client driving an AgileX bimanual arm end-to-end from the browser — teleop → record → π0 checkpoint → smooth async deploy. Real hardware, not a rendering.
Jump to: What's NEW · What you get · Robot zoo · Protocols · Architecture · Documentation · Roadmap · Cite
eva-client-record_2.mp4
-
[2026年08月28日] EVA-Client 0.2.0. EVA-Client now supports WebXR-based VR controller teleoperation, ARX X5 hardware, dual-YAM leader-follower data collection, export to LeRobot v3.0, MCAP, and HDF5, and multiple coding-agent skills for adding robots, calibrating cameras, and debugging robot SDKs.
-
[2026年08月28日] EVA-MHS Preview. Inspired by Anthropic's Model Hardware Standard (MHS) research preview, EVA-MHS explores an MHS-style agent-to-hardware interface for robotics. Its MCP service allows coding agents to inspect runtime state, call policy models, and directly control robots. EVA-MHS is available on the
dev/mcp_previewbranch and will be formally released in a future update. -
[2026年07月22日] New RL Workspace. EVA-Client now supports human-in-the-loop (HIL) intervention during policy rollouts and real-time value-curve visualization. See the RL workspace and HIL intervention demo.
-
[2026年07月18日] Headless CLI + ZMQ control channel. Drive the full deploy / eval / RL / collect loop from a single
.pyconfig without the browser — every console button (incl. HIL takeover) mirrored on a ZMQ socket. Seedocs/console.mdanddocs/control-channel.md. -
[2026年07月03日] EVA-Client is open-sourced!
-
[2026年07月03日] Paper, docs, and project page are live! Read the Technical Report, browse the Documentation (Chinese), and visit the Project Page.
- 🚀 Deployment. One command brings up a real-robot closed loop:
.pyconfig → transport (ROS1 / ROS2 / ZeroMQ / offline dataset) → policy backend (OpenPI, OpenPI-RTC, StarVLA, GR00T, mock, replay) → inference strategy (sync / async / naive / ACT-ensemble / RTC) with live latency compensation. 8 robots already — joint-space or EEF-space (PyRoki IK), all live-switchable from the DEBUG tab. - 📊 Evaluation. Multi-checkpoint sweeps with per-trial records: every rollout captures camera video, 3D URDF scene, per-dimension state charts, and per-prompt milestone scores into dataset metadata, then replays synchronously in the RESULT tab. Prompt shuffling, and remote policy servers over SSH port-forward are first-class.
- 🎥 Data collection. Teleop capture straight into LeRobot v2.1 episodes from the COLLECT tab — background saver, in-tab QC PASS/FAIL replay, camera streams encoded to mp4, per-frame green/red quality flags. Teleop demos and model rollouts share one on-disk layout.
✅ Supported · 🚧 In development · 📦 To be added
| Robot | Form factor | Supported |
|---|---|---|
| AgileX Piper | Dual 6-DoF arm + gripper | ✅ |
| ARX R5 | Dual 6-DoF arm + gripper | ✅ |
| ARX X5 | Dual 6-DoF arm + gripper | ✅ |
| Dual Franka Panda | Dual 7-DoF arm + gripper | ✅ |
| Galaxea R1 Lite | Dual 6-DoF arm on torso | ✅ |
| Universal Robots UR5e | Single 6-DoF arm + gripper | ✅ |
| AgiBot G2 | Dual-arm humanoid (24-DoF body) | ✅ |
| YAM | Dual-arm follower + leader | ✅ |
| AgiBot G2 (mobile base) | Humanoid on mobile chassis | 🚧 |
| Tianji | Dual-arm manipulator | 🚧 |
| Unitree H1 / G1 | Humanoid | 🚧 |
| Fourier GR-1 | Humanoid | 📦 |
| Booster T1 | Humanoid | 📦 |
| Mobile ALOHA | Mobile dual-arm | 📦 |
| Layer | Name | Protocol / wire format | Supported |
|---|---|---|---|
| Transport | ROS 1 | ROS 1 stack | ✅ |
| Transport | ROS 2 | ROS 2 stack | ✅ |
| Transport | ZeroMQ | ZeroMQ execution node | ✅ |
| Transport | Offline dataset | Offline LeRobot v2.x replay | ✅ |
| Policy backend | OpenPI | WebSocket + msgpack (OpenPI, stateless) | ✅ |
| Policy backend | OpenPI-RTC | WebSocket + msgpack (Real-Time Chunking) | ✅ |
| Policy backend | StarVLA | WebSocket + msgpack (typed envelope) | ✅ |
| Policy backend | GR00T | ZeroMQ REQ/REP + msgpack-numpy (Isaac-GR00T) | ✅ |
| Policy backend | Mock | Local (smooth random actions) | ✅ |
| Policy backend | Replay | Local (recorded trajectory replay) | ✅ |
Full guides live in docs/. Start here:
| Guide | What's inside |
|---|---|
| 📦 Installation | Requirements, uv setup, hardware extras, verify |
| 🚀 Quick start | Two-process bring-up, supported transports, deploy/eval/replay presets |
| 🧭 Web console | The seven tabs — MANUAL, COLLECT, REPLAY, DEBUG, RL, EVAL, RESULT |
| 📚 Core concepts | Transports, policy backends, inference strategies, robots, action spaces |
| ⚙️ Configuration | _base_ inheritance, deep merge, startup pipeline |
| 🎞️ Recording | LeRobot v2.1 on-disk layout, QC flags, eval trials |
| 🔬 Development | Tests, lint, type-check, and how the robot side is faked |
- More robots. Extend the robot zoo to more embodiments — dual-arm manipulators (Tianji, ...), humanoids (Unitree H1/G1, Fourier GR-1, Booster T1, ...) and mobile / wheeled platforms (mobile ALOHA, Galaxea R1 base, quadruped + arm).
- Human-in-the-loop data collection for RL. Interventions during policy rollout captured as preference / correction data, DAgger-style relabeling, and reward-model signals piped back through the LeRobot episode format for online RL fine-tuning.
- Embodied agent. Wrap the deployment + evaluation loop with a language-driven planner (VLM / VLA + tool use) so long-horizon tasks can be decomposed, executed, verified, and re-planned end-to-end from the same console.
- Data annotation. Extend Collect mode with fine-grained task and sub-task annotation, segmenting long-horizon episodes into labeled sub-task units and milestones within the same LeRobot dataset. This makes a collection reusable at the level of individual manipulation phases.
If EVA-Client is useful for your research or product, please cite:
@misc{yang2026evaclient, title={EVA-Client: A Unified Data Collection, Inference, and Deployment Framework for Embodied Policies on Real Robots}, author={Heqing Yang and Yang Yi and Liyao Wang and Linqing Zhong and Donglin Yang and Ruipu Wu and Zitong Bai and Fengjiao Chen and Manyuan Zhang and Linjiang Huang and Si Liu}, year={2026}, eprint={2607.02646}, archivePrefix={arXiv}, primaryClass={cs.RO}, url={https://arxiv.org/abs/2607.02646}, }
For questions or collaboration, feel free to reach out via WeChat:
License & Acknowledgements
This project is licensed under the Apache-2.0 License. See LICENSE for more information.
Builds upon several excellent open-source efforts, including PyRoki and jaxls for kinematics, OpenPI for policy serving, the LeRobot dataset format, and a vendored mmengine-style config system from MMEngine.