pagevault Showcase GitHub

Open source · Self-hosted on Cloudflare · MIT

You made something.
Now hand it over.

Publish an HTML or Markdown artifact to a real URL and decide who can open it. Runs on your own Cloudflare account, on the free tier. Whoever you send it to installs nothing.

Get it running → See it live →

Free. Yours. No account for your reader, no seat for you.

The everyday version

An HTML file is the one thing nothing will carry.

Drive won't render it. Email mangles it. Slack strips it. A public link is all-or-nothing, and the "just zip it" version ends with someone opening report.html in Notepad.

Markdown has most of the same problem. It is what your AI hands you by default, and outside a developer's editor it arrives as a wall of asterisks and pound signs. Both formats share one trait: they are finished work that looks unfinished everywhere you can actually send them.

So the good artifact — the infographic, the model, the write-up you and your AI spent an afternoon on — arrives as an attachment nobody opens.

Start where you are

Two ways to run it.

Both are free, and both run on your own Cloudflare account. Public takes about ten minutes and asks nothing of your reader. Secured adds a login wall in front of it.

Public

Just share it.

Free · about ten minutes · your own domain optional

Deploy to your own Cloudflare account and publish. You get an unguessable link that anyone you send it to can open — no login, no install, nothing to sign up for. Put it on your own domain now, later, or never.

  • Renders HTML and Markdown properly
  • Publish from the terminal or straight from a chat
  • Every document sandboxed, noindex by default
  • Undoes cleanly if you change your mind

For anyone with a file and a person to send it to.

Secured

Lock it to named people.

Free · your own domain · Cloudflare Zero Trust

Put it on share.you.com and gate documents to specific email addresses. Your reader gets a six-digit code by email and reads the document. No account, no password, no app.

  • Three modes per document: only you · named people · anyone with the link
  • Grants are additive — add one person to one report without rebuilding anything
  • Identity handled by Cloudflare Access; one Worker function decides what's visible

For protecting your own work — or running a whole practice (below). Needs your own domain and Cloudflare Zero Trust, both on the free plan.

You are not picking a plan. Start Public and add Secured whenever you actually need a door — re-run setup, choose Secured, and everything you have already published carries across untouched. It undoes just as cleanly.

Secured · portals

A portal is just a collection with a door on it

One durable URL holding a set of documents, with permissions on the collection instead of on each link. Name the people who can open it once, and everything you put there is theirs to browse.

If you just have things to keep

One portal for your household paperwork, one for a board you sit on, one for your own notes that nobody else opens. A private shelf with a URL — no filing system to learn.

If you're running a practice

One portal per client. Nine months and fourteen artifacts later they have one bookmark, not fourteen emails — and adding someone to their team is one change, not fourteen.

  • Private, gated to named people, or fully public — one setting, same model
  • Everything in one place the right people can browse, and nobody else can find
  • Leakage between portals is impossible by construction, not by convention

Honest limit: with a handful of documents and one audience, a shared folder is simpler. Portals earn their keep once the artifacts pile up or the audiences differ.

Try it — pick how a document travels

Who can open it
What they do
Cloudflare seat cost

Features

Built for the way you actually work.

Publish from the conversation that made it

The MCP server runs inside your Worker. claude.ai, Desktop, mobile, Claude Code — same server, all of them. You never export a file.

The link stays current

Publishing over a title replaces the document in place, same URL. No graveyard of stale links, and it asks before it overwrites.

Your reader does nothing

No account, no app, no extension. A link, or a link and a six-digit code.

You can tell whether they opened it

Secured documents record who opened what, and when. You read it with one command — pagevault views — from your own machine, not from the browser console. That is deliberate: putting it in the console would mean handing the Worker a far wider Cloudflare credential than it holds. No IP addresses, no user agents, no third-party analytics, and a rolling three-month window.

Every artifact is treated as hostile

Sandboxed iframe, strict CSP, and a test that fails the build if anyone ever grants the frame your origin.

