KA

Karma

Alert dashboard for Prometheus Alertmanager

Monitoring & Status ★ 2.7k stars Easy setup Apache-2.0

Karma is a web dashboard that aggregates and displays alerts from one or more Alertmanager instances. It provides grouping, filtering, and silencing in a single clean view for on-call engineers.

Key features

  • Multi-Alertmanager aggregation
  • Alert grouping and filtering
  • Inline silence management
  • Auto-refreshing display

Pros & cons

Strengths

  • Clear at-a-glance overview
  • Lightweight

Trade-offs

  • Read-mostly view
  • Requires Alertmanager

Karma replaces

Last reviewed Sep 13, 2026 · 756 words

Karma never pages you. It does not send email, hit a webhook, or ring a phone; Alertmanager does that, and Karma sits beside it as the screen you look at once something has fired. If you came here hoping to replace PagerDuty with a 64 MB container, the honest answer is that Alertmanager plus a receiver like ntfy is the paging half, and Karma is the wall display and triage half. Understanding that split up front saves the "it's running but nobody got alerted" ticket.

Setup is one environment variable

The image is small, the binary is single, and the minimum configuration is where Alertmanager lives:

services:
  karma:
    image: ghcr.io/prymitive/karma:latest
    environment:
      - ALERTMANAGER_URI=http://alertmanager:9093
    ports:
      - "8080:8080"
    restart: unless-stopped

Open port 8080 and every active alert appears as a card, grouped by the same labels Alertmanager groups on, with a countdown until the next refresh. That is the whole install; there is no database, no login page, and nothing to migrate on upgrade, because Karma keeps no state of its own and reads everything from Alertmanager on each poll. The Apache-2.0 licence and a project that has been shipping since 2017 make it one of the least dramatic things you will run in a monitoring stack.

Multiple Alertmanagers is the real reason it exists

Alertmanager's built-in UI is fine for one instance. The moment you have two, say a homelab one and one on a VPS, or an HA pair, you are tabbing between browsers. Karma polls all of them and merges the result, and it understands HA clusters so the same alert reported by two Alertmanager peers shows once. That needs the YAML config instead of the environment variable:

alertmanager:
  servers:
    - name: home
      uri: http://alertmanager:9093
      timeout: 10s
    - name: vps
      uri: https://am.vps.example.com
      timeout: 10s
      cluster: remote

Mount it at /karma.yaml and start with --config.file=/karma.yaml. Each alert card then carries an @alertmanager label so you can tell where it came from, and a filter like @alertmanager=vps scopes the view.

Filters do the work the Alertmanager UI cannot

The filter bar accepts label matchers (severity=critical, instance=~nas.*) and Karma's own @ selectors: @state=active hides suppressed alerts, @state=suppressed shows only what a silence is hiding, @receiver=oncall limits to one routing branch, and @age>1h finds the things that have been broken all night. Filters live in the URL, so a bookmarked ?q=@state=active&q=severity=critical is your wall board. The grid can be sorted and grouped by any label, and label colours are configurable, which sounds cosmetic until severity=warning is amber and severity=critical is red across a screen on the far side of the room.

Silences without leaving the dashboard

This is the one write action. Click an alert, pick the labels the silence should match, set the duration, and Karma creates the silence in the right Alertmanager. Existing silences are listed with their expiry, and you can extend or delete them. If more than one person will touch it, the silence ACL config lets you require a comment, restrict which labels can be silenced, or block silences on severity=critical entirely. Karma itself has no user database; put it behind Authelia or another proxy that sets a username header, and it will attribute silences to that name.

Homelab reality: you may not need it

A single Prometheus with one Alertmanager and four alert rules does not need a second dashboard. Grafana already has an alert list panel, and Uptime Kuma covers the "is it up" case with a status page and notifications built in; the monitoring guide walks through that simpler stack. Karma earns its container once you have a few dozen alert rules, more than one Alertmanager, or more than one person who needs to see what is firing without learning PromQL. Below that, it is a nice screen you will stop opening.

What I'd do

If you already run Alertmanager and find yourself squinting at its UI, add Karma with the one-variable compose above, bookmark an @state=active filter, and put it behind your SSO proxy so silences have names on them. Give it 64 MB and forget it. If you are still deciding whether to run Prometheus at all, stop here: set up Uptime Kuma first, and come back to Karma when the alert count has outgrown a single list.

Compare Karma

6 head-to-head comparisons.

Similar monitoring & status apps