{"adoption": {"forks": 143, "observed_at": "2026-08-28T04:06:16.709302+00:00", "stars": 2124}, "canonical_url": "https://ross.abutalabs.com/products/kaset", "card": {"archived": false, "artifact_type": "application", "description": "📼 The missing YouTube and YouTube Music macOS app", "domain": ["media", "apple-ecosystem", "entertainment", "desktop-applications"], "enriched": true, "function": ["audio-processing", "gui"], "health_score": 100, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sozercan/kaset"], "name": "sozercan/kaset", "platform": [], "pushed_at": "2026-08-24T23:41:45+00:00", "repo": "sozercan/kaset", "stars": 2124, "tags": ["youtube-music", "youtube-client", "music-player", "swiftui", "native-macos-app", "podcasts", "lyrics", "macos", "swift"], "topics": ["macos", "swift", "swiftui", "youtube-api", "youtube-music", "youtube-music-player", "music-player", "apple-music", "liquid-glass", "macos-26", "music", "youtube", "mac-app", "youtube-player", "youtube-video"], "urls": [], "use_cases": ["play youtube music in a native mac app", "listen to youtube music without the browser", "browse youtube subscriptions and shorts on macos", "view synced lyrics while playing music", "manage youtube music playlists and liked songs on desktop", "listen to podcasts from youtube music on mac", "control youtube playback with media keys and control center"], "what_it_is": "Kaset is a native macOS client for YouTube Music and YouTube built with Swift and SwiftUI, offering an Apple Music-style interface with full playback, library management, and system integration. It supports DRM-protected YouTube Music playback via an existing Premium subscription, plus lyrics, equalizer, podcasts, and Apple Intelligence features.", "when_to_avoid": ["you don't have a YouTube Premium/Music subscription, since DRM playback depends on it", "you need Windows or Linux support - it is macOS only", "you want offline downloads or a fully free YouTube client without an account"], "when_to_choose": ["you have YouTube Music Premium and want a native macOS experience instead of the web player", "you want Apple Music-style UI, lyrics, equalizer, and Now Playing integration for YouTube content", "you want one app for both YouTube Music and regular YouTube on macOS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kaset", "repo": "sozercan/kaset", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "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:16.709302+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.709302+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:52:48.890495+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c825baf20fb818fcd21476e825d70d92764c73ccb31b6a9de295fdd5f83a823d", "fetched_at": "2026-08-28T04:06:16.709302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sozercan/kaset"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 18, "rhythm": 95}, "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": 257, "days_push": 9, "days_rel": 37, "gap_med": 7, "n_releases_24m": 18}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}