{"adoption": {"forks": 1188, "observed_at": "2026-08-28T04:06:53.260284+00:00", "stars": 2457}, "canonical_url": "https://ross.abutalabs.com/products/shairport", "card": {"archived": false, "artifact_type": "application", "description": "Airtunes emulator! Shairport is no longer maintained.", "domain": ["media", "self-hosted", "cross-platform"], "enriched": true, "function": ["audio-processing", "http-server", "networking"], "health_score": 20, "homepage": null, "language": "C", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["abrasive/shairport"], "name": "abrasive/shairport", "platform": ["cross-platform", "cli"], "pushed_at": "2022-01-14T19:51:45+00:00", "repo": "abrasive/shairport", "stars": 2457, "tags": ["airplay", "airtunes", "raop", "audio-streaming", "mdns", "bonjour", "raspberry-pi", "unmaintained", "audio", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["turn a raspberry pi into an airplay audio receiver", "stream music from iphone to linux speakers", "emulate an airport express on a home server", "receive airplay audio on a headless machine", "get now-playing metadata from itunes streaming"], "what_it_is": "Shairport is a C program that emulates an AirPort Express, implementing the Apple RAOP protocol so iTunes and iOS devices can stream music to it. It supports multiple audio and mDNS backends and can export now-playing metadata, but is no longer maintained.", "when_to_avoid": ["you need AirPlay 2 video or photo streaming", "you want a maintained project with support and security fixes", "you need modern AirPlay features or active community support"], "when_to_choose": ["you need a lightweight RAOP/AirPlay audio receiver on Linux or macOS", "you want to run an airplay sink on a raspberry pi or embedded device", "you need a simple C codebase to fork or study"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/shairport", "repo": "abrasive/shairport", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "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:53.260284+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.260284+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:01.617269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd6d7ce9c0933cf986b2e92514b3699656412ea756c247c4e00ba0c015ff4012", "fetched_at": "2026-08-28T04:06:53.260284+00:00", "kind": "readme", "missing": false, "url": "https://github.com/abrasive/shairport"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5623, "days_push": 1692, "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}}