{"adoption": {"forks": 418, "observed_at": "2026-08-28T04:07:26.720812+00:00", "stars": 2867}, "canonical_url": "https://ross.abutalabs.com/products/tiercel", "card": {"archived": false, "artifact_type": "library", "description": "Pure Swift iOS download framework with background downloads, relaunch recovery, resumable transfers, and task management.", "domain": ["mobile-development", "files", "networking"], "enriched": true, "function": ["http-client", "file-upload", "developer-tools"], "health_score": 100, "homepage": "https://github.com/Danie1s/Tiercel/wiki", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Danie1s/Tiercel"], "name": "Danie1s/Tiercel", "platform": [], "pushed_at": "2026-08-24T16:54:29+00:00", "repo": "Danie1s/Tiercel", "stars": 2867, "tags": ["download-manager", "background-download", "resumable-download", "urlsession", "cocoapods", "swift-package-manager", "task-management", "ios", "swift", "mobile"], "topics": ["cocoapods", "xcode", "swift", "ios", "network", "background-download", "download-manager", "file-download", "resumable-download", "urlsession"], "urls": [], "use_cases": ["download large files in an iOS app with background support", "resume interrupted downloads after app crash or relaunch", "manage multiple download queues with batch operations", "add pause, resume, and cancel controls to a download manager UI", "restrict downloads to wifi or handle cellular network policies", "verify downloaded file integrity with checksums"], "what_it_is": "Tiercel is a pure Swift iOS download framework built on URLSession that provides native-level background downloads, resumable transfers, and relaunch recovery. It offers fine-grained task management with multiple isolated SessionManager instances, batch operations, and built-in speed and progress callbacks.", "when_to_avoid": ["you only need simple one-off downloads with no background or resume requirements", "your app targets Objective-C without bridging", "you need cross-platform downloads beyond iOS"], "when_to_choose": ["you need downloads to survive app relaunches or kills", "you manage multiple download domains or queues in one app", "you want a higher-level API than raw URLSessionDownloadTask", "you need batch download operations with per-task control"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tiercel", "repo": "Danie1s/Tiercel", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "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:07:26.720812+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.720812+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:36:04.762889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bd659bff59a4f668379d5f355af80441578170399e1ee00560a819d95ae21888", "fetched_at": "2026-08-28T04:07:26.720812+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Danie1s/Tiercel"}, {"content_hash": "a5202354bbcc556993ea76376e76212828ff0eff15a3752a79d86e6ffb7b0b80", "fetched_at": "2026-08-29T09:51:41.109449+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/Danie1s/Tiercel/wiki"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 75}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3091, "days_push": 9, "days_rel": 9, "gap_med": 111, "n_releases_24m": 6}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}