Installation

Source install via uv on Python 3.10+, verified with an offline dataset replay.

Requirements

Platform note. The one silent failure is platform-based: Orbbec wheels exist only for Linux x86_64/aarch64 and macOS arm64, so on any other platform (e.g. macOS Intel or Windows) the camera extra installs nothing and the camera will not work at runtime.

Prerequisites

1. Clone the source.

bash
git clone https://github.com/Noietch/EVA-CLIENT.git
cd EVA-CLIENT                     # repo root — run later commands here

2. Install uv (other methods on the uv project page):

bash
curl -LsSf https://astral.sh/uv/install.sh | sh

3. Fetch Python 3.10+ (optional; uv venv will fetch on demand):

bash
uv python install 3.10

Create environment and install

From the repo root, create a Python 3.10+ venv, activate, install editable. Add --system-site-packages only for ros1, which exposes the system ROS install to the venv.

Standard (non-ros1):

bash
uv venv --python 3.10 .venv
source .venv/bin/activate
uv pip install -e ".[dev]"

For ros1:

bash
uv venv --python 3.10 --system-site-packages .venv

The dev extra adds test/lint tooling (see Development) and installs the eva entry point. Confirm:

bash
eva --help

Hardware extras

Robot and camera drivers are opt-in extras. List them alongside dev, e.g. for UR5e:

bash
uv pip install -e ".[dev,ur5e]"
ExtraUse it for
devAlways included. Test and lint tooling.
frankaFranka arms (dual_franka robot).
arxARX R5 arm (arx_r5 robot).
ur5eUR5e arm (ur5e robot) with DH gripper.
cameraOrbbec depth cameras (Linux x86_64/aarch64, macOS arm64).
vizFaster 3D robot model loading in the web view.
Vendored drivers. arx and ur5e ship the vendor driver in-tree; no separate download.
EVA is only the connective layer. EVA bridges protocols between the policy and the robot; each robot talks over its own middleware (ROS, ZMQ, or otherwise). So these extras are not full robot integrations — examples/hardware ships only reference samples that you adapt to your own robot's setup. See Adding a robot.

Offline test

An open-loop config replays a recorded dataset, so no robot or policy server is needed. The path below is a real file in the repo; swap in your own config later (see Configuration).

bash
# offline dataset replay — no ROS, no policy server
eva --config configs/00_openloop/dual_agilex_AGILEX_openloop.py

Success line in the log:

text
Console web server: http://127.0.0.1:8080

Open http://localhost:8080. For a remote host, forward the port:

bash
ssh -L 8080:localhost:8080 <user>@<host>
--config is required. If port 8080 is taken, override with --web-port 8090.

Next: full flags on the CLI reference, end-to-end run in Quickstart.