By Max Techera · Open-source (MIT) · Updated June 2026
How to

Password-protect a whole website

Not just one page — lock an entire multi-file site behind a single password, on your own domain.

npxnpx hushdrop report.html

Protecting one HTML file is easy: Hushdrop encrypts it client-side. Protecting a whole multi-page site — assets, subpages, and all — needs a gate in front of the site, not a single encrypted file. Hushdrop does both.

Lock the whole site in one command

hush ./site -p secret

Visitors hit a branded unlock page; one correct password sets a signed, site-scoped cookie and the whole site opens — every page and asset. The password is never stored; the server keeps only a salted PBKDF2 verifier. Self-host only (hush deploy sets the signing secret automatically).

One page vs. a whole site

For a single HTML file: hush page.html -p secret — zero-knowledge AES-256, the server only ever holds ciphertext. For a multi-file site: hush ./dir -p secret — a server-side edge gate that protects every file under the site. Pick by what you're sharing. See also password-protect a single HTML page.

1

Drop it

hush file.html — or a PDF, markdown, image, or any file — from your terminal or any AI agent.

2

Branded & encrypted

Your logo, OG card, and badge are baked in, then it's AES-256 encrypted client-side behind your unlock gate.

3

Live on your domain

Uploaded to your Vercel Blob and served at yourdomain.com/slug. URL + password on your clipboard.

FAQ

How is this different from protecting one HTML page?
A single page is encrypted in the browser (zero-knowledge AES-256). A whole site can't be one encrypted file, so Hushdrop gates it server-side: one unlock page, a session cookie, every page protected.
Is it really open-source and self-hosted?
Yes — MIT licensed, and it runs on your own Vercel Blob + domain. No third party ever holds your content (it's encrypted client-side) or controls your URL.

Your AI's work shouldn't die in a chat.

Open-source, zero-knowledge, free. Try it in one command:

npx hushdrop report.html --managed