Static hosts are metered on the assumption a human edits a few times a day. An agent doesn't work that way. Which hosts count builds, which count deployments, which count nothing — and where the bill actually comes from.
Somebody on r/ClaudeAI asked last week how to publish a single HTML file Claude had written, in a way that gives a stable link and lets them swap the file later without learning a deployment stack. The answers were the usual, sensible ones: GitHub Pages, Netlify, Vercel, Cloudflare.
Further down the same thread, someone mentioned deploying about a thousand times and getting a bill for it.
Both of those are correct. They're just answering different questions — one is "where can this page live", the other is "what happens when the thing doing the editing is a machine that doesn't get tired". The second question barely existed two years ago, because publishing was something a person did deliberately, at human speed.
Every free static tier on the market was sized around a person: you build a site, you tweak it, you push a fix, you come back next week. A few deploys a day, most days none. Under that assumption a limit like "500 builds a month" is effectively infinite and nobody ever reads it.
Point an agent at the same host and the shape of the workload inverts. It edits, previews, notices a spacing problem, edits again. Ten changes in an hour is an ordinary afternoon, not an unusual one, because iteration costs it nothing and it has no instinct to batch. The traffic to the page stays at roughly zero the whole time — you're the only one looking at it.
So you end up with a workload that is heavy on writes and almost empty of reads, pointed at infrastructure priced for the opposite. That's not a flaw in anybody's product. It's a new usage pattern arriving at meters that were calibrated before it existed.
Static hosting looks like one category from the outside. On the axis that matters here it's three.
Build-based hosts — GitHub Pages, Cloudflare Pages, Netlify, Vercel with a framework — run a pipeline every time the source changes. The pipeline is the product: it's what turns a repo into a site, runs your framework, and gives you previews and rollbacks. So the pipeline is the thing that gets metered, and an agent editing ten times an hour runs it ten times an hour.
Drop-based endpoints — Netlify Drop, Vercel Drop, and the drag-a-file tools — skip the pipeline and take the finished output directly. Faster and simpler, with a different consequence: each drop generally creates a new deployment, and often a whole new project with a new address. Vercel's documentation puts it plainly: each drop creates a new project, and Drop does not redeploy into an existing project. For a throwaway preview that's exactly right. For a link you already sent somebody, it means your edits are landing somewhere they'll never look.
Document-style hosts treat the page as a thing with an identity, the way a shared doc does: the file has an address, and replacing the contents doesn't create anything new. There's no build because nothing is being compiled, and no new URL because the page already existed. This is the shape that suits an agent loop, and it's also the shape that's useless if your page needs to be compiled — nothing is running your build step, because there isn't one.
Which of the three you want isn't a quality ranking. It's a question about what your page actually is.
These are the caps that a fast editing loop meets first — the short-window ones, not the monthly headlines.
| Host | What it counts | The cap that bites first |
|---|---|---|
| GitHub Pages | Builds | 10 builds per hour (soft limit; doesn't apply via a custom Actions workflow) |
| Cloudflare Pages (Free) | Builds | 500 builds/month, and only 1 build at a time |
| Vercel (Hobby) | Deployments and builds separately | 100 deployments/day; 100 builds/hour — but a static index.html is not classed as a build |
| Netlify (Free) | Credits | 300 credits/month, covering builds and the rest together |
| Vercel Drop | New projects | Each drop is a new project, not a redeploy |
Checked against each vendor's own documentation on 25 August 2026 — GitHub Pages' limits page, Cloudflare's Pages limits page, Vercel's limits page and Drop docs, and Netlify's pricing page. Every one of these is theirs to change; check the source before you plan around a number.
Two things worth pulling out of that table.
The first is the concurrency line on Cloudflare's free plan. One build at a time doesn't sound like a limit at all until an agent triggers a second change while the first is still building — then you're queueing, and the agent is waiting on infrastructure rather than doing the work.
The second is the two separate meters on Vercel. Their docs say hosting a static file isn't a build, and also that Hobby allows 100 deployments per day. A single HTML file published a hundred times sails past the build meter and lands squarely on the deployment one. Reading only the build limit would tell you there's no problem.
"Which host is cheapest" turns out to be the wrong question, because most of these are free at the volumes involved. The bill in that thread came from a project with a real build step, deployed a thousand times — the pipeline ran a thousand times and did a thousand times the work. That's not a pricing trap; that's a pipeline being used.
The more useful question is which axis your bill scales on. If it scales with traffic, an agent is harmless: it generates almost no traffic. If it scales with edits, an agent is close to the worst workload you could hand it, because edits are the only thing it produces in volume.
And there's a second axis that's easy to miss while you're worried about the first: whether the address survives. If each republish mints a new URL, the cost isn't money at all — it's the link you already sent going quietly stale, which is a slower and more expensive kind of wrong. That failure mode has its own piece: does the client get a new link when your workflow runs again covers what to store between runs so the address stays put.
Four questions, in the order that saves you the most time:
Worth saying plainly: caps aren't the same as meters. Almost everything has some rate limit, including us — uploads here are capped at 30 an hour per address, which exists to stop bot loops rather than to price your usage. The difference that matters is whether the number is there to protect the service or to bill you for the pipeline you're running.
If the page is a framework app with a compile step, you want a build host and you should expect to pay for builds — Vercel and Netlify are genuinely good at this and it's what they're for. An agent hammering a build pipeline is doing real work each time; the cost is honest.
If the page is a repo-backed site you edit a few times a week, GitHub Pages and Cloudflare Pages are excellent and free, and the per-hour caps will never come up. The full free-hosting comparison goes host by host on the other axes — permanence, visibility, custom domains.
If the page is one finished self-contained file that an agent keeps revising, what you want is the document shape: replacing the contents of a page that already has an address, with no pipeline in between and the link unchanged on the other side. That's the slot miinideck is built for, and it's also why private link versus public deploy is worth reading first — the deploy question and the who-can-see-it question tend to arrive together.
The pattern underneath all of it is the same one that keeps showing up as agents take over steps people used to do by hand: the tool isn't wrong, and neither is the agent. The assumption between them — that publishing is something deliberate, occasional, and human-paced — is the thing that quietly stopped being true.
Claude Code wrote the file. Now a teammate or a client has to see it working — and the obvious options each solve a different half of that. An honest split across GitHub Pages, Notion, paste-style hosts, an internal server, plain email, and a private link, judged against the five things people actually ask for.
Cloudflare Pages is a public, global CDN site — built to be found and to scale. A private link is built to reach a named audience and nobody else. They solve opposite halves of "I made a page, now what." Here's the honest fit for each, where the backend boundary sits, and how to pick in one question.
GitHub Pages publishes a public, git-tracked site to the open web. A private unguessable link delivers a self-contained page to specific people. Here is the honest split — by who reaches it, what the URL is for, and where the work lives — so you pick the right one instead of bending one to fit.
miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.