We’re building the Matrix for robots.

Infinite training data for every robot.

LLMs were built on the internet.
Robotics will be built on our infinite worlds.

The world is moving to robotics, and every robot has to be trained. Human data can’t carry that: there will never be enough people to film, or enough hours to film them.

Warehouse · seeded variationsLucky Engine 2026.3

The answer is a virtual world, a Matrix where robots can learn, fail and try again before they touch the real thing. Lucky Engine is the game engine that builds it, with the tools to create those worlds and the simulated light and physics to generate the data.

From one blue cup to a million grasps.

Unitree G1 · cup grab · warehouseLucky Engine 2026.3

Before a robot can work in your warehouse or your home, it has to learn how our world works. Right now it learns from whatever people can film, and there will never be enough of that.

Language models had the whole internet to learn from. Robots need their own version, so we’re building it: think the Matrix, but for robots. A world they can practice in millions of times, a little different every run, where dropping a cup costs nothing.

We’ve put together a team that knows what it takes to build the worlds the future of robotics will be trained on.

DevrimFounder & CEO, Lucky Robots

What is Lucky Engine?

Our cofounder and CTO, Yan Chernikov, walks you through why we’re building Lucky Engine.

The Investors Behind Lucky Robots

We built our own engine to do it.

Built from the ground up for robotics by engine developers from EA’s Frostbite. Game-studio tools, path-traced light and MuJoCo physics let anyone build the room their robot will work in.

A new world for every lesson.

Robots learn from variety. The same task in a thousand different rooms teaches more than one room a thousand times.

One Image. One Prompt. A fully rendered interactive scene.

Claude, Codex and other AI assistants can open a project in Lucky Engine, build the scene and check their own work. Everything they build stays editable.

A brick warehouse loft with arched windows, a teal sofa, a red striped rug, globe pendant lights and a mezzanine with hanging plants: the photo given to the agentReference image

Can you please create the scene in this photograph in the Lucky Engine. Procedurally generate any interactive elements using mujoco physics. Match the lighting and procedurally generate the textures. Add a G1 robot to the scene and have him walk around. When the level is done create a bunch of slow moving camera shots like a real estate advertisement and render them out into a montage. Good luck!

Lucky Engine 2026.3Built by Claude

Built from graphs

Agents build with procedural graphs, so everything they make can still be reshaped by hand or from code.

Every edit can be undone

Undo an agent’s edit like any other. You stay in charge of the scene.

All built procedurally, with working hinges, cupboards and doors.

Make the fridge taller, the drawer deeper or the whole kitchen new, and record again. A robot learns to use the room as well as see it.

A grill lid on a working hinge.
Fridge doors on real joints.
Drawers on MuJoCo slide joints, path traced.

Create infinite worlds.
Create infinite data.

Every seed is a new world, and every world is a new dataset. No cameras strapped to anyone’s head.

What’s behind our compiled reality.

Lucky Engine spins up virtual worlds, just like the Matrix, where your robot can try, fail and learn a million times, then step into reality already knowing the job.

Physically accurate simulation

Lucky Engine runs on real physics, so robots and the objects around them move, collide and break like they would in the real world. Its cameras and lidar act like the real hardware, so the data a robot trains on looks like what it’ll see on the job.

  • Robots move and collide in MuJoCo, the physics engine robotics researchers already use.
  • Anything built from a graph collides properly, and parts joined by hinges move on their own.
  • Build cables that bend, sag and swing under real physics.
  • Virtual lidar scans the room like real spinning and Livox sensors, with presets for three models.
  • Every surface reflects lidar the way the real material does, from twelve measured presets.
  • Virtual depth cameras see through glass and catch glints on shiny parts, just like real ones.
Rubber ducks · Franka PandaLucky Engine 2026.3

Photorealistic path‑traced rendering

Lucky Engine lights every scene the way light works in real life, with natural shadows, reflections and glass. Its virtual cameras work like real ones, so robots learn from images that look like the world they’ll work in.

  • Light bounces around the room like it does in real life, with soft shadows, reflections and glass.
  • Path-traced frames clean up as you work, so you see a sharp picture without waiting.
  • Virtual cameras have a real lens, aperture and sensor, and adjust to the light like a real camera.
  • Area lights, glowing materials, and glass that bends and splits light.
  • Record any camera with the path tracer, so training images match what you see.
  • One panel for bloom, upscaling, ambient occlusion and shadows.
  • Built into our own engine, not on Unity or Unreal.
