Parametric 3D for the web
Moonomat turns photos, drawings and descriptions into configurable 3D models for the web: built by AI, refined by you, embedded with two lines of HTML.
Runs in your browser. Designs are stored on your device.
Press play, then change a parameter. Controls marked ⚡ apply at once; for the rest, press Run and the stair rebuilds in your browser: there is no pre-baked mesh underneath.
Yours, not a stock model
Your initials, your word, your game. A generator hands you something that looks like a mug. These hand you yours.

Monogrammed mug
Your initials in raised glaze on the front. Rebuilds in about two seconds. Print it, give it away.
You bring: your initials
Cookie cutter
Heart, star, gingerbread, or a word of your own. Rebuilds in under two seconds, ready for the printer.
You bring: a word
Chess set from any game
Paste any game and step through it move by move, on a full set of board and pieces.
You bring: a chess game as PGNStart from what you were handed
Plans, drawings, photos. The Design agent reads them, builds the model, renders it, and checks the result against the source.
CAD plan sheets
Farmhouse from CAD plans
Porch, wing and garage taken from the drawings. Six color schemes switch at once.
Published aircraft drawings
Airliner from public drawings
Built from the manufacturer's published planning drawings. Open the fuselage and look down the cabin, row by row.
Type drawings and photos
Train from drawings and photos
A Swiss double-deck cab car. Type a destination for its displays. Mirror angle and track layout switch at once.
Drawings: American Farmhouse plan set by Jay Osborne, freefarmhouse.com, CC BY-SA · Airbus, A321 Aircraft Characteristics for Airport and Maintenance Planning, © Airbus · RABe 512 type drawing © Stadler Rail, SBB press kit 2023.
A design is a file you can read
Designs are written in Moon, a parametric language with a YAML syntax. The Moon runtime rebuilds the geometry from that file: in your browser while you design, and again in your visitor's when they open your page. Because it is rebuilt rather than replayed, the parameters stay live.
moon: "1.0"
doc: A drink coaster.
params:
radius:
default: 0.045
doc: Coaster radius in meters.
min: 0.03
max: 0.08
height:
default: 0.012
doc: Coaster thickness in meters.
min: 0.006
max: 0.03
render:
pipe:
- op: Cylinder
with:
height:
param: height
radiusLow:
param: radius
- op: Fillet
with:
radius: 0.003
Loading the live model…
And because a design is text, it lives in your repo: commit it, diff it, version it like the rest of your code.
Describe it, don't model it
Tell the Design agent what you want and it writes the Moon, runs it, reads the errors and iterates, exploring your files and checking its own work rather than just answering in a chat window.
metal: op: Material with:- color: [0.3, 0.32, 0.36, 1]+ color: [0.72, 0.62, 0.38, 1] roughness: 0.35
A change is a change
The design is source, not a mesh. Ask for the lamp's shade 15% wider and that is the difference you get, not a regeneration that quietly moves three things you had already got right.
It reads what you give it
Photos, a PDF spec sheet, a dimensioned drawing, or CAD: the agent builds from any of them, using a STEP file as a precision reference rather than a shape to trace.
Or write it yourself
Open the editor and write the Moon by hand at any point. Same file either way.
The agent needs a free sign-in and your own AI: your Claude or ChatGPT subscription, an OpenRouter key, or a model server you run.
Two lines of HTML, and a file you host
Pack the design into a single .moons bundle, drop it beside your
other static files, point the element at it. No harder to host than a static
.glb, and your visitors get a configurator, not a frozen
mesh.
<script src="https://moonomat.com/embed/v1.js"></script>
<moonomat-viewer src="/models/moon_watch.moons" theme="light"></moonomat-viewer>
Change the design, not just the camera. Hands and crystal switch at once; the moon day rebuilds the dial in the visitor's browser.
.moons,from your own origin
.moons from your own origin, the viewer from moonomat.comThe parameters become the interface
Whatever you exposed in the Moon file arrives as controls your visitors can use. There is no second configurator to build.
It won't rot
Breaking changes to the viewer and the runtime ship only as new versioned URLs, never in place. An update on our side can't break a page you already shipped.
It works in AR
On supported devices, straight from the same embed: no extra file, no separate pipeline, no app to install.
No page to put it on yet? Share a moonomat.com/view link instead: same live model, nothing to host.
What you can model
Moon is a modeling language, not a mesh generator: solids you can cut and fillet, profiles you can loft, materials you can bake, data you can build geometry from.
Solid modeling
Booleans (union, difference, intersection), plus fillets, chamfers, hulls, mirrors and plane trims, on watertight solids. This sponge is a single cube, drilled.
From 2D to 3D
Extrude, revolve, sweep and loft, over profiles you draw as paths, import as SVG, or set as text in your own font. The teapot: revolved body and lid, swept spout and handle.
Materials, UVs, baking
PBR materials, automatic UV unwrapping, texture and ambient-occlusion baking. Geometry is generated rather than repaired, so it is clean to begin with: no retopology pass.
Data-driven, scriptable
Typed parameters and full ECMAScript expressions inside the file; tensors, tables and graphs as values; noise and image processing. This orbit isn't drawn from data: a script inside the file computes it, point by point.
Imports
Meshes (glTF, OBJ, STL, STEP), vector art (SVG), images, fonts, and data (JSON, CSV, NumPy). This casting mold measures an imported STL and builds itself around it: swap in another model and the block, walls and pour funnel re-fit.
Outputs
A display-ready .glb for any viewer, engine or AR scene; also .svg, .png and .json. Deterministic: the same file always rebuilds the same model.
Computed, not modeled
Some designs are never drawn. A rule grows a family from one seed, and a dataset becomes a shape you can hold.
Asteroid family
Six seeds of one rule set: same material, same scale, a different rock each time.
Tree family
Recursive branching. Every seed grows a different tree of the same species.
Mount EverestSRTM elevation tiles
Your sky, tonightYale BSC5, 1,630 stars
Climate spiralNASA GISTEMP 1880 to 2023
Population pyramidUN World Population Prospects
Pricing
The Viewer is always free. Anyone can open a design you shared, or load your embed, without an account. The editor is free as well; the Design agent is the only metered part.
Free
No account to start designing; a free sign-in adds the agent and sync.
- The full editor, the Moon runtime and the 3D viewer
- Unlimited bundles, stored on your device
- Share by link, QR code, or embed on your own site
- Sync to your own GitHub repository
- Design agent: a daily allowance of requests, with your own AI
Full Moon
Save 40% annuallyBilled $144 annually, or $20 month to month. Prices in USD.
Everything in Free, plus:
- Unlimited Design agent: no daily cap, with any AI model
- Sync to your own Google Drive: your designs, backed up and on every device
On every tier you bring your own AI (your Claude or ChatGPT subscription, an OpenRouter key, or a model server you run) and pay that provider directly, with zero markup from us. The free cap is on the agent workflow, not on inference.
Building a site for someone else?
Only you need a plan. Moonomat is priced per person who designs, not per model, per view, or per site. Your client's visitors never need an account, and nothing is metered by traffic.
And if you stop paying?
Nothing you already published changes. The .moons is a static file
on the server it was published to, and the Viewer is free for everyone.
About Moonomat
Moonomat is an independent, self-funded product: a parametric 3D design tool that runs in the browser, built around the openly specified Moon design language and a viewer that rebuilds those designs live on any web page.
It exists because 3D content for the web is expensive to make well and, once made, frozen: a rendered image or an exported mesh cannot be reconfigured without going back to whoever built it. Moonomat keeps the design as readable, parametric source, so the model can change whenever the product it represents does.
The Design agent is built on the same stance. AI can now produce a detailed, plausible 3D model in one shot. But plausible was never the job, and design was never one shot: it is an iterative craft, a long series of small deliberate changes, and the tenth has to land as precisely as the first. So the agent works in the design's source, changing precisely what was asked and nothing else.
That is the role AI should play here: not replacing designers, but serving them. It turns intent into geometry quickly and exactly, with no thousand-button interface in the way, so that everything a designer can imagine makes it into the model, and the finished design goes live in front of everyone it was made for.