{"adoption": {"forks": 589, "observed_at": "2026-08-28T04:07:00.536364+00:00", "stars": 2552}, "canonical_url": "https://ross.abutalabs.com/products/radiolib", "card": {"archived": false, "artifact_type": "library", "description": "Universal wireless communication library for embedded devices", "domain": ["iot", "embedded-systems", "hardware", "networking"], "enriched": true, "function": ["sdk", "embedded", "networking", "iot"], "health_score": 98, "homepage": "https://jgromes.github.io/RadioLib/", "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["jgromes/RadioLib"], "name": "jgromes/RadioLib", "platform": ["cpp", "embedded", "iot", "cross-platform"], "pushed_at": "2026-08-22T17:01:07+00:00", "repo": "jgromes/RadioLib", "stars": 2552, "tags": ["lora", "lorawan", "radio-drivers", "sx127x", "sx126x", "ham-radio", "rtty", "aprs", "ax25", "sstv", "fsk", "arduino-library", "esp8266"], "topics": ["sx1278", "sx1272", "rfm69", "esp8266", "sx1276", "rtty", "sx1262", "arduino", "sx1268", "ax25", "cc1101", "sstv", "sx1280", "rfm96", "aprs", "esp32", "lorawan", "lr1110", "lr1120", "lr2021"], "urls": [], "use_cases": ["send LoRa packets from an ESP32 with an SX1278 module", "build a LoRaWAN node on a microcontroller", "transmit RTTY or SSTV using a cheap radio module", "implement APRS or AX.25 packet radio on Arduino", "drive an nRF24L01 or CC1101 from embedded C++", "port radio drivers to a non-Arduino embedded platform"], "what_it_is": "RadioLib is a universal C++ wireless communication library for embedded devices, providing a unified API to drive many radio modules (SX127x, SX126x, SX128x, RF69, CC1101, nRF24L01, LR11x0, etc.). It also implements digital modes and protocols such as LoRaWAN, AX.25, APRS, RTTY, SSTV, Morse, and Hellschreiber.", "when_to_avoid": ["you need WiFi, cellular, or TCP/IP networking rather than sub-GHz/2.4 GHz radio modules", "you want a high-level LoRaWAN network server or cloud IoT platform rather than a device-side driver", "your project targets desktop or server platforms without microcontroller hardware"], "when_to_choose": ["you need one consistent API across many different radio transceiver chips", "you want LoRa/FSK plus legacy digital modes like RTTY, APRS, or Morse on a microcontroller", "you're building IoT or amateur radio projects on Arduino or bare-metal embedded targets"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/radiolib", "repo": "jgromes/RadioLib", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "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:00.536364+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.536364+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:23:47.982177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6c464dc5e7087ffca0cf3a99c85361bcfa834c7a88269f3b26f4136a8bd3af7", "fetched_at": "2026-08-28T04:07:00.536364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jgromes/RadioLib"}, {"content_hash": "2d0b1498a5f54f2275b1ee57126a566ee54e134c5c5f849b516eb0ac6d7a999d", "fetched_at": "2026-08-29T10:06:27.576593+00:00", "kind": "homepage", "missing": false, "url": "https://jgromes.github.io/RadioLib/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 74}, "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": 3103, "days_push": 11, "days_rel": 94, "gap_med": 35, "n_releases_24m": 14}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}