Skip to main content

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.

CI Python 3.9+ License: MIT

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.

Metadata

Release files for alertsift 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for alertsift 0.1.0
File Size Uploaded
alertsift-0.1.0.tar.gz 22.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for alertsift 0.1.0
File Interpreter ABI Platform
alertsift-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.6 kB

Release files / alertsift-0.1.0.tar.gz

Download URL alertsift-0.1.0.tar.gz
Size 22.1 kB
Tags Source
SHA-256 checksum
How to use checksums
14d260fbf2dfff22d8422c007f5e0d76ae3b45deca9dd118f839c2c2bba2b3e5
BLAKE2b-256 checksum
How to use checksums
adb5d34b4130bf0389d805d4ceaf7c42fca6aaa6c06c08b0a068ba40da1bda39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / alertsift-0.1.0-py3-none-any.whl

Download URL alertsift-0.1.0-py3-none-any.whl
Size 23.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca02693fe76417725d49ad5c82561a75390c81ec39298a8ceb285ae10e4b2336
BLAKE2b-256 checksum
How to use checksums
f9464825c7a5a9f688fffeb0dea596097d5e489856754b31c0334f4220fee0be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page