Most 3D generation tools end at a mesh. You get a shape, it looks right in a viewport, and then you have to work out whether it can exist as a real object. LDraw Nova starts from the other end: its output is an LDraw file, the open format the LEGO CAD community already uses for parts, builds and instructions, and its checks are about geometry rather than appearance.
Why the format is the whole argument
LDraw is not a rendering format. It is a parts library and a file format: every brick has a part number, every placement is a transformation, and models are assembled from real catalogue parts. Tools like LeoCAD, LDView and LDCad read it.
That choice does more work than any feature list. A generated model opens in the software builders already use, its parts list can be priced against real bricks, and the file stays editable after generation. Nothing is locked behind the generator.
What the agent actually does
The repository is a set of tools rather than a prompt box. It finds parts and reference constructions, generates editable MPD files, checks geometry, renders previews and compares parts lists. Python generators handle larger procedural designs where a hand-written plan would be tedious.
The working loop is documented, and it is honest about being a loop rather than a one-shot:
- Choose a design and inspect the parts or example constructions it needs.
- Write a JSON plan, using Python when calculations or loops help.
- Run review, open the previews, repair the source and repeat.
- Deliver the editable MPD, the source, the checks and the reviewed images.
A single command runs the whole thing:
./ldraw-agent review examples/bridge.plan.json --outdir output/bridge-review
The output directory is the interesting part: PNG previews, the model, a validation report, a Python-generated bill of materials, a LeoCAD BOM comparison, and a manifest tying every artifact to a model revision. That last item is what makes the loop repeatable, because you can tell which preview belongs to which version of the source.
Build infers the output path and writes only after source and geometry checks pass. Force exists for a deliberate rebuild. Review with no render runs the intermediate Python checks when you do not need images, and the doctor command reports which local dependencies are missing.
What the checks do not prove
This is the sentence that decides whether the tool is useful to you. The README says successful checks provide evidence, not proof of physical buildability. Warnings, skipped checks and required visual inspection stay explicit rather than being rolled into a green result.
The current checks do not certify material collision freedom, structural strength, motion, or real part and colour availability. In practice that means the agent can hand you a model that passes every automated test and still cannot be built, because two parts occupy the same space in a way the checker does not model, or because the colour it chose is not produced.
Anyone who has tried generative 3D for physical objects recognises this gap. The tool's answer is to keep it visible instead of papering over it, which is the right call and also means you stay in the loop. You have to open the previews and look.
Setup is real work
There is no installer that hides the dependencies. You need Python 3.12 or newer, an installed LDraw parts library pointed at by LDRAW_DIR, Poppler for pdftotext, and LeoCAD on PATH. The repository ships the reference data and connector metadata the tools use.
export LDRAW_DIR=/path/to/ldraw
./setup.sh
./ldraw-agent doctor
If you do not already have an LDraw parts library, that is the first thing to sort out, because the tools assume the official library rather than bundling it.
A web app, and VR
The interactive app lives in a sibling repository, ldraw-nova-docker, and expects matching release tags cloned side by side. The first Docker build needs about 5 GB of disk. It serves on localhost port 8765, or on 8443 for VR on a Meta Quest 3 with a self-signed certificate to accept.
The app has no login and is meant for a trusted network, which is the correct assumption for a local tool and worth stating before you expose it.
Semantic reference search needs a TypeSafe API key and jev-rerank. It is optional: offline catalogues, the shipped examples and the full-text search engine all work without it. That matters, because the offline path is what makes the tool usable on a plane.
Getting a model into Blender
The prepare-glb script converts through the installed mpd2glb converter, so a generated build can be rendered or animated elsewhere. The README is careful here: the editable MPD remains the authoritative model and the GLB is an export. Regenerate the GLB rather than editing it, or the two drift apart.
Who should care
The audience is narrower than "AI 3D generation" suggests. If you want a pretty mesh of a spaceship, Meshy or Spline AI will get there faster and will not ask you to install a parts library.
LDraw Nova is for people who want the thing to be buildable in principle: LEGO hobbyists exploring variations before committing to real bricks, and anyone who wants generation to end in a parts list rather than an image. The studs-not-on-top guides and the example models in the repository suggest the author is one of those people, which is usually a better sign than a feature comparison table.
It is AGPL-3.0, written in Python, and the README thanks the LDraw community, LDView, LeoCAD, LDCad, ldraw.rs and pyldraw3 by name. Generation here is standing on decades of volunteer work, and the licence keeps it that way.