genesis-world

Simulation platform for general-purpose robotics & embodied AI learning.

29,740 stars Python Markdown Skills API Spec
AI Prompts & Specs

!Genesis World teaser

Genesis World

![PyPI - Version](https://pypi.org/project/genesis-world/)
![PyPI Downloads](https://pepy.tech/projects/genesis-world)
![Documentation](https://genesis-world.readthedocs.io/en/latest/)
![GitHub Issues](https://github.com/Genesis-Embodied-AI/genesis-world/issues)
![GitHub Discussions](https://github.com/Genesis-Embodied-AI/genesis-world/discussions)

Genesis World is a simulation platform for physical AI developments. It combines a unified multi-physics engine, a photo-realistic renderer (Nyx), and a cross-platform compiler (Quadrants) behind a Pythonic simulation interface. Genesis World is designed to scale from a single laptop kernel to datacenter-grade GPUs, while remaining easy to read, extend, and embed in research code.

It was previously named Genesis and started as an academic project since Dec 2024, and its development is now officially supported by Genesis AI.

For more technical details, refer to our blog post.

Table of Contents

1. What is Genesis World?
2. Catalogue
3. Quick Installation
4. Contribution
5. Support
6. License and Acknowledgments
7. Citation

What is Genesis World?

!Genesis World stack

Genesis World occupies the four layers inside the dashed box. Above sits whatever you build (robotics environments, ML pipelines, data generation, agentic simulation); below sits whatever compute backend you have.

- Simulation Interface — the user-facing API: asset parsing (URDF, MJCF, OBJ, GLB, USD, …), entity accessors, controllers, sensors, parallel and heterogeneous environments, and a built-in GUI.
- Physics — a unified multi-physics engine integrating Rigid, FEM, MPM, Particle (PBD / SPH), uipc, an explicit coupler, and SAP, all sharing one scene and one state.
- Render — three rendering paths plug in as camera sensors: Nyx (our in-house renderer designed for robotics), Luisa (DSL ray tracer), and Pyrender (rasterizer).
- CompilerQuadrants lowers Python kernel code to CUDA, AMD ROCm, Apple Metal, Vulkan, x86, and ARM64. It carries Genesis's autodiff, GPU graphs, and fastcache machinery.

Documentation


- Genesis World
- Quadrants
- Nyx

Catalogue

Three sections, mirroring the Genesis layers that ship runnable demos: Physics (solvers and multi-solver coupling), Rendering (in-repo camera setups plus the Nyx walkthroughs hosted in genesis-nyx), and Simulation Interface (sensors, GUI, controllers, parallel/heterogeneous envs, and tutorials). Most scripts run end-to-end after pip install -e ".[dev]"; demos that depend on optional backends (e.g. the IPC and Nyx examples) need the extras listed in Optional extras.

Physics

| | | |
|---|---|---|
| Rigid: franka cube | Rigid: collision tower | Rigid: contype |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_franka_cube.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/collision_tower.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/collision_contype.webp" width="240"> |
| FEM: hard & soft constraint | MPM: tutorial | MPM: sand wheel |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/fem_hard_and_soft_constraint.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_mpm.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_sand_wheel.webp" width="240"> |
| SPH: rigid | SPH: + MPM | PBD: liquid |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_sph_rigid.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_sph_mpm.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/pbd_liquid.webp" width="240"> |
| PBD: cloth | Stable Fluid: smoke | IPC: robot cloth teleop |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_pbd_cloth.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/smoke.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/ipc_cloth_teleop.webp" width="240"> |
| Coupler: cloth on rigid | Coupler: rigid + MPM | Coupler: cut dragon |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_cloth_on_rigid.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_rigid_mpm_attachment.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_cut_dragon.webp" width="240"> |
| Coupler: water wheel | Coupler: flush cubes | SAP: Franka grasp rigid cube |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_water_wheel.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_flush_cubes.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sap_franka_grasp_rigid_cube.webp" width="240"> |
| Rigid: contact patch | | |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/collision_contact_manifold.webp" width="240"> | | |

Rendering

Genesis exposes three rendering paths as camera sensors: built-in (Nyx / Luisa / Pyrender) and detailed Nyx walkthroughs hosted in genesis-nyx.

| | | |
|---|---|---|
| Follow entity | Animated camera | Nyx: hello |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rendering_follow_entity.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rendering_moving_camera.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_01_hello_nyx.png" width="240"> |
| Nyx: attached camera | Nyx: PBR materials | Nyx: light types |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_02_attached_camera.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_03_materials.png" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_04_light_types.png" width="240"> |
| Nyx: 3D Gaussian splat | Nyx: object picking | Nyx: multi-cam multi-env |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_05_gaussian_splat.png" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_06_object_picking.png" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/nyx_07_multi_camera_multi_env.png" width="240"> |

Simulation Interface

| | | |
|---|---|---|
| Controlling a robot | GUI: ImGui joint control | Heterogeneous envs |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_control_your_robot.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/gui_imgui_joint_control.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/het_articulated.webp" width="240"> |
| Domain randomization | Sensor: depth camera | Sensor: IMU |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_domain_randomization.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_depth_camera_custom_vverts.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_imu_franka.webp" width="240"> |
| Sensor: lidar | Sensor: tactile sandbox | Sensor: contact force |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_lidar_teleop.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_tactile_sandbox.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_contact_force_go2.webp" width="240"> |
| Sensor: surface distance | Sensor: temperature grid | GUI: debug drawing |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_surface_distance_shadowhand.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sensors_temperature_grid.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_draw_debug.webp" width="240"> |
| GUI: mesh point picker | GUI: mouse interaction | Diff-IK controller |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/viewer_mesh_point_selector.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/viewer_mouse_interaction.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_diffik_controller.webp" width="240"> |
| Batched IK | Drone | Advanced: worm |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_batched_IK.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/drone_hover_train.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_advanced_worm.webp" width="240"> |

Quick Installation

Using pip

Install PyTorch first following the official instructions.

Then, install Genesis via PyPI:

bash
pip install genesis-world  # Requires Python>=3.10,<3.14;

For the latest version to date, make sure that pip is up-to-date via pip install --upgrade pip, then run command:

bash
pip install git+https://github.com/Genesis-Embodied-AI/genesis-world.git

Note that the package must still be updated manually to sync with main branch.

Users seeking to contribute are encouraged to install Genesis in editable mode. First, make sure that genesis-world has been uninstalled, then clone the repository and install locally:

bash
git clone https://github.com/Genesis-Embodied-AI/genesis-world.git
cd genesis-world
pip install -e ".[dev]"

It is recommended to systematically execute pip install -e ".[dev]" after moving HEAD to make sure that all dependencies and entrypoints are up-to-date.

Optional extras

| | |
|---|---|
| IPC solver (uipc backend) | pip install pyuipc (Linux / Windows x86, NVIDIA GPU) |
| Nyx renderer | pip install gs-nyx — see genesis-nyx |

Quadrants is bundled with Genesis automatically; no extra install. The standalone wheel (pip install quadrants) is documented at Quadrants for users who want the compiler outside Genesis.

Using uv

uv is a fast Python package and project manager.

Install uv:

bash

On macOS and Linux


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

On Windows


powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Quick start with uv:

bash
git clone https://github.com/Genesis-Embodied-AI/genesis-world.git
cd genesis-world
uv sync

Then install PyTorch for your platform:

bash

NVIDIA GPU (CUDA 12.6 as an example)


uv pip install torch --index-url https://download.pytorch.org/whl/cu126

CPU only (Linux/Windows)


uv pip install torch --index-url https://download.pytorch.org/whl/cpu

Apple Silicon (Metal/MPS)


uv pip install torch

Run an example:

bash
uv run examples/rigid/single_franka.py

Contributing to Genesis

The Genesis project is an open and collaborative effort. We welcome all forms of contributions from the community, including:

- Pull requests for new features or bug fixes.
- Bug reports through GitHub Issues.
- Suggestions to improve Genesis's usability.

Refer to our contribution guide for more details.

Support

- Report bugs or request features via GitHub Issues.
- Join discussions or ask questions on GitHub Discussions.

License and Acknowledgments

The Genesis source code is licensed under Apache 2.0.

Genesis's development has been made possible thanks to these open-source projects:

- Taichi: the original compiler that Quadrants forked from in June 2025. Kudos to the Taichi team for their technical support over the years.
- libuipc: IPC solver backend.
- FluidLab: Reference MPM solver implementation.
- SPH_Taichi: Reference SPH solver implementation.
- Ten Minute Physics and PBF3D: Reference PBD solver implementations.
- MuJoCo: Reference for rigid body dynamics.
- libccd: Reference for collision detection.
- PyRender: Rasterization-based renderer.
- LuisaCompute and LuisaRender: Ray-tracing DSL.
- Madrona and Madrona-mjx: Batch renderer backend

Citation

If you use Genesis in your research, please consider citing:

bibtex
@article{
genesis2026genesisworld,
author = {Genesis AI Team},
title = {The Role of Simulation in Scalable Robotics, Genesis World 1.0, and the Path Forward},
journal = {Genesis AI Blog},
month = {May},
year = {2026},
url = {https://www.genesis.ai/blog/the-role-of-simulation-in-scalable-robotics-genesis-world-10-and-the-path-forward},
}

bibtex
@misc{
Genesis,
author = {Genesis Authors},
title = {Genesis: A Generative and Universal Physics Engine for Robotics and Beyond},
month = {December},
year = {2024},
url = {https://github.com/Genesis-Embodied-AI/genesis-world}
}

<!--
Catalogue entries pruned from the Physics grid. Kept here as a reference so
they can be reinstated later. The links and thumbnail paths are all still
valid in the repo; just paste any pair of rows back into the Physics table.

| Rigid: grasp bottle | Rigid: collision pyramid | FEM: elastic dragon |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_grasp_bottle.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/collision_pyramid.png" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/elastic_dragon.webp" width="240"> |
| FEM: SAP fixed constraint | SPH: liquid | Coupler: grasp soft cube |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sap_fem_fixed_constraint.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_sph_liquid.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_grasp_soft_cube.webp" width="240"> |
| Coupler: cloth + rigid | SAP: Franka grasp FEM sphere | SAP: FEM sphere + cube |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/coupling_cloth_attached_to_rigid.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sap_franka_grasp_fem_sphere.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/sap_fem_sphere_and_cube.webp" width="240"> |

Pruned from Simulation Interface (same logic — labels/paths still valid):

| Entity name | Select rendered envs | GUI: keyboard teleop |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_entity_name.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_selecting_rendered_envs.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/keyboard_teleop.webp" width="240"> |
| Control franka | Position control comparison | IK + motion planning |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_control_franka.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_position_control_comparison.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_IK_motion_planning_grasp.webp" width="240"> |
| Close kinematic chain | Advanced: muscle | Advanced: hybrid robot |
| <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/rigid_closed_loop.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_advanced_muscle.webp" width="240"> | <img src="https://raw.githubusercontent.com/Genesis-Embodied-AI/genesis-world/readme-assets/videos/tutorials_advanced_hybrid_robot.webp" width="240"> |
-->