{"adoption": {"forks": 238, "observed_at": "2026-08-28T04:04:23.712833+00:00", "stars": 1328}, "canonical_url": "https://ross.abutalabs.com/products/lua-rtos-esp32", "card": {"archived": false, "artifact_type": "library", "description": "Lua RTOS for ESP32", "domain": ["embedded-systems", "iot", "programming-languages", "hardware"], "enriched": true, "function": ["programming-language", "interpreter", "embedded", "iot"], "health_score": 68, "homepage": null, "language": "C", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["whitecatboard/Lua-RTOS-ESP32"], "name": "whitecatboard/Lua-RTOS-ESP32", "platform": ["embedded", "iot"], "pushed_at": "2026-04-29T16:49:44+00:00", "repo": "whitecatboard/Lua-RTOS-ESP32", "stars": 1328, "tags": ["lua-rtos", "freertos", "esp32", "esp8266", "lorawan", "real-time-operating-system", "firmware", "microcontroller"], "topics": ["lua", "esp32", "espressif", "rtos", "freertos", "iot", "lorawan", "iot-platform", "lora", "lua-rtos"], "urls": [], "use_cases": ["program ESP32 boards in Lua instead of C", "build IoT devices with LoRaWAN connectivity", "prototype embedded hardware quickly with block-based programming", "run a real-time micro-kernel with minimal RAM and flash requirements", "read sensors over I2C and control GPIO from scripts", "publish sensor data over MQTT from an ESP32"], "what_it_is": "Lua RTOS is a real-time operating system for embedded systems (ESP32, ESP8266, PIC32MZ) built on FreeRTOS with a Lua 5.3 interpreter on top. It exposes hardware peripherals and middleware services (GPIO, ADC, I2C, LoRaWAN, MQTT, threads) through Lua modules and can be programmed via the Whitecat IDE using Lua or block-based programming.", "when_to_avoid": ["you need a general-purpose OS with a full network stack and multitasking user apps", "your project requires standard Python or MicroPython ecosystems", "you need guaranteed long-term vendor support or a permissive license", "you target platforms other than ESP32, ESP8266, or PIC32MZ without porting effort"], "when_to_choose": ["you want Lua scripting on ESP32/ESP8266 microcontrollers", "you need real-time behavior with a lightweight footprint", "you prefer rapid prototyping with blocks that compile to Lua", "your project uses LoRaWAN or MQTT middleware on embedded hardware"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/lua-rtos-esp32", "repo": "whitecatboard/Lua-RTOS-ESP32", "role": "main", "score": 68}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "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:04:23.712833+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:23.712833+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:45:59.057845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f0932d9a5a40dffa6dfe006cbed342df9514a17089ed8257ed6206b9bd2fc3", "fetched_at": "2026-08-28T04:04:23.712833+00:00", "kind": "readme", "missing": false, "url": "https://github.com/whitecatboard/Lua-RTOS-ESP32"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 79, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+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": 3610, "days_push": 126, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 68, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}