Introduction

Dexter

Dexter is an AI agent that generates articulated 3D assets for robotic training in simulators such as NVIDIA Isaac Sim and similar stacks. Give it a product photograph of an everyday object — a dishwasher, refrigerator, or cabinet — and it produces individual part meshes, a kinematic tree, joint definitions, and a USD package that simulators can load and actuate.

Kitchen simulation environment

The problem

Training robot manipulation policies requires thousands of teleoperation trajectories across many environments and object types. Simulators let you scale past the physical world, but every interactive object in a scene needs a 3D model broken into moving parts with correct joint definitions. That work is done by hand today and does not scale.

Recent image-to-3D models (Hunyuan3D, SAM3D, etc.) can generate a mesh from a photo in minutes, but they output a single solid shape with no moving parts. A dishwasher generated this way is one fused block; you cannot open the door or pull out the rack in simulation.

Dexter targets that bottleneck: given a reference image, it produces an articulated asset with separate part meshes, a layout IR, joint definitions, and exportable USD (robot.usda).

What Dexter produces

An articulated asset is many rigid parts (chassis, door, rack) connected by joints. Motion changes joint angles or slides, not a single frozen mesh:

Articulated hexapod example

An articulated hexapod: legs rotate on hinge joints while the body stays one rigid part.

Dexter's output per run:

DeliverableDescription
Per-part meshescomponent_glbs/<part>.glb, one GLB per moving part
Layout IRassembly.json, position, orientation, and scale for each part
Parts IRparts.json, kinematic tree and joint types
Critique IRcritic.json, score and per-part layout fixes
USD exportrobot.usda + textures/, loadable in Isaac Sim

How it works

Dexter runs through OpenCode (opens in a new tab), a coding agent harness. An orchestrator agent sequences two subagents and deterministic tool scripts, pausing at two human gates:

OpenCode agent harness

The orchestrator routes input through analyze and critic subagents; deterministic scripts handle the rest.

In the OpenCode TUI, press Tab or /agents and select orchestrator to run the pipeline:

Select the orchestrator agent in OpenCode

See Architecture for the full system design.

Quick start

pip install -r requirements.txt
export OPENAI_API_KEY=...   # component PNG generation
export FAL_KEY=...          # fal.ai image-to-3D
opencode run --agent orchestrator -- "build the dishwasher from input_images/dishwasher.png"

Full setup: Requirements → Installation & Run.

Documentation

SectionContents
Getting StartedRequirements, installation and run
ArchitectureOverview, agentic loop, agents, IRs, tool scripts
Sample RunsEnd-to-end example with inputs, outputs, and logic
TroubleshootingCommon failures and recovery
Developer GuideProject structure, extending the pipeline, local dev

Objects Dexter has articulated

From a single reference photo each, Dexter has produced articulated 3D assets — separate part meshes, a kinematic tree, and robot.usda — for these everyday appliances:

Dishwasher — door and racks as moving partsRefrigerator — French doors and freezer drawer
Dishwasher inputRefrigerator input
Washing machine — front-load door and cabinetOven — drop-down door and cooktop
Washing machine inputOven input

Bundled inputs: input_images/dishwasher.png, refrigerator.png, washingmachine.png, oven.png. See Sample Run: Dishwasher for a full walkthrough of one run.

Sample run outputs — download the real pipeline artifacts (GLBs, JSON IRs, robot.usda, etc.) to inspect or verify without running Dexter: varmology/dexter-sample-outputs (opens in a new tab) on Hugging Face.

Screen recording of a refrigerator run in OpenCode — source photo through placement to USD export.