Karma
Alert dashboard for Prometheus Alertmanager
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
Uptime Kuma
Monitoring & StatusEasy self-hosted uptime monitoring tool
Replaces Pingdom, UptimeRobot
Netdata
Monitoring & StatusReal-time per-second infrastructure monitoring
Replaces Datadog, New Relic
Grafana
Monitoring & StatusOpen observability dashboards and visualization
Replaces Datadog
Prometheus
Monitoring & StatusMetrics-based monitoring and alerting toolkit
Replaces Datadog
Glances
Monitoring & StatusCross-platform system monitoring at a glance
Replaces Datadog
InfluxDB
Monitoring & StatusPurpose-built time series database for metrics and events
Replaces Datadog, AWS Timestream