Like Datadog, but for free-tier limits.
We email at 80% — before the cliff.
Why this exists
It's an email from AWS. Your account has been capped — you exceeded the Lambda free tier three hours ago.
You check Vercel. Bandwidth: 100%. Cloudflare Workers: rate-limited since dinner. Resend stopped delivering at 9pm. The marketing site is down. Customer tickets are piling up. Every cloud's free-tier dashboard says different numbers, and not one of them emailed you before the cliff.
By the time you've put out the fire, it's 4am and your AWS bill is $4,237.16 in surprise overages.
— That happened to me. Twice. Then I built this.
Why Sentinel
Every cloud has a usage page. None of them email you before the cliff. We do.
Default 80% threshold. Email immediately. Discord + Telegram on Pro. No more 11pm site-down emergencies.
We require usage-scope tokens only. AES-256-GCM encryption at rest. Master key in Workers Secrets, never in DB.
Free: every 12h. Pro: every 1h. Polling is the fastest you can know without webhooks (which most clouds don't expose).
Cloudflare, GitHub Actions, and Vercel live now. Supabase, Resend, Render, Neon, R2 shipping over the next 2 weeks. Each adapter takes about a day. Want one we don't have? Open an issue.
7-day rolling history on free, 30-day on Pro. Spot the slow leaks before they become billing surprises.
The Worker source is on GitHub. Self-host it for free, or pay $5/mo for the hosted version with hourly polling.
What you'll actually see
Email by default. Discord, Telegram, and Slack on Pro. Three channels means the one you actually check pings you first.
Hey, your Vercel account just crossed 80% of the free-tier monthly bandwidth limit (82.4 GB / 100 GB).
At your current pace, you'll hit the cliff in ~38 hours. Reply if you'd like FreeTier Sentinel to throttle the project for you.
Cloudflare Workers requests at 10,000,000 / 10,000,000 — degraded. Account is rate-capped. Triggered 14 min ago.
@everyone Resend free tier hit 100 sent / 100. Email delivery is paused until midnight UTC. Upgrade your Resend plan, or pause your campaign.
How it works
From sign-up to first alert in under 60 seconds.
Paste a read-only API token from Cloudflare, GitHub Actions, or Vercel today; five more SaaS shipping over the next 2 weeks. Tokens encrypted at rest.
Default is 80% of free-tier limit. Pick alert channels: email (free), Discord & Telegram (Pro). Multiple per account.
We poll every hour (Pro) and notify you the moment usage trips your threshold. Before the cliff, not after.
Pricing
Pro is a fair $5/month for 1-hour polling and multi-channel alerts.
✓ Try Pro risk-free — full refund within 7 days, no questions asked.
For solo devs validating side projects.
For people running real things on free tiers.
PHFREE6MO · first 50 PH hunters · 6 months free
Slack alerts, webhook API, multi-user workspaces, 15-min polling. Pre-register to be notified when it ships.
Built on Cloudflare
Workers + D1 + KV + Cron Triggers. The whole product runs on the free tier of the cloud it's named for. The dogfood is built in.
You can self-host the open-source version yourself, or pay $5/mo for the hosted version with hourly polling and multi-channel alerts.
// runs every 6 hours on Cloudflare Cron Triggers export default { async scheduled(_evt, env, ctx) { const services = await env.DB .prepare("SELECT * FROM services") .all(); for (const s of services.results) { const usage = await fetchUsage(s); if (usage >= s.threshold_pct) { await sendAlert(env, s, usage); } } } };
FAQ
Reach out if yours isn't here.
AES-256-GCM encrypted in Cloudflare D1. The master key lives in Workers Secrets, separately from the database. We require read-only/usage-scope tokens — never tokens with provisioning or write permissions. If you're paranoid, the source is open — read the code yourself.
Yes. The Worker monitors its own usage. If it ever wakes me up because it hit a Cloudflare limit, that means it's working AND people are using it.
Polling every hour for unlimited services + Discord/Telegram alerts costs real Worker compute and Resend email volume at scale. $5/month is the lowest sustainable price. The free tier is genuinely useful, not a trial.
Yes — one click via the customer portal link Polar emails you at purchase, or by replying to any invoice. No "contact us to cancel" nonsense. Full refund within 7 days, no questions asked.
No. We don't have permission to control your services — that's by design. We notify you at 80% (default, configurable) so you can act: upgrade the service, optimize traffic, or accept the cliff.
Currently shipped: Cloudflare Workers, GitHub Actions, Vercel. Coming in next 2 weeks: Supabase, Render, Resend, Neon, Cloudflare R2. Want one we don't have? Open an issue.
Not yet — the Pro plan focus is hourly polling. If you'd find a webhook for usage events useful, tell us in an issue. We'll add it if there's demand.
Visa, Mastercard, American Express, and major debit cards. Payments are processed by Polar via Stripe Connect (PCI DSS Level 1). FreeTier Sentinel never sees, stores, or transmits your card details — only Polar/Stripe ever touch them.
Yes — Polar generates a PDF invoice each billing cycle and emails it to your account email. Polar is the Merchant of Record, so VAT/sales tax is calculated and collected automatically based on your billing country. Add company name + Tax/VAT ID at checkout if you need them on the invoice. Korean companies: FreeTier Sentinel is operated by a registered Korean business (사업자등록번호 607-20-94796). If you need a 세금계산서 issued via Hometax, email wndnjs3865@gmail.com with your 사업자등록번호 after checkout — typically issued within 1 business day.
Email wndnjs3865@gmail.com within 7 days and we'll refund the wrong account so you don't get charged twice. Don't worry — full refund within 7 days, no questions asked.
Yes. If you maintain an OSS project with 100+ GitHub stars and you'd benefit from monitoring its free-tier usage, email me — I'll comp Pro indefinitely. The free tier is already useful; this is just a thank-you to the OSS community that makes solo SaaS possible.
Solo devs lose hours to overages every month. You don't have to.