Turn an alert storm into the few incidents that actually matter — dedupe, correlate, rank, and (optionally) AI-explain alerts from any source, with Slack digests.
Project description
alertsift
Turn an alert storm into the few incidents that actually matter — dedupe, correlate, rank, and (optionally) AI-explain alerts from any source, then push a clean digest to Slack.
It's 2 a.m., you're on-call, and 214 alerts are firing. Your real question isn't "what fired?" — it's "what's actually broken, and where do I start?" Studies show 40–60% of alerts never even get investigated because the signal drowns in noise.
alertsift does that triage for you, in one command:
🔔 214 alert(s) → 3 incident(s) (deduped to 60, suppressed 22)
● checkout-svc (critical, 47 alerts) ← start here
types: HighLatency, High5xxRate, PodRestart
checkout-svc is crash-looping and timing out payment calls.
likely cause: a bad deploy or failing dependency in checkout-svc.
● node-7 (medium, 1 alerts)
types: DiskUsage
Source-agnostic by design. It normalizes alerts from Prometheus/Alertmanager, generic JSON, or plain logs into one shape, then dedupes, groups related alerts into incidents, ranks them, and (optionally) has an LLM explain the likely root cause. Adding a new platform (Datadog, CloudWatch, PagerDuty…) is just one new parser.
Why alertsift
| Raw alert channel | alertsift | |
|---|---|---|
| Collapses duplicate alerts | ❌ | ✅ |
| Groups related alerts into incidents | ❌ | ✅ |
| Ranks "what to look at first" | ❌ | ✅ |
| Suppresses known noise | ❌ | ✅ .alertsiftignore |
| Plain-English likely cause | ❌ | ✅ (optional LLM) |
| Works with no API key | — | ✅ --no-ai / mock / local Ollama |
| Posts a clean digest to Slack | ❌ | ✅ |
Install
git clone https://github.com/jay-tank/alertsift.git
cd alertsift
pip install .
# optional LLM providers:
pip install '.[claude]' # or '.[openai]'
Usage
# Triage a file (auto-detects Alertmanager / JSON / logs)
alertsift alerts.json
# From a pipe — e.g. Alertmanager, kubectl, a log tail
amtool alert -o json | alertsift --stdin
# Pure/offline — no LLM, no key (dedupe + correlate + rank only)
alertsift alerts.json --no-ai
# Post a digest to Slack (webhook from env; preview first with --dry-run)
export ALERTSIFT_SLACK_WEBHOOK="https://hooks.slack.com/services/..."
alertsift alerts.json --slack --dry-run # preview the payload
alertsift alerts.json --slack # actually post
# Machine-readable
alertsift alerts.json --json
Exit codes: 0 = nothing actionable, 1 = actionable incident(s) found, 2 =
usage/parse error — so it slots into cron or CI (only pages you when it matters).
How it works
INPUT ──► parse (pluggable) ──► normalize ──► dedupe ──► suppress ──►
correlate ──► rank ──► [AI enrich] ──► render / --json / Slack
Steps up to rank are pure and fully offline; the LLM only writes the
plain-English explanation (and is skippable with --no-ai). See
docs/USAGE.md and docs/PROVIDERS.md.
Safety
- Secrets never leave your machine. Alert summaries are run through best-effort redaction before being sent to an LLM or posted to Slack.
- Read-only. alertsift never mutates your systems; it reads alerts and reports.
- Slack webhook comes from the environment (
$ALERTSIFT_SLACK_WEBHOOK), never a flag literal, never logged.
Supported sources
Prometheus/Alertmanager, generic JSON, and plain logs today. The core is source-agnostic — Datadog, CloudWatch, and PagerDuty are drop-in parsers on the roadmap.
Limitations
- Correlation in v1 is heuristic (groups by service/namespace) — solid and explainable, but not a full dependency-graph. Treat "likely cause" as an assist to your judgment, not gospel.
- Log parsing is best-effort.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alertsift-0.1.0.tar.gz.
File metadata
- Download URL: alertsift-0.1.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14d260fbf2dfff22d8422c007f5e0d76ae3b45deca9dd118f839c2c2bba2b3e5
|
|
| MD5 |
cecc3fcd8999ba1a9c5afac0b34af306
|
|
| BLAKE2b-256 |
adb5d34b4130bf0389d805d4ceaf7c42fca6aaa6c06c08b0a068ba40da1bda39
|
File details
Details for the file alertsift-0.1.0-py3-none-any.whl.
File metadata
- Download URL: alertsift-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca02693fe76417725d49ad5c82561a75390c81ec39298a8ceb285ae10e4b2336
|
|
| MD5 |
6a901c27d2e9f7d11109d1ceb53f5c1b
|
|
| BLAKE2b-256 |
f9464825c7a5a9f688fffeb0dea596097d5e489856754b31c0334f4220fee0be
|