It's yours

Your Cloudflare account, your domain, your KV, your data. MIT-licensed. Delete it and it's gone; there's no vendor in the middle.

Nothing is stranded

Read any document back as its original source. Export the whole system as a folder tree of plain files.

Take the full feature tour → Every mode, every guarantee, and what it deliberately isn't.

Why it's shaped this way

The link is not the unit. The client is.

Nine months into an engagement you've made fourteen artifacts for one client. Fourteen links, fourteen emails — and in March they're digging through Gmail for the architecture doc you sent in January.

Every other tool in this category treats the link as the unit: publish a file, get a URL, done. PageVault puts permissions on the client, and keeps their whole collection in one place.

Then it does the thing that only works because an AI assistant is in the loop: the collection reads back. Months later you ask Claude — over the very same connection you published through — "what did we decide about the migration?", and it searches that client's portal and answers out of the documents themselves. You are not hunting for a file; you are asking a question.

→ search_portal("Acme Corp", "V2 migration")
← 1 match · read_document("v2-migration-plan")
Phased cutover: stand up a read-replica first, dual-write for two weeks, then flip. Rollback window held at 30 days.

Publishing and remembering become the same act.

Start to finish

See it.

Ask for it.

Claude · PageVault connected
Publish this to the Acme portal, share link.
▸ publish_document
portal: "acme"
title: "Q3 Infra Review"
visibility: "link"
https://acme.you.com/p/7f3k9q2mZx1a
Published. Here's the link — anyone you send it to can open it, no login.

You say it in the chat where you made the thing. A tool call runs, and a URL comes back.

It lands where it should.

pagevault console Upload D

Acme Corp

/v/acme

Fractional-CTO engagement. Strategy reviews, migration plans, and the security work — all gated to their team.

3 people · 5 documents · one URL they bookmark once
Documents
5
Q3 Infra Reviewhtml Anyone with link 2026-03-14
V2 Migration Planmd Team 2026-02-28
Security AuditmdDraft — only you Draft 2026-02-11
Infra Cost Modelhtml Team 2026-01-22

The owner console: portals down the side, one client's documents in the main panel, each with a badge showing how far it can travel.

They open it.

acme.you.com/p/7f3k9q2mZx1a

Acme Corp · Q3

Q3 Infra Review

Recurring hosting is down to near zero after the Cloudflare move. Compute is now the main remaining line, and the read-replica cutover held its 30-day rollback window without incident.

−78%
hosting spend
30d
rollback window

The full write-up, rendered live at a real URL — the reader installs nothing.

Check your email

We sent a six-digit code to cfo@acme.com. No account, no password — enter it and read.

4 1 9 2
Verify and read →

The reader's view — the rendered artifact on your domain, beside the code prompt that makes "no account, no password" concrete.

Deploy once. After that it's a sentence and a link.

Straight answers

Where PageVault doesn't win.

We built a field guide covering ten tools across six capability groups, and PageVault leads two of them. Here's the short version of the other four.

Want comments and live collaboration?

jonesphillip/sharehtml — same Cloudflare design, and it does what we deliberately don't.

Need the host to never see your plaintext?

Use an end-to-end-encrypted tool. Our Worker can read what it serves.

Need watermarks, an NDA gate, a named audit trail?

That's a deal room. Different product.

Need CRM, invoicing, e-sign?

That's a client-portal SaaS, and a much larger product.

Read the full field guide → It's served through PageVault, so it's also a working sample.

Dogfood

This page is the product.

The field guide and the feature walkthrough are single self-contained HTML files — inline styles, inline script, no build step, no external assets, no tracking — served through PageVault, into the same sandbox every document gets.

Written in a conversation. Handed over as a link. If a claim on them were false, they'd be the thing that broke.

Ten minutes and a Cloudflare account.

Get it running → Read the code →

MIT · pre-1.0 and honest about it · built by @danjamk