poplin

A private site, in one call.

Poplin lets an AI agent, or you, publish a folder or one HTML file to your own Cloudflare account. It stays private until you share it.

In development, not released.

Read the documentation

report--k3f9x2ab71qz

One address. You choose who can open it.

Who can open it
Address
https://report--k3f9x2ab71qz-page.example.com
Public name
https://report-page.example.com
You, logged in
opens it
Someone who has the address
is sent to the login
opens it, with no login
Everyone else
would have to guess the address
opens it, at the public name

What anyone but you gets at that address

What someone who has the address gets

What everyone gets

Log in

This address opens after a login.

One command.

Point poplin at a folder or one HTML file. It answers with the new site and its address. The site is private.

An update names the site, so a new publish can never overwrite one by accident. An agent makes the same calls through the MCP server on your machine.

See what that command put up

$ poplin ./report
uploading 5 files, 29 KB
made  report--k3f9x2ab71qz  private
https://report--k3f9x2ab71qz-page.example.com

$ poplin ./report --site report--k3f9x2ab71qz
updated  report--k3f9x2ab71qz  version 2  private
https://report--k3f9x2ab71qz-page.example.com

Every site, on one page.

Your dashboard lists each site, who can open it, and its versions. Only you can open the dashboard.

Your dashboard
SiteAccessVersionsPublished by
reportPrivate2an agent, just now
launch-deckUnlisted3an agent
trip-summaryPublic2you

After you publish.

Roll back a bad update.
Poplin keeps the last 3 versions of a site by default. Going back needs no upload.
Bring back a deleted site.
A deleted site waits in the trash, 7 days by default, before it is gone.
Let a site end by itself.
Give a site an end date. It moves to the trash that day.
Give a site a new address.
One command replaces the address. The old one stops at once.
Take everything out.
One zip holds every site and the settings, as plain files.

Yours, and inside the free tier.

It runs in your account.
One Worker, one bucket for the files, and one database for the records, inside your own Cloudflare account.
Nothing reads your pages.
The Worker stores each file as sent and serves it as stored. It never opens or rewrites a page.
The free limits stop.
The Worker stops at 100,000 requests a day and never bills. The sites pause until midnight UTC.
Storage is capped.
By default poplin refuses an upload past 9 GB in all, or 200 MB for one site, because the bucket bills past 10 GB.
Requests are limited.
By default one visitor gets 600 requests a minute and one site 6,000.

Where sites open.

report--k3f9x2ab71qz-page.example.com

Each site gets an address of its own, so the browser keeps your sites apart. Private sites can be whole folders.

Site addresses end in a marker, -page by default. Cloudflare routes only those to the Worker.

poplin.you.workers.dev/report--k3f9x2ab71qz/

Sites are paths on the free address every Cloudflare account has. A private site is one self-contained file, unless the install allows folders.

Pages there cannot use browser storage, popups, or form submission.

Read what each one protects

Not released.

There is no install command yet.
Poplin is in development. The documentation and thesource are public, and one page compares it with other tools.

Fernhollow Kettle Works: third quarter 2026 sales review

Open in a new tab