Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,18 @@

## ✨ Features

* **No deep learning dependencies**: The policy stays on the server. This side needs only `gymnasium`, `websockets` and `msgpack`, so environments pinned to old `mujoco-py` or `cython<3` can be used with a modern training stack.
* **No deep learning dependencies**: The policy stays on the server. The base
install declares nine runtime dependencies - `gymnasium`, `websockets` and
`msgpack` do the environment and wire work, next to `loguru`, `dm-tree`,
`tyro`, `plugrl-protocol`, `pandas` and `imageio[ffmpeg]` - and none of them
is a deep learning framework, so environments pinned to old `mujoco-py` or
`cython<3` can be used with a modern training stack. E1 measures that bare
install at 30 packages and 224M on Linux with no CUDA wheels
(`plugrl-server/experiments/e1-dependency-conflict/`, round 4). Correction:
this line previously said the client needs "only `gymnasium`, `websockets`
and `msgpack`", which named three of the nine declared dependencies.
`pandas` is declared but is not imported anywhere in `src/` today - it is
weight in the install, not a requirement of the runtime.
* **Distributed communication**: `websockets` plus `msgpack` for asynchronous transfer between the server and any number of env clients, across machines.
* **Modular design**: Separates the environment-side runtime (`plugrl-env-client`) from the shared protocol layer (`plugrl-protocol`).
* **Command-line interface**: A `tyro`-powered CLI for starting and managing env clients.
Expand Down Expand Up @@ -50,16 +61,26 @@ The easiest way to get started is by cloning the repository and using `uv` to ma
uv sync --extra mujoco
```

Everything, with `uv`:
All six extras, with `uv`:

```bash
uv sync --extra mujoco --extra robomimic --extra atari --extra classic --extra libero
uv sync --extra mujoco --extra robomimic --extra atari --extra classic --extra libero --extra d4rl
```

```
pip install -e ".[mujoco, robomimic, atari, classic, libero]"
pip install -e ".[mujoco, robomimic, atari, classic, libero, d4rl]"
```

Correction: these two lines were labelled "Everything" but listed only five
of the six extras `pyproject.toml` declares - `d4rl` was missing, while the
environment table below names it as the extra for `d4rl-v1`. Against the
committed `uv.lock`, all six resolve to 100 packages and the old five to 97
(`uv sync --frozen --dry-run`, uv 0.9.8): `robomimic` already carries `d4rl`
and `mujoco-py`, so the `d4rl` extra itself adds `gymnasium-robotics`,
`mujoco-py-cython3` and `pettingzoo`. Note that "all six" is not a light
install - E1 measures the env client with the `robomimic` extra at 7.2G with
16 CUDA wheels, because robomimic ships its own policy learning code.

Note: `robomimic` and `libero` pull in `egl-probe`, whose legacy CMake build
needs `CMAKE_POLICY_VERSION_MINIMUM=3.5` when using CMake 4+. `uv` is
configured in this repository to apply that automatically. If you install
Expand Down
Loading