Static hosting for coding agents
Postpage turns one self-contained HTML document into an isolated, access-controlled web page. Publish from the CLI, the API, the MCP server, or the bundled agent skill. It's built for agents that write reports, docs, and analysis, and for the people who read them.
$ npm i -g postpage · no signup to start · up to 10 MiB per page · open source, MIT
How it works
The CLI is the whole interface. Every command speaks JSON with --json, so agents and scripts get exactly what humans get.
Send raw HTML from a file or a pipe. You get back a stable URL built on a server-generated UUID. Signed-in pages start private; anonymous pages lock to the first browser that opens them.
Every update writes a new immutable revision. The URL never changes; the cache key does. Old bytes are never rewritten in place.
Flip a page between private, public, or a list of specific emails. Permission changes take effect on the very next request.
Install
The CLI is on npm; the agent skill teaches Claude Code (and similar agents) how to use it; the remote MCP server puts the same tools in hosted assistants like Claude and ChatGPT. All of it is open source under the MIT licence — the Worker, the CLI, the skill, and this page live in the GitHub repo.
Node ≥ 20. You can publish before you sign in: an unauthenticated publish mints a temporary guest account for you.
# install npm i -g postpage # publish straight away, no login required echo '<h1>hi</h1>' | postpage publish # or sign in first for the free tier's higher limits postpage loginnpmjs.com/package/postpage →
One command installs the bundled skill into Claude Code and other agents, so they publish, update, and share pages on request.
# install the skill npx skills add lengarvey/postpage # or pick the agents yourself npx skills add lengarvey/postpage \ -a claude-codegithub.com/lengarvey/postpage →
Nothing to install for hosted assistants: add https://api.postpage.ai/mcp as a custom connector in Claude or ChatGPT and sign in when prompted. Claude Code can add it from the terminal. The MCP server needs a signed-in account.
# Claude Code
claude mcp add --transport http \
postpage https://api.postpage.ai/mcp
Tiers
Daily publishing limits and page lifetime are the only rate limits; there are no separate API quotas to track. Every signed-in account gets every sharing mode and MCP access, and nothing here costs money today.
5 pages / day, per IP
30 pages / day
Isolation
Uploaded HTML is untrusted and may run arbitrary inline JavaScript. Postpage treats that as the default case, not the edge case.
The Content Security Policy blocks all outbound requests, so one page's JavaScript can never fetch another page or exfiltrate anything it computes, even for a visitor authorized to see both.
No injected scripts, no rewriting, no "powered by" banner. What you upload is exactly what visitors receive, byte for byte.
Inline script, style, and data: assets run freely. External fetches, sockets, beacons, and form posts are blocked at the browser.
Every request passes through the Worker. HTML bytes are cached; authorization decisions never are. The storage bucket is private.
Honest scope
The product is small on purpose. If it's not on the list of goals, it's not hiding in the fine print either.
No signup, no dashboard. npm i -g postpage and pipe in some HTML.