Docs

Everything the landing page leaves out: install choices, updating a shared page, the agent skill, and the limits.

#Install

The CLI is the npm package htmldoc-cli. Pick one:

No install (npx)

npx htmldoc-cli login
npx htmldoc-cli report.html

Global install (shorter command)

npm i -g htmldoc-cli
htmldoc login
htmldoc report.html

Both print one line on success: the share link. Errors go to stderr, so the link is safe to pipe.

No terminal at hand? Publish from the browser instead.

#Sign in once

htmldoc login prints an approval link and opens it in your browser when it can. Sign in with GitHub, check the code and the requesting address, press Approve. In a terminal the same command waits for that click, stores the key, and tells you who you are signed in as.

An agent has no terminal, so for it login exits at once after printing the link, and htmldoc login --wait picks the key up after your click. The skill runs both and relays the link; you only click Approve. A code works once and lasts 10 minutes.

login --paste opens nothing and asks for one thing: your API key. Get it from the dashboard after signing in with GitHub. The key is stored in ~/.config/htmldoc/config.json, readable only by you.

For CI or scripts, set HTMLDOC_API_KEY in the environment instead of running login.

#From the browser

Sign in and press + New on the dashboard. Two tabs: Upload picks an .html or .md file from your machine; Paste source takes a filename and the source text. The filename's extension decides the type.

The link appears at the top of the dashboard with a Copy button. Same checks, same size caps, and the same upload budget as the CLI. Updating a page in place stays on the CLI with --update.

#Update a page in place

Every page has a twelve-character id, the last part of its link. Pass it with --update to replace the content behind the same link and reset its 30-day clock:

htmldoc report.html --update abc123def456
htmldoc report.html --update https://p.htmldoc.space/abc123def456

The CLI remembers which file went to which id. Share the same path again and it tells you the id on stderr, so you can choose between a fresh link and an update.

An expired page stays revivable for 7 more days with --update. After that its id is gone for good.

#Ask your AI agent

The htmldoc skill teaches Claude, Codex, Pi, or any AI agent that supports skills to share a file for you. Install it once:

npx skills add ajaxray/htmldoc-skill

Then ask in plain words: "share this doc", "share this plan with htmldoc", "make this shareable", "share it again". The agent runs the CLI, which uses the login above. It never reads your API key and never calls the API directly.

No need to sign in first. If the CLI has no key yet, the agent tells you htmldoc.space needs a GitHub sign-in, shows you the approval link and code, waits for your click, then finishes the share. Already ran login yourself, or set HTMLDOC_API_KEY? It just shares.

#Why HTML, and what to ask for

Agents write better HTML than Markdown. The Claude Code team makes the case in The Unreasonable Effectiveness of HTML, with twenty example pages: plans, PR reviews, design systems, prototypes, reports, slide decks. Their one caveat is that the file then needs somewhere to live. That is this.

Prompts that produce something worth sharing: "make a single self-contained HTML file", "lay the options out side by side in a grid", "add sliders to tune it", "add a copy-as-JSON button". Then "share it with htmldoc".

Scripts run. A shared page keeps its inline JavaScript, styles, and scripts loaded from a CDN, so collapsible sections, sliders, draggable boards, and copy buttons all work. What a page cannot do: set cookies, use the camera, microphone, or location, or register a service worker. Every page shares one viewer origin, so do not keep secrets in browser storage.

#Examples

Three real pages, each shared with the tool. They expire like any other page and get re-shared with --update, so the links stay the same.

Three more, straight from the Claude Code team's html-effectiveness examples (MIT), re-shared unchanged:

#Commands

htmldoc <file>                  share, print the link
htmldoc <file> --update <id>    replace the page behind an existing link
htmldoc <file> --json           print JSON instead of a bare link
htmldoc login                   sign in through the browser, store the key
htmldoc login --paste           paste a key copied from the dashboard
htmldoc list                    your pages, newest first
htmldoc delete <id>             remove a page; its link shows a removed notice

#Limits

file typesOne .html / .htm or .md / .markdown file per page. Markdown is rendered server-side (GitHub-flavoured).
sizeHTML up to 2 MB, Markdown up to 512 KB.
lifetime30 days from the last upload. Updating resets it.
live pages100 per account. Delete or let old ones expire.
uploads10 per minute, 100 per day.
visibilityUnlisted and noindex, not private. Anyone with the link can open it.
badgeEvery page carries a small fixed badge linking here and to a report form. It is hidden when printing.
cachingBrowsers may keep a copy but check with the server on every visit, so an updated page shows at once and a removed or expired one stops showing at once.

#Feedback and roadmap

The roadmap is a set of GitHub issues. React with 👍 on the ones you want; the list sorted by votes is what gets built next.

#Source