{"adoption": {"forks": 44, "observed_at": "2026-08-28T04:04:38.827596+00:00", "stars": 1410}, "canonical_url": "https://ross.abutalabs.com/products/pam-duress", "card": {"archived": false, "artifact_type": "library", "description": "A Pluggable Authentication Module (PAM) which allows the establishment of alternate passwords that can be used to perform actions to clear sensitive data, notify IT/Security staff, close off sensitive network connections, etc if a user is coerced into giving a threat actor a password.", "domain": ["security", "operating-systems", "privacy", "developer-tools"], "enriched": true, "function": ["auth", "security", "alerting", "plugin-system"], "health_score": 76, "homepage": null, "language": "C", "license": "LGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["nuvious/pam-duress"], "name": "nuvious/pam-duress", "platform": ["cli"], "pushed_at": "2026-07-16T06:27:25+00:00", "repo": "nuvious/pam-duress", "stars": 1410, "tags": ["pam", "duress-password", "coercion-defense", "authentication", "c", "linux-pam", "linux"], "topics": [], "urls": [], "use_cases": ["set up a duress password that wipes sensitive files if I'm forced to unlock my machine", "alert IT security staff when a coerced password is entered", "close VPN or network connections automatically during a coerced login", "run hidden scripts on login with an alternate password on Linux", "protect a laptop from physical coercion attacks", "remove traces of the duress module after it triggers"], "what_it_is": "A Linux Pluggable Authentication Module (PAM) that lets users configure alternate 'duress' passwords which, when used under coercion, authenticate normally while silently executing predefined scripts. These scripts can wipe sensitive data, sever network connections, or alert security staff.", "when_to_avoid": ["you are on macOS, Windows, or BSD rather than Linux", "you need a GUI-based security tool rather than a PAM module configured via scripts and CLI", "you want a full disk-encryption or endpoint-detection solution instead of a coercion-response mechanism"], "when_to_choose": ["you need OS-level duress password protection on Linux (Debian, Arch, Red Hat)", "you want per-user or globally configured duress scripts with signed integrity hashes", "you need authentication to appear normal to an attacker while defensive actions run in the background"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pam-duress", "repo": "nuvious/pam-duress", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "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:38.827596+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:38.827596+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:29.336287+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3c0221b7702bf077b5ea71360e8e6faa63b8fc7e0486584acd867a40ba46ac0", "fetched_at": "2026-08-28T04:04:38.827596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nuvious/pam-duress"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1838, "days_push": 48, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}