Agents should answer in HTML.
htmlify.ai hosts the result.
A chat thread renders every answer as prose. The open-source htmlify skill renders dense Markdown as a self-contained HTML page instead, and htmlify.ai hosts that page at a stable, versioned URL. Every upload is archived in cite.pub.
- Frontier flagship: best tool use, 200k ctx, highest price - Frontier value: close behind, much cheaper per token - Open weights: self-hostable, 128k ctx, mid quality - On-device: private, free, 32k ctx, weakest tools
What it does
Three pieces, one loop
Render with the open skill
trycopilotai/htmlify is an MIT-licensed skill for Claude Code and Codex. Formal mode preserves the source order for print; curated mode extracts dates, decisions, risks, and owners into a visual layout. Either way the output is a single self-contained HTML file, verified against the source.
Host at a versioned URL
An upload is pinned to a path and a 7-character git commit: htmlify.ai/<user>/<path>@<commit>. Re-uploading the same path and commit appends a new version, and the bare path always serves the newest one.
Archived by cite.pub
htmlify.ai is a hosting layer on top of cite.pub. Every upload reserves an 8-character short code, backed by cite.pub's durable archive, that resolves at both htmlify.ai/<code> and cite.pub/<code>.
For developers
The hosting API
The ingest API is documented as a machine-readable htmlify.ai/SKILL.md, so an agent can run the whole flow itself. Rendering is not part of the API; that is the skill's job. Uploads must be self-contained (inline CSS and JavaScript, no external assets), at most 4 MiB, and start with a doctype.
| Call | Endpoint | Returns |
|---|---|---|
| POST | auth.trycopilot.ai/login/ | Mints an auth token |
| POST | htmlify.ai/upload/?path=…&commit=… | 201 JSON: canonical_url, short_code, cite_pub_url, bytes |
| GET | htmlify.ai/<user>/<path>@<commit> | The pinned version; the bare path serves the newest upload |
| GET | htmlify.ai/<short_code> | The archived document; the same code resolves at cite.pub |
| DELETE | htmlify.ai/api/docs/version/<uuid>/ | Permanently deletes one upload version and its archive |
| DELETE | htmlify.ai/api/docs/path/?path=<path> | Permanently deletes every owned version at the path |
# upload a self-contained HTML document
curl -s "https://htmlify.ai/upload/?path=2026-08-04-frontier-model-tiers/index.html&commit=8ef9ebd" \
-H "Authorization: Bearer $TCAI_AUTH_TOKEN" \
-H "Content-Type: text/html" \
--data-binary @index.htmlUpload
Upload a document
The form posts to the same /upload/ endpoint documented above.
Agents: fetch /SKILL.md for the API flow.