Vibecode Better Stack

track this build6 phases, 14 steps, beginner friendly
YES · one-shottable
price $34/moyou'd save $408/yrbuild time one sittingcategory ⏱️ uptimereplaced by 0 people

A cron loop, a fetch, an alert webhook, and a status page. The $30/mo is for the dashboard gloss.

the project pack5 files · written for this build, step by step
README.md
# Better Stack · indie build

An uptime monitor you run yourself: a fetch on an interval with a real timeout, a state machine that only calls a site down after two consecutive failures, one chat message on down and one on recovery, and a public status page with uptime percentages, a latency sparkline and an RSS feed of incidents. Honest about the one thing a single box cannot do: tell your outage from your own network's.

Estimated effort: **one sitting**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | Node 22 with node:http, node:sqlite and global fetch | the check is a fetch; the page is a few indexed queries |
| Database | SQLite in WAL mode | checks, incidents and monitors in one file |
| Alerts | One chat webhook | the channel you already watch |
| Hosting | A VPS on a different provider than the sites it watches | otherwise it goes down with them |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Everything in this build runs on it: the server, the scripts, the tests.
  - Get it: Download the LTS installer from nodejs.org, or install with your package manager (brew install node, or nvm install 22). Restart the terminal afterwards.
  - Verify: node --version prints v22 or higher
- [ ] **A terminal and a code editor** · free
  - Why: Every step below is a command you type or a file you edit.
  - Get it: VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal.
  - Verify: You can open a folder and run a command in its terminal
- [ ] **Git** · free
  - Why: History for your code, and the way most hosts deploy.
  - Get it: Install from git-scm.com or with your package manager, then run git init in the project folder once it exists.
  - Verify: git --version prints a version
- [ ] **A chat webhook URL (Discord, Slack or Telegram)** · free
  - Why: Alerts go to a chat channel you already watch. A webhook URL is the only credential this needs.
  - Get it: Discord: Server settings > Integrations > Webhooks > New Webhook, copy the URL. Slack: create an app at api.slack.com/apps, enable Incoming Webhooks, add to a channel, copy the URL. Telegram: create a bot with @BotFather and use the bot token plus your chat id.
  - Verify: curl -X POST -H 'Content-Type: application/json' -d '{"content":"test"}' <url> posts a message (Discord form; Slack uses a text field)
- [ ] **The URLs to watch, with what healthy means for each** · free
  - Why: Each monitor needs a URL, an interval, an expected status and optionally a keyword the body must contain.
  - Get it: List every site or endpoint. For each decide: check every 60 seconds or 300, expect 200, and a word that only appears when the page really works.
- [ ] **A small VPS on a different provider than your sites** · about $5 a month
  - Why: A monitor hosted next to what it watches reports nothing when that host dies. Different provider, ideally a different region.
  - Get it: Hetzner if your sites are elsewhere, or vice versa. Smallest Ubuntu 24.04 instance with SSH.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: A status page address you can give people, e.g. status.yourdomain.com.
  - Get it: Register at Cloudflare Registrar, Porkbun or Namecheap, or use a subdomain of one you already own. You add one DNS record in the deploy phase.
- [ ] **Caddy on the server** (optional) · free
  - Why: Automatic HTTPS in front of the Node process. Without TLS the browser features this relies on (and your visitors' trust) do not work.
  - Get it: On the VPS: follow the install steps at caddyserver.com/docs/install for Ubuntu. One Caddyfile with your domain and a reverse_proxy line is the whole config.
  - Verify: caddy version prints a version on the server

## Quick start

```sh
mkdir uptime && cd uptime && git init && npm init -y && npm pkg set type=module
mkdir data && cp .env.example .env
```

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Multi-region probes. One box cannot tell an outage from its own bad network; the status page says so.
- Subscriber email notifications, incident templates, on-call.
- global multi-region probes
- on-call scheduling & escalation policies
- incident timelines and postmortem tooling
- phone-call alerts

If one of those is essential to you, that is the reason to keep paying for Better Stack, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

what you lose

xglobal multi-region probes

xon-call scheduling & escalation policies

xincident timelines and postmortem tooling

xphone-call alerts

share on X ↗"I just replaced Better Stack ($34/mo) with one prompt"
the escape hatch

Don't feel like building it? These folks already made it free.

Uptime KumaA cheerful dashboard for asking URLs whether they are dead yet.87kaug 2026open sourceGatusA YAML file, a status board and enough protocol checks to annoy most outages.12kjul 2026open sourceOpenStatusUptime checks and a status page, with YAML for the suspicious.8.9kaug 2026open source

all 5 free alternatives to Better Stack →· no votes, no pay-to-list · just what's real

the numbers

Better Stack pricing

planmonthlyannual (per mo)what you get
free for personal projects$0/workspace$0/workspace10 monitors, 10 heartbeats, 1 status page; 3-minute checks; 1,000 status-page subscribers; 100,000 exceptions/month; 5,000 session replays; 3 GB each of logs, traces and web events retained 3 days; 30 GB metrics
responder$34/user$29/user1 responder license; unlimited phone-call and SMS alerts; 10 monitors, 10 heartbeats and 1 status page included at workspace level
enterprisecustomCustom quote; custom limits and enterprise controls

free tier10 monitors + 10 heartbeats + 1 status page with 3-minute checks; 1,000 subscribers; 100,000 exceptions/month; 5,000 replays; 3 GB logs + 3 GB traces + 3 GB web events retained 3 days; 30 GB metrics

billingmonthly + annual (about 2 months free)

hidden costsBase includes only 10 monitors/10 heartbeats/1 status page. Add 50 monitors: $25/mo or $21/mo annual; add 10 heartbeats: $20/$17; each additional public status page: $15/$12; 1,000 extra subscribers: $40/mo; Playwright: $1 per 100 minutes; AI SRE: $5/million tokens; Slack/Teams workflows: $9/responder/mo; advanced status-page and SSO options can cost $42-$250 per page/user/month.

verified 2026-08-12 · source ↗

questions
Vibecode Better Stack / UptimeRobot paid

Yes. A competent AI coding agent (Claude Code, Codex, Cursor) can build a usable personal Better Stack / UptimeRobot paid replacement in one session with the prompt on this page. It runs on your own machine or server with no subscription.

How much does Better Stack / UptimeRobot paid cost?

Better Stack / UptimeRobot paid costs about $34/month (Responder, checked 2026-08-12), which is $408 per year. That's what you save by replacing it with one prompt.

What do I lose by replacing Better Stack / UptimeRobot paid?

Honestly: global multi-region probes; on-call scheduling & escalation policies; incident timelines and postmortem tooling; phone-call alerts. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Better Stack / UptimeRobot paid?

Yes: Uptime Kuma (A cheerful dashboard for asking URLs whether they are dead yet.) Gatus (A YAML file, a status board and enough protocol checks to annoy most outages.) OpenStatus (Uptime checks and a status page, with YAML for the suspicious.) All 5 curated free alternatives are at vibecodeit.com/uptime/alternatives. The prompt is for when you want it exactly your way.