Skip to main content

End-to-end simulation and training stack for the SO-101 arm: record demonstrations, clone behavior, and reinforce with GPU-parallel MuJoCo / MuJoCo Warp environments, built on LeRobot

Project description

SO-101 Arm

SO101-Nexus: SO-101 robot learning, from demos to policies

License Python Docs Tests GitHub release

Beta: APIs may change between releases. Feedback and bug reports are welcome.

SO101-Nexus is an end-to-end Python library for taking an SO-101 robot from demonstrations to a trained policy. It combines physical leader-arm teleoperation, LeRobot-compatible dataset recording, Gymnasium/MuJoCo manipulation environments, and training/evaluation hooks in one installable package.

For full documentation, visit so101-nexus.com/docs.

Demo Rollouts

Recorded MuJoCo teleoperation datasets are available on Hugging Face:

Task Dataset Episode viewer
PickLift johnsutor/MuJoCoPickLift episode 0
PickAndPlace johnsutor/MuJoCoPickAndPlace episode 0

Why

There are useful SO-101 tools, but few packages connect teleoperation, LeRobot datasets, environments, and training loops in one workflow, all using simulations. SO101-Nexus is built around the record -> clone -> reinforce path: collect demonstrations, replay and evaluate in matching SO-101 environments, bootstrap with imitation learning, then fine-tune with RL.

MuJoCo is the default backend. An optional MuJoCo Warp backend (so101-nexus[warp]) adds GPU-parallel, batched environments for large-scale RL.

What You Get

  • Teleoperation recorder: drive a simulated follower with a physical SO-100 or SO-101 leader arm.
  • LeRobot dataset output: save demonstrations with SO follower state/action units and wrist/overhead camera fields.
  • Gymnasium environments: run SO-101 MuJoCo tasks for touch, look-at, move, pick-lift, and pick-and-place.
  • Configurable curricula: swap objects, add distractors, randomize colors, tune rewards, and choose observation components.
  • Training and evaluation hooks: start with the PPO baseline, LeRobot processors, and policy adapters for real-policy evaluation.
  • GPU-parallel Warp backend (optional): batched Warp*-v1 vector environments for large-scale RL, installed with so101-nexus[warp].

Installation

pip install so101-nexus

From source

git clone https://github.com/johnsutor/so101-nexus.git
cd so101-nexus
uv sync

Start with the Workflow

Record demonstrations

uvx --from "so101-nexus[teleop]" so101-nexus teleop \
    --leader-port /dev/ttyACM0

See the teleoperation docs for hardware setup, camera fields, environment customization, and Hub upload.

Run an environment

import gymnasium as gym
import so101_nexus.mujoco  # noqa: F401

env = gym.make("MuJoCoPickLift-v1", render_mode="rgb_array")
obs, info = env.reset()

for _ in range(256):
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        obs, info = env.reset()

env.close()

See the environment reference for all task IDs.

Run the GPU-parallel Warp backend

Install the optional extra and create a batched vector environment:

pip install "so101-nexus[warp]"
import gymnasium as gym
import so101_nexus.warp  # noqa: F401

envs = gym.make_vec("WarpTouch-v1", num_envs=4096, device="cuda")
obs, info = envs.reset(seed=0)
obs, reward, terminated, truncated, info = envs.step(envs.action_space.sample())
envs.close()

Train a baseline

SO101-Nexus includes a CleanRL-style PPO baseline for Gymnasium environments. See Training with PPO for the command-line workflow and tuning notes.

Roadmap

  • MuJoCo environments for the SO-101 arm
  • SO-101 tasks: Touch, LookAt, Move, PickLift, PickAndPlace
  • Physical leader-arm teleop recorder for LeRobot datasets
  • MuJoCo Warp backend for GPU-parallel throughput
  • Stronger training baselines and exemplars for every environment
  • Integration with the LeRobot Hub

Development

git clone https://github.com/johnsutor/so101-nexus.git
cd so101-nexus
uv sync

make test       # run all tests
make format     # format code
make lint       # lint code

License

This repository's source code is available under the Apache-2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

so101_nexus-0.4.4.tar.gz (14.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

so101_nexus-0.4.4-py3-none-any.whl (12.9 MB view details)

Uploaded Python 3

File details

Details for the file so101_nexus-0.4.4.tar.gz.

File metadata

  • Download URL: so101_nexus-0.4.4.tar.gz
  • Upload date:
  • Size: 14.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for so101_nexus-0.4.4.tar.gz
Algorithm Hash digest
SHA256 2b388fe9a7a8d34a9d62a2dcf6bd78e32a5979aef779f3a5a44070df4a2e6e48
MD5 8e99a0b688a0399bb9ff9e800264d801
BLAKE2b-256 63f620db9a4bf1d9367865e73c89604ca49e512be10a8504ff8d1d0866ecd620

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.4.tar.gz:

Publisher: publish.yml on johnsutor/so101-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file so101_nexus-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: so101_nexus-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 12.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for so101_nexus-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cc13ac59a4be17a3ffe5587d2e2140ca6f63432558c613c6bd4afda638e0a491
MD5 0c799ee9184b44ec63b9f34e12ea35ee
BLAKE2b-256 9fd6ddd91baf2d2d850f21619a8521f07620c2b51dd29f62744fa55e882da40f

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.4-py3-none-any.whl:

Publisher: publish.yml on johnsutor/so101-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page