A home for the HTML files you (and your AI) keep generating. Drag a file in and get a link that stays the same when you update it, keeps every version, tells you how it was read, and whose forms just work.
"The unreasonable effectiveness of simple HTML." Hacker News, 1,064 points
For the people who never needed React in the first place, and for the AI assistants that keep handing you a single .html file with nowhere to put it.
You asked Claude for a pitch deck and got back a 1.5 MB HTML file. You wrote a one-pager. You generated a dashboard. You exported a PRD as HTML.
Now what? Vercel wants a git repo. GitHub Pages wants a workflow. Drive doesn't render. Email won't open it. You upload it somewhere, share the link, and ten minutes later notice a typo. The link is already in someone's inbox.
Hostus is the missing layer between I have an HTML and here's the URL.
Open any document you own and replace the file, or ask Claude through the connector to make the change. The URL doesn't change. The person you sent it to doesn't know you fixed it.
And every update is kept: a version history you can browse and restore. Ship v2 to the same link, and roll back if v2 was a mistake.
It's how docs should work when the doc is just HTML.
Send a proposal and you get more than a view count. Hostus measures reading time per section: which parts held attention, what got re-read, where people stopped. On email-gated docs, you see it per reader.
Cookieless, like everything here. No IPs stored, no fingerprinting, no creepy pixels, no session replay. Just time per section, counted the same way we count views.
The "Reading by section" card from a gated proposal's analytics. Your client saw a document. You see what held them, what worried them, and where they closed the tab.
Ask Claude for a sign-up page, a survey, an RSVP, and the HTML comes back with a <form> that submits to nowhere. Upload it to Hostus and it submits to you. No action URL, no key, no backend to wire up. Fields with a name are enough.
Every response lands in an inbox on the doc and in your email, with Reply-To set to the person who wrote it. Answering is a plain reply. Ask Claude "who signed up this week?" and it reads them too.
The Responses inbox on a sign-up page. Each of these also reached your email with Reply-To set to the sender, so answering Marina is a plain reply.
Ask Claude for a tracker and it forgets everything on reload. Ask for a report and it dies with the chat. What your AI produces has nowhere to live: it never becomes a link, it can't keep data, it goes stale, and a month later you can't find it or tell what happened to it.
Hostus is that place. A second brain for the things you ship, not the notes you take. The page keeps what people do on it. The map shows everything you've shipped and how it was read. And you ask it, in plain words, what happened.
A checklist, an RSVP, a poll, a leaderboard, a kanban, a mini CRM. Claude writes any of them in one HTML file, and every one forgets its state on reload. Host it here and it remembers. The page calls hostus.data to add, list and watch its own records; Hostus injects the SDK, knows who the reader is, and keeps everything. No backend, no API key, no localStorage.
// rsvp.html, written by Claude. Nothing else to set up. const { add, watch } = hostus.data; form.onsubmit = async (e) => { e.preventDefault(); await add('rsvp', { name: form.name.value, going: true }); }; watch('rsvp', render); // everyone sees the list update
hostus_data lists collections and records: "who's coming to the offsite?", "clear the test votes". Free plan: 1,000 records per collection. Pro: 20,000.
Every document is a node. Lines connect docs that talk about the same thing, by meaning, not by folder. Colors are groups the map finds on its own. Then reading is drawn on top: the size of a dot is its views, a warm halo is attention in the last 7, 30 or 90 days, a ring is a reader who identified by email. Filter by group, tag or window; click a node and it focuses two hops out. It's a map of your work, not a poster of it.
One click publishes the map as a doc on Hostus, on its own link, with the reading of the period baked in. Publish again next month and it's a new version of the same link, so the history shows how the work grew. Hover any node and ask about it.
The Map of a founder's account: proposals, onboarding docs and investor updates, with the last 30 days of reading on top. Published as a doc, it looks exactly like this, on a link you can send.
"What did we quote Northwind in the last proposal?" Hostus searches your docs by meaning, answers in a few lines, and every claim carries a citation that opens the doc at the right section. If nothing in your docs is relevant, it says so instead of inventing. No memory between questions, nothing executed, and text inside a doc can't give it instructions. Free plan: 20 questions a day. Pro: 200.
The Northwind proposal quotes $18,400 for diagnosis, rollout and eight weeks of follow-up, with a 12-month term.1 Three people at Northwind opened it; Pricing held 71% of their reading time and was re-read twice, while Timeline was never reached.2
Three pieces, one loop. The page keeps what people do on it. The map shows what you shipped and how it was read. And you ask it, in plain words, what happened. That's where the work of your AI lives.
Every doc ships with three access modes. Switch anytime. It takes effect on the very next request.
Only you and the people you invite, each signed in with their own magic link. The closest thing to a vault.
Readers enter an email before the doc opens. Restrict it to a list or a whole domain (@client.com), or leave the list empty and simply identify everyone who walks in. Reading data comes back per reader.
Anyone with the link, and only with the link. Docs are noindex by default, so nothing you host ends up on Google.
You ask Claude to generate a pitch in HTML for an investor. You drop it into Hostus, copy the link, paste it into Slack. Six hours later you notice the MRR figure is outdated. You ask Claude to fix the number and it updates the doc through the connector. Same link, v2. The investor reloads and never knows. Next morning you ask Claude how it went: opened three times, most of the reading time on traction. Time to follow up.
That's the workflow Hostus is built around.
Drag any .html into your dashboard, or ask Claude to publish it. Live in under ten seconds, with SSL, a slug you pick, and a link preview you control.
Public link, invite-only, or email-gated, where readers leave an email before the doc opens and you know who opened it, and when.
Replace the file from the doc page, or ask Claude to change it. Same link, new version, and every version kept, ready to restore.
Cookieless analytics plus reading by section: what held attention, what got re-read, where readers stopped. If the page has a form, every response lands in its inbox.
Connected via MCP, Claude finds your docs, updates them by intent, and reads the reactions (attention, form responses) to draft the next version, on the same link.
The founder, PM, or consultant who lives between Claude / ChatGPT / v0 and a Slack thread with investors, clients, or co-founders. The person who generates 3 to 10 HTML artifacts a week (pitches, PRDs, dashboards, mockups) and needs to share them like docs, not deploys.
If that's you, Hostus is built around your exact week.
See it for your job: consultants, founders, creators, agencies.
The web got heavy because we forgot what it was for. A one-pager, a pitch, a brief, a report: most documents don't need a build pipeline, a CDN config, a 200KB JS bundle, or a deploy that fails six months later because Node moved on.
They need to load fast, render anywhere, stay accessible by default, and live at a stable URL.
That's HTML. It's been there the whole time.
Hostus is infrastructure for that idea, and for the moment in 2026 when every AI assistant in your life can output one in two seconds.
hostus.data to save, list and watch its own records. Shared, per reader, or owner-only. No backend.
Connect Hostus to the Claude app and Claude publishes, finds and updates your pages straight from the chat, and remembers them. Eighteen tools: semantic search across everything you've hosted, updates by intent ("fix the pricing table"), saving meeting notes as context, reading how your docs were read, and reading what people typed into your forms. One login, no API key, no terminal:
You'll paste it in the next step.
https://app.hostus.io/api/mcp
In Claude (web or desktop), click “Add custom connector” and paste the URL.
That's it. Ask Claude to publish a page and it lands on your Hostus, with a public link.
Prefer the terminal? claude mcp add plugs it into Claude Code with an API key. There's also a public API (POST /api/v1/documents with a Bearer key) and a Claude Skill.
A real loop, live today: Claude reads the reaction data through hostus_attention and rewrites through hostus_update.
Start free. No card, no clock. Every feature is included on every plan; paying just removes the limits. Cancel anytime, and whatever happens, the links you published stay live.
Every feature, for your first pages. No card, no trial clock.
Pay as you go. Switch to annual whenever you want.
Equivalent to $4.17/month. Best value if you're shipping HTML weekly.
Start free: drop a file at the top of this page, no card needed. You only pick a plan if you outgrow the free limits; your links stay live either way.
You don't, really. Drop an HTML file at the top of this page, give us your email, and we send you a magic link. Click it and you're in your dashboard with the doc already there. No password, no separate signup form.
You can upload a build output, but that's not what Hostus is optimized for. The product is built around single HTML files, the kind a person writes or an AI generates. For SPAs, Vercel and Netlify are great.
Tiiny is great for drag-and-drop static hosting. Neocities is a cultural project for personal websites. Hostus is built for the page that keeps changing on the same link, updated by its owner only, and for the workflow of someone shipping AI-generated HTML every week. Different shape of problem.
If nothing rides on the page, do that. It's free and one click. Hostus is for the page someone important is going to open: a client, an investor, your team. A published Artifact gives you a link and stops there: no gate you control, no idea who opened it or what they read, and its form submits to nowhere. On Hostus the same file gets a link that stays the same when you update it, with version history, private or email-gated access, reading by section, a form that stores its responses, and Claude can update and read it through the connector. HTML from any tool works, Claude included. See Hostus for Claude Artifacts and the guide on sharing an Artifact.
Your files are .html. We make them downloadable. No proprietary format, no lock-in.
Private docs require a magic-link sign-in tied to a grant we issue when you accept an invite. Each document lives on its own isolated subdomain (<id>.hostus.page) so even the HTML running on one doc can't see another.
A middle ground between public and invite-only: the viewer types an email before the doc opens, and you see who viewed and when in your analytics. Restrict it to a list or a domain (@client.com), or leave the list empty and simply identify everyone who walks in. It's consent-based identification, perfect for knowing who opened a pitch, not hard security. For truly restricted access, use a private link with invites.
Time spent per section of your document, anchored to its headings (h1 to h6). You see which sections held attention, which got re-read, and where readers stopped. Per reader on email-gated docs, aggregated otherwise. It's cookieless: no IPs stored, no fingerprinting, no scroll recordings, no heatmap pixels. Your own visits don't count. Docs without headings don't generate this data.
Yes. Any <form> with named fields in a hosted doc stores its responses automatically. No action URL, no key, no backend to connect: upload the HTML your AI generated and it already works. Forms that already post somewhere else (Formspree and friends) are left alone. Responses show up in an inbox on the doc (unread state, a reviewable spam folder, CSV export, close after N responses) and each one arrives by email with Reply-To set to the respondent, so replying is one click. Claude can read them back over MCP (hostus_responses) and act: "who signed up?", "close sign-ups, we hit 50". Free plan: 100 responses a month; extra ones are kept and unlocked on Pro. Your form never breaks for the visitor.
Eighteen tools over MCP: publish and update docs (by intent: "fix the pricing table" works), semantic search across everything you've hosted, read summaries or specific sections, find related docs, save meeting notes as context tied to a doc, read the reading data (hostus_attention) to suggest the next version, read form responses (hostus_responses) to summarize or follow up, and read what your apps stored (hostus_data). One OAuth login in the Claude app, no API key.
Yes. Any HTML on Hostus can call hostus.data to add, list and watch records: a checklist, an RSVP, a poll, a leaderboard, a kanban, a mini CRM. Hostus injects the SDK when the page loads and already knows who the reader is, so there's no backend, no API key and no localStorage. Three modes: shared (everyone reads and writes), per reader (each person sees only their own records, you see all), owner only (everyone reads, only you write). Anonymous readers on a public page get a signed cookie so their records stay theirs. Claude reads it back over MCP with hostus_data. Free plan: 1,000 records per collection, 20 collections per doc; Pro: 20,000 per collection.
A graph of everything you've hosted. Each doc is a node; lines connect docs that talk about the same thing (by embeddings, not by folder), and dotted lines mark the same folder or tags. Colors are groups the map detects on its own. Reading is drawn on top: node size is views, a warm halo is attention in the last 7, 30 or 90 days, a ring is a reader identified by email. Filter by group, tag or window, click to focus two hops out, and hover a node to ask about it. "Publish my map" turns it into a doc on Hostus, on its own link, private or public, with or without reader emails. Publishing again creates a new version of the same link. It needs three or more indexed docs to take shape.
You type a question in plain words and Hostus answers from your own docs, in a few lines, with a citation on every claim that opens the doc at that section. It searches by meaning first; if nothing in your docs passes the relevance bar it says so and never calls the model, so it doesn't invent. No memory between questions, no actions taken, and text inside a doc is treated as data, never as instructions. We log the question and which docs were used, never the answer text. Free plan: 20 questions a day; Pro: 200. Docs from other people's folders you can read are included; nobody else's docs ever are.
Every account starts free, forever. No card, no trial clock. You get every feature (updates, versions, email gate, reading by section, forms, the Claude connector) for up to 2 MB of HTML or 20 documents, whichever comes first, plus 100 form responses a month. Hit a limit and you pick a plan to keep creating: $9.99/month or $49.99/year. Everything you already published stays live either way.
Yes, through shared folders. Share a folder with one invite link and choose what the link grants: can read, or can add docs. Everyone who joins sees every doc inside, including the ones added later, subfolders too. Contributors upload straight into the folder, from the dashboard, the API, or Claude, and each doc stays theirs: their quota, their edits, their reading data. As the folder owner you see everything, can change anyone's permission, remove people, or take a doc out of the folder. No seats, no per-member pricing, on every plan including free. What isn't built: co-editing the same doc at the same time. If you need it, tell us at team@hostus.io.
Yes. Replace the file from the doc page on any device, or ask Claude through the MCP connector; the link stays and the previous version is kept.
No account first. Drop a file, give us your email, click the link we send.
Drop your HTML ↑