{"adoption": {"forks": 848, "observed_at": "2026-08-28T04:10:19.876029+00:00", "stars": 8256}, "canonical_url": "https://ross.abutalabs.com/products/keychainaccess", "card": {"archived": false, "artifact_type": "library", "description": "Simple Swift wrapper for Keychain that works on iOS, watchOS, tvOS and macOS.", "domain": ["security", "mobile-development", "developer-tools"], "enriched": true, "function": ["security", "cryptography", "sdk"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["kishikawakatsumi/KeychainAccess"], "name": "kishikawakatsumi/KeychainAccess", "platform": ["cross-platform"], "pushed_at": "2024-05-31T12:29:46+00:00", "repo": "kishikawakatsumi/KeychainAccess", "stars": 8256, "tags": ["keychain", "touch-id", "swift-wrapper", "watchos", "tvos", "icloud-sharing", "secure-storage", "ios", "macos", "swift"], "topics": ["keychain", "touch-id", "security"], "urls": [], "use_cases": ["store passwords securely in an iOS app", "save tokens to the macOS keychain from Swift", "integrate Touch ID with keychain access", "share keychain items across apps via access groups", "sync credentials with iCloud keychain", "store internet passwords for a server URL in Swift"], "what_it_is": "KeychainAccess is a simple Swift wrapper around Apple's Keychain APIs for iOS, macOS, watchOS, tvOS, and Mac Catalyst. It provides an ergonomic interface for storing passwords and secrets, including Touch ID integration, access groups, iCloud sharing, and shared web credentials.", "when_to_avoid": ["you are not developing for Apple platforms", "you need cross-platform secure storage beyond Apple's ecosystem", "you prefer direct use of the Security framework without a wrapper"], "when_to_choose": ["you need simple, idiomatic Swift access to the iOS/macOS Keychain", "you want Touch ID or shared web credential support out of the box", "you target multiple Apple platforms including watchOS and tvOS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/keychainaccess", "repo": "kishikawakatsumi/KeychainAccess", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "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:10:19.876029+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:19.876029+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:29:27.912371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3562389d9d73f1e2a6db5876379c5cdedb8a31ea4652607e92465af0dafe3e50", "fetched_at": "2026-08-28T04:10:19.876029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/KeychainAccess"}], "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": 4270, "days_push": 824, "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}}