{"adoption": {"forks": 425, "observed_at": "2026-08-28T04:05:09.809507+00:00", "stars": 1603}, "canonical_url": "https://ross.abutalabs.com/products/nodemcu-pyflasher", "card": {"archived": false, "artifact_type": "application", "description": "Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython.", "domain": ["iot", "embedded-systems", "developer-tools", "hardware"], "enriched": true, "function": ["gui", "developer-tools", "embedded"], "health_score": 34, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["marcelstoer/nodemcu-pyflasher"], "name": "marcelstoer/nodemcu-pyflasher", "platform": ["windows", "cross-platform", "python"], "pushed_at": "2025-02-07T16:33:52+00:00", "repo": "marcelstoer/nodemcu-pyflasher", "stars": 1603, "tags": ["nodemcu", "esp8266", "esptool", "firmware-flashing", "wxpython", "pyinstaller", "esp32", "macos"], "topics": ["esptool", "nodemcu", "wxpython", "pyinstaller"], "urls": [], "use_cases": ["flash nodemcu firmware to esp8266 without command line", "gui tool to flash esp32 firmware from a binary file", "erase flash on esp8266 board", "simple firmware flasher for beginners with esp8266", "flash .bin firmware to nodeMCU on windows or mac", "pick serial port and baud rate to upload firmware to esp"], "what_it_is": "A self-contained GUI flasher for NodeMCU/ESP8266 (and ESP32) firmware built on esptool.py and wxPython. It ships as a standalone executable for Windows and macOS, requiring no installation.", "when_to_avoid": ["you need advanced esptool features like flashing multiple chips or custom partition tables", "you work on Linux, where prebuilt binaries are not provided and wxPython setup is painful", "you want scripted/automated flashing in CI - use esptool.py directly"], "when_to_choose": ["you want a no-install, double-click flasher for ESP8266/NodeMCU on Windows or macOS", "you prefer a GUI over esptool.py's command-line interface", "you are a beginner flashing NodeMCU firmware for the first time"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nodemcu-pyflasher", "repo": "marcelstoer/nodemcu-pyflasher", "role": "main", "score": 25}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "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:05:09.809507+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.809507+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:52:23.603450+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30d13149b7dce6ddbd58d8f955309b145281500e84090e1606178d4871a063d7", "fetched_at": "2026-08-28T04:05:09.809507+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcelstoer/nodemcu-pyflasher"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 5, "longevity": 100, "rhythm": 8}, "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": 3535, "days_push": 572, "days_rel": 579, "gap_med": null, "n_releases_24m": 1}, "score": 25, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}