Café · path tracedLucky Engine 2026.3

Fewer meshes. More math.

Our procedural graphs keep your scenes light and easy to tweak, so you can create endless episodes to train robots on.

  • Change a number and get a new shape. No remodeling.
  • Surfaces come from parameters too, so they can change from one episode to the next.
  • Turn any simple shape into a graph you can edit, without starting over.
  • Give an agent a photo and it builds that room in the engine, with every object still editable.
  • Lucky Engine runs a local MCP server, so AI assistants like Claude and Codex can open projects, edit scenes and check their work with screenshots.
  • Every variation comes from a seed, so any room can be rebuilt exactly, as often as you need it.
  • Expose any parameter, then override it per instance or change it from C# between episodes.
Procedural vase · in the editorLucky Engine 2026.3

Deterministic data your robot already reads

Same inputs, same episode, in a format that already talks to your robot. One kitchen at seed 30, recorded twice in Lucky Engine 2026.3. Every file in both datasets hashes the same: 181 frames, 253 values a frame, and not one bit apart.

  • Datasets come out ready for Hugging Face’s LeRobot tools.
  • Episodes and camera video are saved as standard Parquet files.
  • Choose which joint, sensor and pose values to record in one simple YAML file.
  • Everything runs on one fixed-rate clock, in real time or faster.
  • Time is recorded at a high, fixed rate: up to 10,000 ticks a second.
  • Your Python code and the simulation take turns, one step at a time, so nothing drifts out of sync.
  • Recording stays in step with the simulation, frame for frame.
  • If a run can’t be reproduced bit for bit, its metadata says so.
  • Every tick runs in the same order: sense, decide, step, check, record. No tick is ever dropped.

Bring your robot. Keep your pipeline.

Import any MuJoCo model, or start from a Unitree G1 or Go2, Franka Panda, AgileX Piper or Enactic OpenArm. Drive it from Python over gRPC with Gymnasium environments, and record LeRobot 3.0 datasets your training code already reads.

  • A fixed-rate timeline records the whole episode, and flags any run that isn’t bit-reproducible in its metadata.
  • Choose joint, sensor and pose values in YAML, and get typed Parquet columns with GPU-encoded video, depth and lidar.
  • Every tick runs in the same order: sensors read, your policy decides, physics steps, the result is recorded. Drive it from Python in lock-step, and no tick is ever dropped.
  • Aerial robots on the same MuJoCo physics and Python SDK as the arms and humanoids, with autonomous flight captured as labeled episodes.
train.py
# connect to the running simulationfrom luckyrobots import LuckyRobots lr = LuckyRobots()lr.connect(robot="unitree_g1", scene="living_room") for ep in range(1_000_000):    obs = lr.reset(randomize=True)    while not obs.done:        action = policy(obs.camera, obs.joints)        obs = lr.step(action)        # logs a labeled episode
A Unitree G1 humanoid, head and shoulders, its eyes lighting up orange.

Warehouses need millions of robots. You just need one.

Import any MuJoCo model, or start from a Unitree G1 or Go2, Franka Panda, AgileX Piper or Enactic OpenArm.

Built by the people who build game engines.

Our engineers shipped engine technology on Frostbite at Electronic Arts and created the Hazel engine. We're hiring

  • Devrim
    Founder & CEO
  • Yan
    Cofounder & CTO
  • Artia
    Cofounder & COO
  • Nur
    Chief of Staff & Ops
  • Cameron
    Director of Marketing
  • Michael
    Senior Software Engineer
  • Josh
    Senior Software Engineer
  • Joshua
    Senior Software Engineer
  • Jim
    Senior Software Engineer
  • James
    Senior Rendering Engineer
  • Victor
    Senior Rendering Engineer
  • Ozgur
    Senior Full-Stack Engineer
  • Eren
    Research Engineer
  • Constantin
    Drone Simulation Engineer
  • Bailey
    Software Engineer
  • Emily
    Software Engineer
  • Ecem
    Operations

Every robot starts here.

Build with it.

Build a world, bring your robot and record your first episode today.

Download Lucky Engine

Deploy at scale.

We’ll build your scenes, put a forward-deployed engineer on your team and run the data pipeline with you end to end.

Partner with us

v2026.3 for Linux, Windows and macOS. Older versions · Join the Discord