Self-hosted, one binary, no database

Know the moment a service stops breathing.

Heartbeat checks your apps every minute, alerts Slack or Discord when one goes down, streams its logs live and publishes a status page for each one.

Try it with Docker
docker run -d --env-file .env -p 8090:8090 -v ./data:/app/data ghcr.io/wilovy09/heartbeat:latest

Built for the minute something breaks.

Most days it stays quiet. When an app fails, it tells the right people, shows why and keeps your users informed.

Alerts that don't get lost

Failed deliveries are retried. While an app stays down, a reminder says how long it's been. When many apps fail at once, you get one notice about your own network instead of a storm.

Checks that fit each app

Its own interval and timeout, expected status codes, headers, a keyword in the body, TCP for databases, SSL expiry, and JS/CSS bundles for single-page apps.

Live logs next to the failure

stdout and stderr side by side, filtered by level and module, searchable, refreshing live.

A status page for each app

30 days of daily uptime and the notices you publish, without URLs or error messages. Add a badge to a README or embed it in any site.

Incidents, measured

Every outage with its start, duration and cause, plus MTTR and total downtime.

One file to run

Templates and assets live inside the binary, data in plain files. Docker images for amd64 and arm64.

Careful with your network

Checks only call allowed hosts over https, never follow redirects and refuse private IPs. Server-side sessions and CSRF checks.

Your language, your colors

Spanish or English. System, dark, light, or your own theme.

See it before you install it.

Dashboard with every app's status, the census strip and recent events

Running in two minutes.

  1. Configure

    Copy the example file and set the hosts your apps live on and how admins sign in.

    curl -fsSL https://raw.githubusercontent.com/Wilovy09/heartbeat/main/.env.example -o .env
  2. Start it

    With Docker, or the release binary behind nginx.

    docker run -d --name heartbeat --env-file .env -p 8090:8090 -v ./data:/app/data ghcr.io/wilovy09/heartbeat:latest
  3. Register your apps

    Open it, add each app's health URL, and point alerts at your channel.

    open http://localhost:8090

Every option, step by step, is in the docs.