HOW IT WORKS · NO MAGIC

The life of an edit, end to end.

No database. No server. No lock-in. Your site is a folder of files in a repository you own; an agent edits it and two platforms serve it. This is everything that happens.

  1. 01 / 06

    You describe the change

    in plain language

    Tell an AI agent what you want, in any language. No syntax, no admin panel to learn.

  2. 02 / 06

    The agent edits the repo

    read schema.ts · write .md/.html

    The agent reads your content model, edits the right files, and saves the change as a commit, exactly like a developer would.

  3. 03 / 06

    GitHub stores the version

    git push origin main

    Your repository is the source of truth. Every version is recorded and reversible. The repo belongs to you: take it anywhere, any time.

  4. 04 / 06

    Cloudflare Pages builds

    astro build

    A static build compiles the files to plain HTML. Nothing to run in production, nothing to hack, nothing to patch.

  5. 05 / 06

    The global edge serves it

    300+ cities · cached

    Your site goes out from Cloudflare's network, close to every visitor. Page views are unmetered, so it is fast everywhere, and free.

  6. 06 / 06

    Google and agents find it

    sitemap.xml · llms.txt

    It's a real site on the open web, with real URLs, structured data, and a contract for agents. Discoverable by design.

The stack, named

Four ordinary tools, each doing its own job.

Nothing here was invented. Astro renders, Git remembers, Cloudflare serves, and one small broker holds the secrets so your site never has to. What Lanza does is wire them together and then get out of the way.

astro build

Astro renders it

Astro compiles components to HTML ahead of time and ships no framework to the browser. The rendering code is not in your repository: it lives in the lanza-site npm package, and Astro's srcDir points into it. Your repo holds words, data and templates. The templates are ordinary HTML with {{placeholders}}, which is what lets an agent write one and a person still read it.

git push origin main

Git remembers it

Every page is a file. Every save is a commit on the staging branch, and publishing is a merge into main. That is the entire publishing model. There is no database, so there is nothing to migrate, nothing to back up and no export feature to build: git clone is the export, and git revert is the undo.

push → build → edge

Cloudflare Pages serves it

Pages watches the repository, runs the build on every push, and serves the result from around 300 cities. Page views are unmetered, so traffic never moves the bill. Branch previews are what make staging real: your draft gets its own URL, built by the same pipeline as production. A handful of Pages Functions cover what cannot be static: the /admin gate, the GitHub proxy and /api/mcp. Every public route stays static and cached.

connect.lanzacms.com

The broker holds the secrets

Your site is a tenant, and a tenant holds no private key: it ships with a public one and can only verify. The broker is the other half. It runs onboarding, signs a short-lived RS256 session naming your GitHub login and your site's origin, and mints a GitHub token per save, scoped to one repository and good for about an hour. Your site checks the signature, then checks separately that the person is an owner: a valid signature proves someone signed in, not that the site is theirs.

What you actually own

A thin repository, and a version you pin.

This is a whole Lanza site. The code arrives as a dependency at a version you choose, so nothing we publish reaches your site until you take it.

your-site/
package.jsonlanza-site, pinned to an exact version
astro.config.mjsexport default lanzaConfig()
lanza.config.json{ owner, name }
content/your words: posts, pages, authors, tags
data/site.json, schema.json, appearance.json
templates/page templates: HTML with {{placeholders}}
public/images/anything you upload

npm install && lanza build produces the same static site Cloudflare builds. Clone it, run it, take it somewhere else; nothing in that tree needs us.

For developers

Yours down to the last file.

Astro + Git + Cloudflare Pages, all on the free tier. No database to run, no runtime to keep alive. Skip the connect.lanzacms.com wizard entirely: fork it, self-host it, point your own agent at the same content model. Nothing here holds you in.

Colophon

Proudly built with Claude Code.

Lanza was made this way on purpose. The CMS, the render engine, this page and the site around it were built with Claude Code: an agent working in the same repository, through the same commits and the same reviews a developer would use. A tool for editing a site by talking to an agent ought to be built by talking to an agent. And the proof is public: the whole history is in the repository, mistakes included.

Ready to launch?

See what it costs and start in about 30 minutes.

Start your site