Your site went down at 3 a.m. You fixed it from bed.
Watchbell watches your Vercel apps, databases and domains on free plans. When something breaks it works out a fix and asks you first, on Telegram. One tap, and it's back.
Demo sign-in: demo@west-solutions.web.id · watchbell-demo
No answer on 3 checks in a row. The deploy from 02:58 is the likely cause.
Roll back to the previous deployment?03:12
What actually happened.
Nothing here is a mock-up of a feature we plan to build. It is what Watchbell does today, on a laptop or a small server, with your own free accounts.
You pushed a small change and went to bed.
Vercel built it and put it live. Watchbell saw the new deployment come in.
The site stopped answering.
Watchbell checks every app once a minute. Three misses in a row, so it is down, not just slow.
03:11:00 GET orbit-blog.example timeout 5 s
03:12:00 GET orbit-blog.example timeout 5 s
03:12:00 alert: orbit-blog down · proposed fix: roll back
It asked. You said yes. Twice.
Risky fixes never run on their own. A rollback asks for a second tap, so a sleepy thumb can't do it by accident. It works without a public address: no webhook, no tunnel.
Back up, and checked.
Watchbell rolled production back to the last good deployment, then checked the site again before calling it fixed.
Over coffee, the short version.
A morning email with what happened overnight, plus the things that are about to become a problem.
- Supabase "shop-db": 82% of the free database size.
- status.acme-studio.example: certificate renews in 12 days.
- Neon "analytics": 46 of 100 compute hours used.
At your desk, everything on one board.
Open Watchbell and the whole night is there: the incident, the rollback, who approved it, and the state of everything else.
Every app, database and domain. One page.
Read through each provider's own API, with a token you paste once and that never leaves your machine.
| Name | State | ||
|---|---|---|---|
| Apps · Vercel | |||
| orbit-blogorbit-blog.example | recovered | ||
| acme-shopshop.example | up | ||
| ember-statusstatus.ember.example | up | ||
| Databases | |||
| shop-dbSupabase · Singapore | 82% full | ||
| analyticsNeon · compute asleep | idle | ||
| Domains | |||
| status.acme-studio.exampleCloudflare DNS → Vercel | cert 12 d | ||
| shop.exampleCloudflare DNS → Vercel | valid | ||
Works with Vercel, Supabase, Neon, Firebase, Turso, Upstash Redis, Cloudflare (DNS and D1) and GitHub.
The slow problems, not just the loud ones.
- Free-plan limits
- Usage against every free limit, with an alert before the edge, not after.
- Sleepy databases
- A free Supabase project pauses after a quiet week. Watchbell warns on day 5 and keeps it awake. Neon is read without waking the compute.
- Certificates and domains
- Certificate and registration expiry, and a warning when Cloudflare's proxy sits in front of Vercel.
- Your cron jobs
- Each job pings its own address; Watchbell tells you when a ping is late. /api/ping/<token>
- Vulnerable packages
- Advisories for your GitHub repos, and a proposed pull request that updates the package.
- Read-only SQL
- Query Supabase and Neon as a role that can't write, inside a transaction that is rolled back anyway.
- AI, if you want it
- Your own Gemini, Workers AI or local Ollama key, behind one OpenAI-compatible endpoint and an MCP server. Off by default.
- A status page
- An optional public page and uptime badges for your READMEs.
Two commands. No account.
- Install Node.js 24, if you don't have it.
- Install Watchbell:
npm install -g watchbell. Prebuilt, nothing to compile. - Start it:
watchbell, then open the address it prints and enter the one-time code. - Connect Telegram and paste a Vercel token. That's the 03:12 part sorted.
$ npm install -g watchbell added 1 package in 4s $ watchbell Watchbell 1.1.0 Created ~/.watchbell/.env with new secrets (they are not shown). Starting on http://localhost:3100 ... Watchbell setup code: 7HQ2M-XK4PA (valid 24 h) Watchbell scheduler started (collector every 60 s, daily at 03:00) Watchbell is running at http://localhost:3100 $ watchbell service install --yes Watchbell will start when you log in.
| Runs on | Linux, Windows 10/11 and macOS, with Node.js 24. The database is built in. |
| Your data | Stays in ~/.watchbell. Tokens are encrypted (AES-256-GCM). |
| Talks to | Only what you connect, plus npm once a day to see if there's a new version (you can turn it off). |
| While asleep | A sleeping laptop checks nothing. For the 03:12 story, run it on a machine that stays on. |
| Costs | Nothing. MIT licensed. |
Do I need a server?
No. A laptop works while it's awake. A home server, an old PC or a small VPS gives you the 3 a.m. coverage.
Can I open it from my phone?
It listens on its own machine by default. Use an SSH tunnel, or start it with --host on your home network. The Telegram buttons work either way.
Is there a Docker image?
Not yet. Use npm or the installers.
Does it need AI?
No. Every AI feature is optional and off until you add your own key.