Like Datadog, but for free-tier limits.
We email at 80% — before the cliff.
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 and GitHub Actions live now. Vercel, 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.
How it works
From sign-up to first alert in under 60 seconds.
Paste a read-only API token from Cloudflare or GitHub Actions today; six 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.
For solo devs validating side projects.
For people running real things on free tiers.
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.
One click via the Stripe customer portal. No "contact us to cancel" nonsense. Refunds 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. Coming in next 2 weeks: Vercel, 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.
Solo devs lose hours to overages every month. You don't have to.