{"adoption": {"forks": 224, "observed_at": "2026-08-28T04:05:10.914301+00:00", "stars": 1610}, "canonical_url": "https://ross.abutalabs.com/products/berrynet", "card": {"archived": false, "artifact_type": "framework", "description": "Deep learning gateway on Raspberry Pi and other edge devices", "domain": ["artificial-intelligence", "iot", "computer-vision", "embedded-systems"], "enriched": true, "function": ["machine-learning", "deep-learning", "computer-vision", "message-queue", "image-processing", "streaming"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["DT42/BerryNet"], "name": "DT42/BerryNet", "platform": ["python", "embedded"], "pushed_at": "2023-02-16T03:10:29+00:00", "repo": "DT42/BerryNet", "stars": 1610, "tags": ["edge-ai", "raspberry-pi", "aiot", "mqtt", "object-detection", "image-classification", "openvino", "tensorrt", "offline-inference", "edge-computing", "linux", "nodejs", "docker"], "topics": ["raspberry-pi", "deep-learning", "tensorflow", "iot", "mqtt", "aiot", "edge-devices", "edge-ai", "openvino", "tensorrt", "edge-computing"], "urls": [], "use_cases": ["run object detection on a raspberry pi camera feed without internet", "build an offline security camera that alerts when a person or animal appears", "classify images locally on an edge device", "create a distributed AIoT network of smart cameras", "analyze IP camera frames with TinyYOLO or MobileNet SSD", "monitor a meeting room and get notified on events"], "what_it_is": "BerryNet is a deep learning gateway that turns edge devices like Raspberry Pi into intelligent, offline AI hubs for analyzing camera images and video frames. It uses MQTT to connect AI engines (classification and object detection) with dashboards and notifications, and supports building distributed AIoT networks across multiple devices.", "when_to_avoid": ["you need cloud-scale GPU inference or training", "you need a fully managed or actively developed product with frequent updates", "you need models beyond the supported classification/detection engines without custom integration"], "when_to_choose": ["you need deep learning inference fully offline on low-power edge hardware", "you want an MQTT-based pipeline connecting cameras, AI engines, and dashboards", "you want to link multiple edge devices into a distributed AIoT setup"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/berrynet", "repo": "DT42/BerryNet", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "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:10.914301+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.914301+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:51:13.053634+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6115c6ce61152f0fc35c55bf6c1fd9e05613cefa5316f75ad8d1fc6874598dd6", "fetched_at": "2026-08-28T04:05:10.914301+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DT42/BerryNet"}, {"content_hash": "94c1011fb3bbea020140acc206ad86b95baa15b1621cb19335e743e8a56240cc", "fetched_at": "2026-08-29T11:23:12.627111+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/berrynet/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 3415, "days_push": 1294, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}