I got tired of paying $50+/month for uptime monitoring on side projects that make $0. So I built my own.
The Problem
Every uptime monitoring service I tried was either:
- Too expensive for indie projects (Pingdom, Datadog)
- Too complex with features I don't need
- Ugly dashboards that made me not want to use them
All I wanted was:
- Check if my site is up
- Tell me if it goes down
- Don't charge me $50/month for it
The Build
I built OwlPulse in a single day using:
- FastAPI for the backend (~500 lines)
- SQLite for zero-config storage
- APScheduler for background checks
- Cloudflare Tunnel for deployment
The Core API
@app.post("/monitors")
async def create_monitor(monitor: MonitorCreate):
api_key = secrets.token_urlsafe(32)
# ... create monitor with API key
return {"id": monitor_id, "api_key": api_key}
That's basically it. Create a monitor, get an API key, start checking.
Background Checking
async def check_monitor(monitor_id: int):
async with httpx.AsyncClient() as client:
start = time.time()
response = await client.get(url, timeout=10)
response_time = (time.time() - start) * 1000
# Log the check, update status, fire webhook if changed
Pro plan gets 1-minute checks. Free gets 5-minute checks.
What I Learned
1. Simple beats feature-rich
I was tempted to add:
- Multi-region checks
- Fancy charts
- Team management
- SSL monitoring
- etc.
But none of that matters if the core is solid. Ship simple, iterate later.
2. API-first is underrated
Most monitoring tools force you into their dashboard. I wanted something I could integrate anywhere — Slack bots, CLI tools, custom dashboards.
REST API with webhook callbacks = maximum flexibility.
3. Pricing is a feature
$9/mo unlimited monitors. That's it. No per-monitor pricing, no hidden fees, no enterprise upsells.
Indie devs shouldn't need to do math to figure out their monitoring bill.
Try It
OwlPulse is live at owlpulse.org.
- Free tier: 3 monitors, 5-min checks
- Pro: $9/mo unlimited, 1-min checks, webhooks
The whole thing is ~500 lines of Python. Sometimes the best solution is the boring one.
What's your uptime monitoring setup? Anyone else built their own?
Top comments (0)