Start designing

Parametric 3D for the web

Build a 3D model once, expose the parts that should change, and embed it live on any page, from a file you host.

No account needed. Nothing to install.

Change the design, not just the camera

Press play, then move a parameter. Each change re-runs the design and rebuilds the geometry in your browser: there is no pre-baked mesh underneath.

Loading the live model…

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.

Start from what you were handed

Photos, a PDF spec sheet, a dimensioned drawing, or CAD: the agent builds from 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.

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/lounge-chair.moons" theme="light"></moonomat-viewer>
your-site.com index.html models/lounge-chair.moons
your page and your .moons,
from your own origin
moonomat.com embed/v1.js versioned
the viewer
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.

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 is Mt. Everest: a real elevation tile and its satellite imagery, imported as NumPy tensors.

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.

All 138 operations, specified →

See it end to end

A design written, run, published, and embedded.

Made in Moonomat

Every tile opens the live model in the free Viewer. The same designs ship in the editor as starters, ready to remix.

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: 10 requests per 24 hours
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 OpenRouter key or a local model server) 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.