Letterpress for the Lessig Sites
Letterpress · a proposal for the Lessig sites

Letterpress

Versioned Static Hosting, Agentic Publishing

Why now?

Today, two critical flaws in PHP were disclosed, with working attack code made public the same day. Roughly 70% of websites run PHP. Every server behind those web sites needed to be patched by human or machine.

As AI models and tooling improve, more and more vulnerabilities will be surfaced, leaving servers at risk. We are already at the point where vulnerabilities can be exploited faster than they can be patched.

What is Letterpress?

My new take on web publishing, reducing costs, increasing performance, and removing nearly all of the attack surfaces for which we are currently liable. The system is based on three principles:

  1. No server-side code should ever be run when a person or machine loads a web site
  2. All content should be stored in a free distributed VCS (Git)
  3. All publishing to the web site should be agentic

WordPress

WordPress assembles each page on every visit using PHP, so real code is running on a real server. That creates an attack surface, the one that became exploitable today.

Before

Letterpress originated before AI and agentic tooling existed. I wrote automated tooling to migrate your dormant WordPress sites to static hosting on AWS. That tooling became the publishing engine for Letterpress.

How it works

The same agent can make any change to the site, not just publish posts.

The Letterpress publishing flow You write on a laptop or phone and send it by editor, email or voice. The blog engine turns it into a draft in GitHub. You preview and approve it. The site is published to Amazon S3 and served by CloudFront. Readers find it through Route 53.
Step 1 of 7Dashed boxes are already running today.
  1. Step 1

    Input surfaces

    A laptop or a phone.

  2. Step 2

    Use the editor, email, or voice dictation

    Letterpress only accepts mail that is provably from you. It checks the signature your mail provider adds, and a second signature only your own key can make.

  3. Step 3

    The agent creates the post

    Title, category, tags, images. AI helps with the formatting and tagging. People decide what actually gets published.

  4. Step 4

    It waits as a draft, saved in GitHub

    The post is filed as a proposed change. GitHub privately stores every version of every page, with who changed what and when. You can also edit it by hand before it goes out.

  5. Step 5

    You see a private preview of the whole site

    Every draft gets its own copy of the site, with the change in place, at a link you can open on any device. Ask for changes and it goes back for another pass. Approve it and it goes out.

  6. Step 6

    It's published!

    Approval builds the site into static pages. They go into Amazon S3, which stores them, and CloudFront, which hands out copies from servers all over the world. From here, it's the same setup already serving your static sites.

  7. Step 7

    Someone visits the site, and no server-side code runs, limiting attack surface

    A reader types the address. Route 53 sends them to CloudFront, which hands them a page. No database is queried and none of our code runs.

Attack Surface

We offload the burden of protecting our attack surfaces to AWS and other commercial entities.

A WordPress site

Admin login page/wp-admin
Plugins and themesthird parties
WordPresscore
PHPtoday's flaw
MySQL databasethe words
Apache web serverport 443
Remote loginSSH
A rented Linux serverUbuntu
8layers we patch

A Letterpress site

Admin login pagenone
Plugins, PHP, databasenone
A server of oursnone
CloudFrontAmazon's
Files in S3Amazon's
0layers we patch

Cost

A server costs the same whether anyone visits or not. Static files cost money mainly when people download them.

WordPress droplet$12–24per droplet, per month, before backups and before my time.
Letterpress site≈$1per site, per month: 50¢ for the address in Route 53, plus storage and delivery.

Estimates for low-traffic sites from published list prices. Delivery costs grow with visitors, so a site that goes viral costs more, and stays up.

The goal: every Lessig site, for a monthly bill in the low double digits.

With no server-side code running, static sites can't process form submissions and the like. Donation forms run as embedded widgets, so they port over to static sites seamlessly.

Demo!

A WordPress blog migrated to Letterpress, from Yours Truly <3