Introduction
- The one architectural decision that matters
- Generation is full-stack
- Why output stays consistent
- What every published site gets
- Where to go next
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.orgJSON-LD describing the site and its organisationllms.txt— a plain-language brief for answer enginessitemap.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
- Installation — get it running
- Configuration — the settings that matter
- Theming — reskin it for your brand
- AI providers — bring your own model