{"adoption": {"forks": 324, "observed_at": "2026-08-28T04:07:28.300419+00:00", "stars": 2889}, "canonical_url": "https://ross.abutalabs.com/products/streamalert", "card": {"archived": false, "artifact_type": "framework", "description": "StreamAlert is a serverless, realtime data analysis framework which empowers you to ingest, analyze, and alert on data from any environment, using datasources and alerting logic you define.", "domain": ["security", "monitoring", "cloud-computing"], "enriched": true, "function": ["monitoring", "alerting", "streaming", "etl", "security", "infrastructure-as-code"], "health_score": 20, "homepage": "https://streamalert.io", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["airbnb/streamalert"], "name": "airbnb/streamalert", "platform": ["cloud", "python", "serverless", "self-hosted"], "pushed_at": "2023-10-23T17:15:34+00:00", "repo": "airbnb/streamalert", "stars": 2889, "tags": ["log-analysis", "incident-detection", "kinesis", "aws-lambda", "terraform", "threat-detection", "realtime", "devops", "data-engineering"], "topics": ["security", "kinesis", "serverless", "terraform", "lambda", "aws", "rules", "analysis"], "urls": [], "use_cases": ["detect security incidents in realtime log streams", "alert on suspicious activity in AWS logs", "scan terabytes of log data for threat detection", "ingest and classify logs from S3, Kinesis, and SNS", "write custom detection rules in Python", "retroactively search ingested logs for compliance"], "what_it_is": "StreamAlert is a serverless, real-time data analysis framework from Airbnb for ingesting, analyzing, and alerting on log data from any environment using AWS Lambda, Kinesis, and Terraform. Security teams use it to scan terabytes of log data daily for incident detection and response with Python-defined rules.", "when_to_avoid": ["you need multi-cloud or non-AWS deployment", "you want a turnkey SIEM with a UI rather than code-defined rules", "you need active community development - the project is in maintenance mode", "your log volume is small and a simpler alerting tool suffices"], "when_to_choose": ["you need serverless realtime log analysis on AWS", "your security team wants customizable Python detection rules", "you want automated, repeatable deployment via Terraform", "you need to scale log analysis to terabytes per day"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/streamalert", "repo": "airbnb/streamalert", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.300419+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:48:17.596368+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0dfb2d49a57b9cdda356e266c3e04b188adf9eb93838e5021c10b7d05e9af262", "fetched_at": "2026-08-28T04:07:28.300419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/streamalert"}, {"content_hash": "4db000916cec1bfd84f4b6de8070fd2843f77c31533c4817c471f799e18c428f", "fetched_at": "2026-08-29T09:51:32.357959+00:00", "kind": "homepage", "missing": false, "url": "https://streamalert.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3511, "days_push": 1045, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}