{"adoption": {"forks": 114, "observed_at": "2026-08-28T04:06:04.673615+00:00", "stars": 2005}, "canonical_url": "https://ross.abutalabs.com/products/stethoscope", "card": {"archived": false, "artifact_type": "application", "description": "Personalized, user-focused recommendations for employee information security.", "domain": ["security", "web-development", "self-hosted", "hr"], "enriched": true, "function": ["security", "web-framework", "plugin-system", "monitoring"], "health_score": 20, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["Netflix-Skunkworks/stethoscope"], "name": "Netflix-Skunkworks/stethoscope", "platform": ["python", "self-hosted"], "pushed_at": "2023-08-01T22:40:28+00:00", "repo": "Netflix-Skunkworks/stethoscope", "stars": 2005, "tags": ["device-security", "employee-security", "jamf", "landesk", "mdm", "react-frontend", "netflix-oss", "docker", "web-server"], "topics": ["security", "education", "user-focused-security"], "urls": [], "use_cases": ["check whether employee laptops have disk encryption enabled", "give employees personalized security recommendations for their devices", "aggregate device posture data from JAMF and LANDESK", "detect jailbroken or rooted mobile devices", "verify screen lock and firewall status across a fleet", "self-host an internal user-focused security dashboard"], "what_it_is": "Stethoscope is a web application that collects device data from sources like JAMF, LANDESK, and G Suite mobile management and presents employees with personalized, specific recommendations for securing their devices. It has a Python back-end, a React front-end, and a plugin architecture for adding data sources and security practices.", "when_to_avoid": ["you need automated remediation rather than recommendations", "your device data sources are not among the supported plugins and you cannot write one", "you need actively developed software with recent community activity"], "when_to_choose": ["you run an enterprise MDM like JAMF or LANDESK and want user-facing security feedback", "you want to nudge employees to fix their own device security issues", "you need a plugin-based tool to merge device records from multiple sources"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stethoscope", "repo": "Netflix-Skunkworks/stethoscope", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "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:06:04.673615+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:04.673615+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:01:29.925896+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d9dc4f621b0adc9fbabd5d60893d70444fe6108a009bfe0714173b7ce2b0bf87", "fetched_at": "2026-08-28T04:06:04.673615+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Netflix-Skunkworks/stethoscope"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3523, "days_push": 1128, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}