Skip to content
Loom Documentation

Introduction

Loom is a self-hosted AI website builder. Someone describes a site in plain language; the engine composes it from a reviewed component library, renders it live in the browser, and publishes it to a real URL.

It ships as a complete Laravel application: accounts, teams, plans, a credit ledger, billing, an admin panel and the build engine itself.

The one architectural decision that matters

Most prompt-to-site builders rent a hosted container runtime to preview generated code. That runtime is a third-party dependency, a per-user cost, and a licensing question the moment you resell the script.

Loom does not use one. Instead:

  • Preview happens in the visitor's own browser. JSX is transpiled in-page and framework code resolves through an import map. An open preview tab costs the host nothing.
  • Publishing triggers one server-side build, on demand. A burst of a few seconds per publish, not a dev server per user.

The trade is deliberate: generated sites are scoped to what a browser can transpile and an import map can resolve — React, Vue, or plain HTML. That is the correct scope for a website builder, and it is why this runs on hosting that costs a few pounds a month.

Generation is full-stack

A prompt like "add a contact form" produces the markup and the place the messages land: a live endpoint, validation, an inbox and an email notification.

The backend is declared rather than coded — the model describes the data and the platform serves it. Asking a model for backend code and then executing it would make remote code execution a product feature, which no resold script can offer. See full-stack generation.

Why output stays consistent

Freeform generation produces a different site every run, which is the single biggest quality problem in this category. Loom constrains it:

  • The model picks section slugs from a fixed library and supplies props.
  • The markup comes from the server, not the model. Components are written to the project by the build engine, byte-identical every time.
  • The model's job is composition and copy — the parts it is genuinely good at.

If nothing in the library fits, it writes a bespoke section in the same style and says so.

What every published site gets

Without anyone asking for it:

  • schema.org JSON-LD describing the site and its organization
  • llms.txt — a plain-language brief for answer engines
  • sitemap.xml, robots.txt, canonical URL, Open Graph and Twitter tags

These are generated from project settings at publish time, so they are always present and always current.

Where to go next