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()

SO-101 manipulation tasks ship on MuJoCo, including picking, returning to rest, and placement. The optional MuJoCo Warp backend (so101-nexus[warp]) registers the same tasks 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, PickReturn, 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.

Metadata

Release files for so101-nexus 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for so101-nexus 0.7.0
File Size Uploaded
so101_nexus-0.7.0.tar.gz 16.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for so101-nexus 0.7.0
File Interpreter ABI Platform
so101_nexus-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.5 MB

Release files / so101_nexus-0.7.0.tar.gz

Download URL so101_nexus-0.7.0.tar.gz
Size 16.5 MB
Tags Source
SHA-256 checksum
How to use checksums
d5ef38900280b92948a05a3b1a8740f94f47c33e66b34ea83d31ed24b03efec1
BLAKE2b-256 checksum
How to use checksums
d754b97174419ad2816770e5d96714b11d6cfd9b75a8086edc7fc20bd7b3cb0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / so101_nexus-0.7.0-py3-none-any.whl

Download URL so101_nexus-0.7.0-py3-none-any.whl
Size 13.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1ec6a51eb63383e36760360a539ce8a28ed6f359b807b89191473abb90f4a77b
BLAKE2b-256 checksum
How to use checksums
317e840e36e803b849541b3f9e1dad8242d321cd66e15b3293671057ee2b12f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

2 release files

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.13

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page