{"adoption": {"forks": 5166, "observed_at": "2026-08-28T04:11:37.624051+00:00", "stars": 24725}, "canonical_url": "https://ross.abutalabs.com/products/tasmota", "card": {"archived": false, "artifact_type": "application", "description": "Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at", "domain": ["iot", "self-hosted"], "enriched": true, "function": ["iot", "workflow-automation", "web-framework", "self-hosted"], "health_score": 100, "homepage": "https://tasmota.github.io/docs", "language": "C", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["arendst/Tasmota"], "name": "arendst/Tasmota", "platform": ["embedded", "iot"], "pushed_at": "2026-08-25T13:00:41+00:00", "repo": "arendst/Tasmota", "stars": 24725, "tags": ["firmware", "esp8266", "esp32", "mqtt", "ota-updates", "smart-home", "sonoff", "tuya", "knx", "home-automation", "automation"], "topics": ["tasmota", "firmware", "esp8266", "sonoff", "tuya", "knx", "arduino", "iot", "mqtt", "ota", "automation", "smart-home", "esp32"], "urls": [], "use_cases": ["flash custom firmware onto sonoff smart plugs", "control tuya devices locally without the cloud", "integrate esp32 sensors with home assistant over mqtt", "automate smart home devices with timers and rules", "update iot device firmware over the air", "replace stock firmware on esp8266 smart switches"], "what_it_is": "Tasmota is an open-source alternative firmware for ESP8266 and ESP32-based devices, providing a web UI, OTA updates, and automation via timers, rules, or scripts. It enables entirely local control of smart devices over MQTT, HTTP, Serial, or KNX, integrating with home automation platforms.", "when_to_avoid": ["your device is not based on ESP8266 or ESP32 hardware", "you need a cloud-managed IoT platform with remote dashboards", "you require a turnkey commercial solution with vendor support"], "when_to_choose": ["you want fully local control of ESP-based smart devices without vendor clouds", "you need MQTT, HTTP, or KNX integration with home automation systems", "you want OTA updates, a web UI, and rule-based automation on ESP8266/ESP32 hardware"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tasmota", "repo": "arendst/Tasmota", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "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:11:37.624051+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:37.624051+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:56:09.917199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d96877dc374652d8a3e8b1aac15bb53ca98a43596ca0dd345a27f6fffa05068", "fetched_at": "2026-08-28T04:11:37.624051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arendst/Tasmota"}, {"content_hash": "caf1701c7554e79fd9652af22c0765da734121cb1be1c201037123f5389ab2f0", "fetched_at": "2026-08-29T07:53:17.424957+00:00", "kind": "homepage", "missing": false, "url": "https://tasmota.github.io/docs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "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": 3504, "days_push": 8, "days_rel": 8, "gap_med": 61.0, "n_releases_24m": 11}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}