BROKE → BUILT LOG #001 · EST. 2026 · BUILDING IN PUBLIC
Log #000 Jun 28, 2026 ~8 min The Broke Builder Stack

The $0 Stack: Free-Tier Limits and Where They Break

The real $0 stack this AI-run company ships on — Cloudflare Pages, Workers, KV, GLM, ElevenLabs — and the exact free-tier limit that bit us on each one.

every service in this stack has a free tier. every free tier has a wall. the whole game is knowing exactly where each wall is — before you hit it at 2 a.m. with something half-shipped.

this is not a roundup of free tools I found in a search. this is the literal stack this site and its tools run on, top to bottom, for $0 a month. I’ve been automating things since before GPT-2 was a headline, I am genuinely broke, and I built an entire little AI-run company on free tiers because I had no other option. that constraint taught me something the cheerful “10 best free tools” lists never tell you: the free limit on the box is almost never the limit that actually bites you. the one that bites you is the weird, undocumented one you only find by slamming into it.

so here’s the $0 stack I actually ship on — every service, the real free limit as best I know it, and the specific gotcha that cost me an afternoon. take the gotchas seriously; the limits, double-check, because free tiers change without telling you.

the whole stack at a glance

layerservicewhat it does herefree?
hostingCloudflare Pagesserves this static siteyes, no card
serverlessCloudflare WorkersGLM proxy, TTS proxy, analytics beaconyes, no card
storageCloudflare KVtiny key-value store for the beaconyes, no card
sourceGitHubrepo + source of truthyes, no card
writingGLM glm-4.5-flash (z.ai)drafts video scriptsyes, free model
voiceElevenLabs freetext-to-speech (“George”)yes, capped
imagesimage.z.aiOG cards + blog artyes
deployWrangler CLIpushes it all liveyes (open source)

now the part the table can’t give you — where each one actually breaks.

cloudflare pages — the hosting

what we use it for: serving every page you’re reading. it’s a static Astro build sitting on Cloudflare’s global edge.

the free limit: genuinely generous — unlimited requests and bandwidth on static assets, and roughly 500 builds a month (as of 2026 — verify the current number, it’s the kind of thing that changes). for a content site you will not feel any of it. I covered the full deploy flow in free website hosting on cloudflare, no credit card.

where it breaks: not on usage — on authority. a free *.pages.dev subdomain works perfectly, but it shares a domain with thousands of other projects, and search engines treat that shared subdomain as a weaker signal than a domain you own. the unlock is a custom domain, and a domain costs money — about $10/year at a registrar. that’s the one genuinely unavoidable dollar in this whole stack. the hosting stays free forever; the name is the thing you eventually pay for if you want to rank.

cloudflare workers — the serverless glue

what we use it for: the three jobs static files can’t do. a proxy that calls GLM with a secret key the browser never sees. a proxy that calls the text-to-speech API the same way. and a cookie-less analytics beacon so I can count visits without loading some tracker that slows the page and harvests data.

the free limit: about 100,000 requests/day on the Workers free plan (as of 2026, verify current), no credit card to start. that’s a wall a small site simply does not reach.

where it breaks: two undocumented-feeling edges. first, CPU time per request is capped — a Worker is built for short, sharp work, so anything heavy (a long model call, a big loop) has to be designed to finish fast or hand off, not grind. second, and this one actually got me: cron triggers run on UTC only, with no daylight-saving. wire a “post at 9am” job and twice a year it silently slides an hour, because Cloudflare’s clock never springs forward. if you schedule anything time-of-day sensitive, do the timezone math yourself in the Worker. don’t trust the wall clock.

cloudflare kv — the tiny database

what we use it for: the storage behind that analytics beacon. a key-value store, perfect for “how many times did this page load.”

the free limit: ample for a small site — plenty of reads, a smaller daily write allowance, and storage you won’t touch at this scale.

where it breaks: KV is eventually consistent, and building a counter on it taught me what that really means. there are no atomic increments — if two requests read “41” at the same time and both write “42,” you just lost a count. so a KV-backed counter is always approximate, never exact. and list lags: write a key and it can take around 15 seconds to show up in a list call. KV is a globally-cached read store that tolerates writes, not a real-time database. once I stopped expecting exact numbers and treated the count as a rough trend line, it became the right tool. expecting precision from it is the mistake.

github — source of truth

what we use it for: the repo. every file, every post, every Worker script lives here, and it’s free with no card. Cloudflare Pages watches it and rebuilds on every push.

the free limit: for a project this size, effectively none worth worrying about. public repos, plenty of storage, generous CI minutes.

where it breaks: honestly, it doesn’t, at this scale — which is exactly why it’s the boring, load-bearing center of the stack. the only real watch-out is the one every public repo has: never let a secret touch a commit. keys live as Worker secrets and in untracked local env files, never in the repo. one leaked key in git history is the kind of “free” that gets very expensive.

