{"adoption": {"forks": 292, "observed_at": "2026-08-28T04:04:21.713716+00:00", "stars": 1320}, "canonical_url": "https://ross.abutalabs.com/products/sentinl", "card": {"archived": false, "artifact_type": "plugin", "description": "Kibana Alert & Report App for Elasticsearch", "domain": ["monitoring", "analytics", "data-visualization"], "enriched": true, "function": ["alerting", "monitoring", "scheduling", "pdf", "email", "data-visualization"], "health_score": 58, "homepage": "https://qxip.net", "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["sentinl/sentinl"], "name": "sentinl/sentinl", "platform": ["self-hosted"], "pushed_at": "2026-01-21T23:28:03+00:00", "repo": "sentinl/sentinl", "stars": 1320, "tags": ["kibana-plugin", "elasticsearch", "elk-stack", "watcher", "reporting", "dashboard-snapshots", "anomaly-detection", "siren-investigate", "alarm", "timeseries", "search", "real-time", "nodejs", "web-server"], "topics": ["alert", "elasticsearch", "kibana", "reporting", "alerting", "scheduler", "kibi", "watchdog", "kibana-dashboard", "visualization", "watcher", "elk", "anomaly", "timeseries", "kaae", "pdf", "anomaly-detection", "plugin", "elastic", "alarm"], "urls": [], "use_cases": ["send alerts when elasticsearch query results change", "free alternative to elastic watcher for kibana", "schedule pdf snapshots of kibana dashboards", "monitor elasticsearch timeseries and get email notifications", "set up anomaly alerts on kibana data", "generate scheduled reports from elk dashboards", "track alert and report history in kibana visualizations"], "what_it_is": "SENTINL is a Kibana plugin that adds alerting and reporting to Elasticsearch, letting users create scheduled watchers that run queries, apply programmable validators, and trigger configurable notification actions. It also produces timed PNG/PDF snapshots of Kibana dashboards (or any website) and delivers them as email attachments, with alert history viewable in Kibana charts and annotations.", "when_to_avoid": ["you use Kibana 7.x/8.x, since SENTINL targets the 6.x line and Siren bundles its own version", "you already have a commercial Elastic subscription with native Alerting/Watcher", "you need a project with an active maintainer community, as SENTINL is publicly seeking new maintainers"], "when_to_choose": ["you run Kibana 6.x or Siren Investigate and need alerting without a paid Elastic license", "you want free, independent Watcher-style monitors with custom actions on Elasticsearch data", "you need scheduled PNG/PDF reports of dashboards emailed automatically", "you want alert events annotated and charted directly inside Kibana"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sentinl", "repo": "sentinl/sentinl", "role": "main", "score": 51}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "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:04:21.713716+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:21.713716+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:47:51.487055+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3cf0e6199d847cab8c87caafd07756927d35f406c7810773cbd1f59008467b39", "fetched_at": "2026-08-28T04:04:21.713716+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sentinl/sentinl"}, {"content_hash": "a910b364b2b8875a6fac4eceb85e2952899a171b2b078081e99e2aff674a9e95", "fetched_at": "2026-08-29T12:06:34.041481+00:00", "kind": "homepage", "missing": false, "url": "https://qxip.net"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 63, "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": 3770, "days_push": 224, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 51, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}