No description
  • Go 75.5%
  • Svelte 17.6%
  • TypeScript 5.1%
  • Makefile 1%
  • Dockerfile 0.6%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Yannick Koechlin 07fde5b8e6
All checks were successful
Build Container Image / build-amd64 (push) Successful in 2m5s
Build Container Image / build-arm64 (push) Successful in 2m16s
Build Container Image / manifest (push) Successful in 16s
ci: rebuild the container image
The registry no longer serves the tag this deployment pins, so the workload
survives only on a containerd cache and dies on any reschedule. The
repository had also lost its REGISTRY_TOKEN secret, which made the build fail
at the Fetch source step with HTTP 403.

The secret is restored; this empty commit triggers the workflow, which has no
workflow_dispatch trigger.

Claude-Session: https://claude.ai/code/session_01Hao2WtqHGEkW2o7vvMdvdL
2026-08-29 18:00:25 +02:00
.forgejo/workflows Add timestamp and short SHA to build VERSION and image tags 2026-03-06 00:01:17 +01:00
.github/workflows Rewrite Containerfile to scratch and add GitHub Actions CI 2026-03-02 08:45:36 +01:00
api/proto Add WhatsApp messages page for viewing incoming messages and group JIDs 2026-03-05 23:55:21 +01:00
cmd/vmalert-whatsapp Initial scaffold: Go backend + Svelte frontend for alert streaming 2026-03-02 01:06:39 +01:00
configs Abstract DB behind Store interface with ConfigMap backend 2026-03-02 10:36:35 +01:00
docs Add screenshot to README [skip ci] 2026-03-02 08:56:07 +01:00
internal fix: URL-encode GeneratorURL query params for WhatsApp clickability 2026-03-11 20:54:29 +01:00
k8s Update K8s manifests for ConfigMap/Secret storage backend 2026-03-02 10:41:49 +01:00
web Add WhatsApp messages page for viewing incoming messages and group JIDs 2026-03-05 23:55:21 +01:00
.air.toml Add air for Go hot-reload in development 2026-03-02 01:11:59 +01:00
.gitignore gitignore updates 2026-03-03 08:33:49 +01:00
buf.gen.yaml Add WhatsApp integration with SQLite-backed contacts 2026-03-02 01:42:24 +01:00
buf.lock Initial scaffold: Go backend + Svelte frontend for alert streaming 2026-03-02 01:06:39 +01:00
buf.yaml Initial scaffold: Go backend + Svelte frontend for alert streaming 2026-03-02 01:06:39 +01:00
CLAUDE.md Initial scaffold: Go backend + Svelte frontend for alert streaming 2026-03-02 01:06:39 +01:00
config.yaml.example Add WhatsApp integration with SQLite-backed contacts 2026-03-02 01:42:24 +01:00
Containerfile Fix cross-arch build: drop --customPlatform, use manifest-tool from-spec 2026-03-03 01:32:11 +01:00
go.mod Abstract DB behind Store interface with ConfigMap backend 2026-03-02 10:36:35 +01:00
go.sum Abstract DB behind Store interface with ConfigMap backend 2026-03-02 10:36:35 +01:00
Makefile Group make help by category: build, backend, frontend, testing 2026-03-02 08:37:34 +01:00
README.md Add screenshot to README [skip ci] 2026-03-02 08:56:07 +01:00

vmalert-whatsapp

Receives Alertmanager webhook alerts, displays them in a real-time web dashboard, and forwards them to WhatsApp contacts.

VMAlert WhatsApp Dashboard

Quick Start

# Build
make build

# Run
./bin/vmalert-whatsapp serve

Open http://localhost:8084 for the dashboard. Go to Settings to connect WhatsApp via QR code and add contacts.

Send a Test Alert

Send a firing alert to the webhook endpoint. This will appear on the dashboard and be forwarded to all enabled WhatsApp contacts:

curl -X POST http://localhost:8084/api/v1/alerts \
  -H "Content-Type: application/json" \
  -d '{
    "status": "firing",
    "alerts": [
      {
        "status": "firing",
        "labels": {
          "alertname": "HighMemoryUsage",
          "severity": "critical",
          "instance": "server-01:9090"
        },
        "annotations": {
          "summary": "Memory usage is above 90%",
          "description": "server-01 memory usage has been above 90% for the last 5 minutes."
        },
        "startsAt": "2024-01-15T10:00:00Z",
        "generatorURL": "http://prometheus:9090/graph?g0.expr=node_memory_usage",
        "fingerprint": "abc123"
      }
    ]
  }'

Send a resolved alert:

curl -X POST http://localhost:8084/api/v1/alerts \
  -H "Content-Type: application/json" \
  -d '{
    "status": "resolved",
    "alerts": [
      {
        "status": "resolved",
        "labels": {
          "alertname": "HighMemoryUsage",
          "severity": "critical",
          "instance": "server-01:9090"
        },
        "annotations": {
          "summary": "Memory usage is back to normal"
        },
        "startsAt": "2024-01-15T10:00:00Z",
        "endsAt": "2024-01-15T10:15:00Z",
        "generatorURL": "http://prometheus:9090/graph?g0.expr=node_memory_usage",
        "fingerprint": "abc123"
      }
    ]
  }'

Configuration

Copy config.yaml.example and edit as needed:

cp config.yaml.example config.yaml
Setting Default Description
server.addr :8084 Listen address
server.shutdown_timeout 10s Graceful shutdown timeout
hub.ring_size 1000 Alert history buffer size
webhook.max_body_bytes 1048576 Max webhook payload size
database.path vmalert-whatsapp.db SQLite database file path

All settings can be overridden via environment variables with the VMALERT_WHATSAPP_ prefix (e.g., VMALERT_WHATSAPP_SERVER_ADDR=:9090).