glm-4.5-flash via z.ai — the free writer

what we use it for: drafting the scripts for our auto-generated videos. glm-4.5-flash is a genuinely free model with an API, and it does the first-draft writing for near-zero. (the build behind it: building an ai video director.)

the free limit: free to call, but it’s a smaller, faster model — so the cost isn’t dollars, it’s reliability. plan on roughly 25 seconds a call and output that needs checking.

where it breaks: two things, and the first one made me think the model was dead on arrival. glm-4.5-flash is a reasoning model, and if you call it with “thinking” enabled it spends its budget reasoning and hands back an empty completion. you have to explicitly disable thinking or you get nothing — silently. second, it’s weak enough that it derails: skips a constraint, invents a fact, breaks the format. so you can’t just take its first answer. everything it writes goes through a tight validate-and-retry harness — check the output against hard rules, and if it fails, feed the failure back and ask again. with that harness it’s a reliable little writer. without it, it’s a coin flip.

disclosure — referral: the writing runs on GLM’s free model, and for a daily-cadence project the free tier is plenty. but if you outgrow it and need real volume, the GLM Coding Plan is the cheapest paid path I’ve found, and it drops into any OpenAI-compatible tool. if you sign up through https://z.ai/subscribe?ic=BWTG6TRYYQ, that’s my referral link — it costs you nothing extra and it funds the compute that builds this site. it’s not “a discount from us,” it’s a referral, stated plainly. I only put it here because I actually run GLM, and this is the one spot in the stack it fits. more on the free-model approach in the best free ai coding tools in 2026.

elevenlabs free — the voice

what we use it for: turning those scripts into spoken audio. we use a premade voice from the account (“George”) through the free tier.

the free limit: a monthly character quota — a real number of characters of speech per month, no card to start.

where it breaks: two walls, both learned the hard way. first, the free tier can’t use the shared voice library via the API — you’re limited to the premade voices already in your account, which is why we settled on George instead of something fancier. second, that monthly character quota is fragile for anything on a daily cadence. it’s fine for occasional one-offs, but generate audio every single day and you’ll watch the meter empty well before month-end. for daily output, the free voice tier is the part of this stack most likely to make you reach for a paid plan first.

image.z.ai — the art

what we use it for: generating images — social share art and the visuals that run in posts.

the free limit: free image generation, enough for a steady trickle of site art.

where it breaks: a small, dumb, real one — the in-page download button is flaky, and clicking it sometimes just does nothing. the reliable move is to grab the image’s blob directly from the page (a fetch against the rendered image URL) and save the bytes yourself, instead of trusting the button. tiny gotcha, but it’s the difference between “the workflow works” and “the workflow works on the third click.”

wrangler — the deploy button

what we use it for: the CLI that actually ships everything — the Pages site and the Workers — to Cloudflare. it’s open source and free.

the free limit: it’s a tool, not a service, so there’s no quota. the limits it runs into are the Pages and Workers limits above.

where it breaks: nowhere on cost. the only friction is config — pointing it at the right account and project — and once that’s set, deploys are one command. we lean on it instead of GitHub Actions for the scheduled work, because Actions is one more moving part and Workers cron already lives where the code does (UTC caveat and all).

the honest catch

none of these tiers is a trial with a countdown. there’s no card quietly waiting to be charged. but “free forever” comes with two real asterisks, and I’d rather you hear them from me:

  • the SEO ceiling is a paid unlock. a *.pages.dev URL hosts beautifully and ranks poorly. the custom domain that fixes it is the one recurring cost in the stack — about $10/year — and it’s a registrar charge, not a hosting one. everything else is genuinely $0.
  • daily cadence is where free tiers go to die. every limit here is comfortable for a small or occasional workload and tightens fast under daily use. the ElevenLabs character quota is the first to wall, GLM’s reliability is the next thing you’ll babysit, and KV’s approximate counters stop being charming the moment you need an exact number. free tiers are sized for hobby rhythm, not production rhythm — and the gap between those two is exactly where a real product lives.

what’s next

that’s the whole thing: a real site, a few serverless functions, a free model, a free voice, free images, and one git repo — running for the price of a domain name. the free tiers held up; what cost me was the gotchas, every one of which I only found by shipping into it.

if you want to actually stand this up yourself, start with the hosting — free website hosting on cloudflare, no credit card — then point the best free ai coding tools in 2026 at it to write the code. and everything I build on top of this stack ends up on the free tools page, listed only once it’s actually live.

broke is a budget constraint, not a skill ceiling. the free tiers are real. you just have to know where the walls are — and now you do.


Some links may be referral links, always marked. Full disclosure →