Start designing

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.
A made-to-measure winder stair in a two-storey cutaway, with its DIN 18065 readout sign

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.

Start 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.

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.

coaster.moon
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.

Make the arm brass instead of steel.
lamp.moon1 of 407 lines changed
  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>
Moonphase dress watch

Change the design, not just the camera. Hands and crystal switch at once; the moon day rebuilds the dial in the visitor's browser.

your-site.com index.html models/moon_watch.moons
your page and your .moons,
from your own origin
moonomat.com embed/v1.js versioned
the vieweryour page and .moons from your own origin, the viewer from moonomat.com
your visitor's browser
your page
<moonomat-viewer> An iframe, so styles and scripts never leak either way. Inside it, the Moon runtime (WebAssembly) rebuilds the model right here, in the visitor's browser. No render server, nothing metered by traffic.

The 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.

See it end to end

A design written, run, published, and embedded.

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

$0

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
Start designing

Full Moon

Save 40% annually
$12/ month

Billed $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
Go Full Moon

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.

Ownership, licensing and billing, answered →

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.