Open-source project
Genesis-Embodied-AI/genesis-world avatar
Genesis-Embodied-AI/genesis-world

Genesis World: One Scene, Six Solvers, and a Python Compiler Underneath

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

30,223 stars2,914 forksPythonApache-2.0

At a glance

What is it?
Genesis World is an Apache-2.0 Python simulation platform that puts rigid bodies, FEM, MPM, PBD, SPH and IPC in a single scene with a shared state. The interesting part is not the solver list, it is the Quadrants compiler that lowers Python kernels to CUDA, ROCm, Metal, Vulkan, x86 and ARM64.
Who is it for?
Adopt Genesis World if your problem needs more than one solver type in contact with the same objects, and you want that expressed in Python rather than in a C++ engine you have to fork. Do not adopt it if you need a stable API surface today: the project was renamed from Genesis, the last push is dated 2026-10-01, and releases v1.4.3, v1.4.4 and v1.4.5 all landed inside about three weeks.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • Genesis-Embodied-AI/genesis-world30,223 ★ · +284
Star history
Repository2026-09-132026-11-13
Genesis-Embodied-AI/genesis-world29.9k30.2k

284 Stars in the last 61 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The gap Genesis World is aiming at: one scene, several solvers

Most robotics simulators pick a physics model and stay there. Rigid-body engines handle articulated arms and contacts; deformable solvers handle cloth, soft tissue and granular media; fluid solvers handle the rest. When a task crosses those boundaries, a cloth draped over a rigid gripper, a wheel rolling through sand, a blade cutting a mesh, the usual answer is to run two engines and hand-roll the coupling between them. That hand-rolled coupling is where the bugs live, because each engine keeps its own state and its own notion of a timestep.

Genesis World's stated answer is a unified multi-physics engine in which Rigid, FEM, MPM, Particle (PBD and SPH), uipc, an explicit coupler and SAP all share one scene and one state. The repository ships demos that exercise exactly the crossing points: cloth_on_rigid.py, rigid_mpm_attachment.py, cut_dragon.py, sph_mpm.py, sand_wheel.py. The audience is not someone simulating a single Franka arm in free space. It is a research group or a physical-AI team whose environment definition includes soft or granular material and who is tired of writing glue code between two engines that disagree about state.

Four layers, and the compiler is the load-bearing one

The README draws the stack as four layers inside a dashed box. At the top is the Simulation Interface: asset parsing for URDF, MJCF, OBJ, GLB and USD, entity accessors, controllers, sensors, parallel and heterogeneous environments, and a built-in GUI. Below that sits Physics. Below that, Render. At the bottom, Compiler.

The compiler is Quadrants, and it is the part that determines what the rest can promise. According to the README, Quadrants lowers Python kernel code to CUDA, AMD ROCm, Apple Metal, Vulkan, x86 and ARM64, and it carries the project's autodiff, GPU graphs and fastcache machinery. That is a different architecture from a simulator written in C++ with Python bindings. Here the kernels are written in Python and compiled per backend, which is why the README can claim a scale from a single laptop kernel to datacenter-grade GPUs without describing two separate code paths. Whether that claim holds on your hardware is a question about Quadrants, not about the physics demos.

The render layer is similarly pluggable. Three paths attach as camera sensors: Nyx, the in-house renderer built for robotics; Luisa, described as a DSL ray tracer; and Pyrender, a rasterizer. Nyx lives in its own repository, genesis-nyx, which matters for installation because the Nyx examples are among those the README flags as needing optional backends.

Installing it: pip, extras, and the examples that will not run

The README's Quick Installation section points at a single command for the development install: pip install -e ".[dev]". It states that most scripts run end-to-end after that. The qualifier is doing real work. Demos that depend on optional backends, and the README names the IPC and Nyx examples specifically, need the extras listed under Optional extras rather than the dev extra alone.

So the honest sequence is: run the dev install, then run a rigid example such as examples/rigid/franka_cube.py to confirm the base stack works, and only then decide whether you need the IPC or Nyx extras for the examples you actually care about. The catalogue in the README is organized to make that selection easy, split into Physics (solvers and multi-solver coupling), Rendering (in-repo camera setups plus Nyx walkthroughs hosted in genesis-nyx), and Simulation Interface (sensors, GUI, controllers, parallel and heterogeneous envs, tutorials).

The supported Python range comes from `pyproject.toml`, which declares `requires-python` as `>=3.12,<3.14`. The extras are listed in the README's Optional extras section, and the full documentation is at genesis-world.readthedocs.io; anyone planning a cluster deployment should read both before assuming a backend will build.

The coupling demos are the real product, and the real risk

The example list is the most informative artifact in the repository. It is not a tour of features, it is a map of which combinations the maintainers consider worth demonstrating. Cloth on rigid. Rigid plus MPM with attachments. Cutting a dragon mesh. SPH coupled to MPM. A sand wheel. Stable fluid smoke. PBD liquid and PBD cloth. FEM with hard and soft constraints. IPC robot cloth teleop.

