Skip to main content
SO-101 Arm

SO101-Nexus: full-stack robot learning for the SO-101 arm

License Python Docs Tests GitHub release Open In Colab Discord

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

Full-stack robot learning for the SO-101 arm: teleoperation, imitation learning, and RL in MuJoCo. One installable library that takes a robot from demonstrations to a trained policy, built on LeRobot and Gymnasium.

pip install so101-nexus

Full documentation: so101-nexus.com/docs.

Open the PickAndPlace episode viewer instead.

The workflow

Record, then clone, then reinforce. Each stage hands one artifact to the next.

1. Record. Drive a simulated follower with a physical SO-100 or SO-101 leader arm and save LeRobot v3 datasets.

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

2. Clone. Bootstrap a policy from those demonstrations with behavior cloning.

3. Reinforce. Fine-tune with PPO on the GPU-parallel Warp backend, anchored to the demos.

Stages 2 and 3 are one command. No leader arm? It defaults to a published dataset, so this runs end to end on its own:

uv run --extra warp --extra train python examples/bc_ppo_warp.py

Open In Colab

See the workflow walkthrough for the full path.

Run an environment

import gymnasium as gym
import so101_nexus.mujoco  # registers the MuJoCo env ids

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

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

env.close()

Six SO-101 manipulation tasks ship on MuJoCo: PickLift, PickAndPlace, StackCube, Touch, LookAt, and Move. The optional MuJoCo Warp backend (so101-nexus[warp]) registers the same six as GPU-parallel batched vector environments for large-scale RL. See the environment reference.

The same environments are published as a LeRobot EnvHub package, so a LeRobot user reaches them with one call and no import of their own. The Hub files are shims over this library, so pip install so101-nexus is still the prerequisite:

from lerobot.envs.factory import make_env

envs = make_env(
    "johnsutor/so101-nexus-envs:envs/MuJoCoPickLift-v1.py",
    n_envs=4,
    trust_remote_code=True,
)
env = envs["MuJoCoPickLift-v1"][0]

Why

Plenty of SO-101 tooling exists, but little of it connects teleoperation, LeRobot datasets, simulated environments, and training loops into one workflow. SO101-Nexus is that connection: collect demonstrations, replay and evaluate them in matching SO-101 environments, bootstrap with imitation learning, then fine-tune with RL.

  • Teleoperation recorder with a Gradio UI, writing LeRobot v3 datasets with SO follower state and action units plus wrist and overhead camera fields.
  • Gymnasium environments with configurable objects, distractors, colors, spawn regions, rewards, and observation components.
  • Training baselines for behavior cloning and PPO, plus LeRobot processors and policy adapters for evaluating real policies.
  • Optional GPU-parallel Warp backend (experimental, NVIDIA and CUDA only) for batched RL, and an optional ROCm extra for training on AMD hardware.

Recorded MuJoCo teleoperation datasets are published on Hugging Face: MuJoCoPickLift-v1 (viewer), MuJoCoPickAndPlace-v1 (viewer).

Roadmap

  • MuJoCo environments for the SO-101 arm
  • SO-101 tasks: Touch, LookAt, Move, PickLift, PickAndPlace, StackCube
  • 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

See CONTRIBUTING.md, and Stability and versioning for the public-API and release policy.

License

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

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.5.0.tar.gz (16.3 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.5.0-py3-none-any.whl (13.0 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for so101_nexus-0.5.0.tar.gz
Algorithm Hash digest
SHA256 ed5a4f3580d7e8bd66c07b4286cb57778949d6d79c4cecb4b9f010e001b18365
MD5 45280fb97db304e69de85070e3e80278
BLAKE2b-256 6c9bd90a5de4ee26c09268f0339ada2d8ec6e7003d98437beb9495044b767cc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.5.0.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.5.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for so101_nexus-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a795d952e274a1e9a8dcbfb495d5a3ec5df3fc673242ee70e28f4e34345c8b4
MD5 f62710603dbb46153b342e2274e451ea
BLAKE2b-256 86771935b8a0ce496d40ee79376f568de6de536a3a58ed780c99e2727cc48df3

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.5.0-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.

Release history Release notifications | RSS feed

0.5.1

2 files

This release

0.5.0 This release

2 files

0.4.13

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.9

2 files

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

Supported by

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