That breadth is the pitch and also the caution. A unified engine that carries rigid bodies, two particle methods, FEM, MPM and IPC in one state has more surface area than a rigid-only simulator, and the failure modes are correspondingly harder to isolate. When a cloth-on-rigid demo produces an unexpected result, the question is whether the error is in the cloth solver, the rigid solver, the explicit coupler between them, or the compiled kernel. The README's overview names an explicit coupler and SAP as physics components without going into their stability criteria or timestep constraints.

There is also a naming hazard. The project was previously named Genesis, and the README says so directly. Search results, forum threads and older scripts that refer to Genesis may or may not map onto the current package name, genesis-world. The PyPI package is genesis-world, which is what you should pin.

Where a single-solver simulator is the better choice

If your environment is articulated rigid bodies in contact with other rigid bodies, and you are training a manipulation policy, the multi-solver machinery is overhead you will pay for and never use. A simulator whose entire design is optimized around one contact model will have a smaller API, fewer optional extras to resolve, and a shorter path from install to first rollout. Genesis World's own rigid examples, franka_cube.py, tower.py, contype.py, are there to prove the rigid path works, not to argue that it is the reason to switch.

The same applies to teams that need a frozen API. Three releases, v1.4.3, v1.4.4 and v1.4.5, landed between 2026-09-30 and 2026-10-22. That cadence is healthy for a project of this age and hostile to anyone pinning loosely. If your pipeline cannot absorb a release every couple of weeks, pin an exact version and budget time for the upgrade.

The comparison that matters is architectural, not feature-by-feature. Genesis World compiles Python kernels to six backends through Quadrants and keeps every solver in one scene. A conventional rigid-body simulator with Python bindings inverts that: the engine is a fixed native library, and Python is a control surface. The first approach lets you write a new solver or a coupling term in the same language as your environment code, at the cost of depending on a compiler that must correctly target Metal, ROCm and Vulkan as well as CUDA. The second gives you a stable native core and asks you to leave Python when you need to change physics. Neither is wrong; they fail in different places.

Maintenance cost, licence, and what to check before you commit

Apache-2.0 is a permissive licence with an explicit patent grant and a requirement to preserve notices and state changes. For a research group embedding the simulator in a pipeline, that is about as unobstructed as it gets. It is not legal advice, and the licence file in the repository, not this summary, is the authoritative text. Note that the stack depends on components in separate repositories, notably genesis-nyx and quadrants, and their licences are separate questions from this one.

On maintenance: the project started as an academic effort in December 2024, was renamed from Genesis to Genesis World, and development is now officially supported by Genesis AI. Commercial backing behind an Apache-2.0 project is a specific trade. It reduces the chance of abandonment and increases the chance that roadmap priorities are set by the sponsor's product needs rather than by yours. The rename is the visible symptom: it already invalidated the name that appears in older documentation and scripts.

Upgrade cost is dominated by the compiler, not the Python API. A Quadrants change that affects a backend you rely on is not something you can work around at the environment level. Before adopting, verify three things on your own hardware: that pip install -e ".[dev]" completes and examples/rigid/franka_cube.py runs; that the optional extras for your chosen renderer, Nyx, Luisa or Pyrender, resolve; and that the coupling demo closest to your task, whether that is cloth_on_rigid.py, rigid_mpm_attachment.py or cut_dragon.py, produces a result you consider physically plausible. If the third check fails, no amount of API ergonomics will save the project for you.

Editorial conclusion

Adopt Genesis World if your problem needs more than one solver type in contact with the same objects, and you want that expressed in Python rather than in a C++ engine you have to fork. Do not adopt it if you need a stable API surface today: the project was renamed from Genesis, the last push is dated 2026-10-01, and releases v1.4.3, v1.4.4 and v1.4.5 all landed inside about three weeks. Before committing, install with pip install -e ".[dev]" and run examples/coupling/rigid_mpm_attachment.py and examples/coupling/cloth_on_rigid.py on your actual hardware, then check whether the IPC and Nyx examples resolve their optional extras on your platform.

Frequently asked questions

What is Genesis World?

Genesis World, previously called Genesis, is a simulation platform for robotics and embodied AI learning. It layers a Pythonic simulation interface over a unified multi-physics engine, three rendering paths and a compiler, and it reads assets in URDF, MJCF, OBJ, GLB and USD formats.

How does Genesis World compare with Isaac Sim?

The honest answer is what Genesis World documents about itself. Genesis World is a Python-facing platform where the physics solvers share one scene and one state, rendering attaches as camera sensors, and the Quadrants compiler lowers Python kernels to CUDA, ROCm, Metal, Vulkan, x86 and ARM64 while carrying the autodiff machinery. Any performance or fidelity comparison against another simulator has to be run by you.

Which Python versions does Genesis World support?

The package metadata declares requires-python as greater than or equal to 3.12 and less than 3.14, so Python 3.12 and 3.13. The release build also requires setuptools, wheel, cython 3.0.0 or newer and numpy 1.26.4 or newer.

Official sources

  1. Genesis-Embodied-AI/genesis-world on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/genesis-embodied-ai-genesis-world.svg)](https://hysenlabs.com/projects/genesis-embodied-ai-genesis-world)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/genesis-embodied-ai-genesis-world.svg)](https://hysenlabs.com/projects/genesis-embodied-ai-genesis-world)

Was this useful?