{"adoption": {"forks": 281, "observed_at": "2026-08-28T04:03:49.923264+00:00", "stars": 1164}, "canonical_url": "https://ross.abutalabs.com/products/nnom", "card": {"archived": false, "artifact_type": "library", "description": "A higher-level Neural Network library for microcontrollers.", "domain": ["machine-learning", "embedded-systems", "iot", "deep-learning"], "enriched": true, "function": ["machine-learning", "deep-learning", "embedded"], "health_score": 20, "homepage": null, "language": "C", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["majianjia/nnom"], "name": "majianjia/nnom", "platform": ["embedded", "c", "iot"], "pushed_at": "2024-04-08T03:15:10+00:00", "repo": "majianjia/nnom", "stars": 1164, "tags": ["neural-network-inference", "microcontroller", "keras-deployment", "quantization", "tinyml", "mcu"], "topics": ["microcontroller", "mcu", "nnom", "neural-networks", "machine-learning", "embedded", "iot", "ml"], "urls": [], "use_cases": ["run neural network inference on a microcontroller", "deploy a keras model to an embedded mcu", "do tinyml keyword spotting on an arm cortex-m", "run cnn image classification on an iot sensor node", "quantize a model for low-memory embedded inference", "evaluate model accuracy onboard with confusion matrix and top-k"], "what_it_is": "NNoM is a high-level neural network inference library written in C for microcontrollers. It converts Keras models into optimized on-device models with one line of code, supporting complex architectures like ResNet and LSTM with per-channel quantization.", "when_to_avoid": ["you need to train models on-device rather than only run inference", "your target is a full OS device like a phone or server where TensorFlow Lite or PyTorch is more appropriate", "you need a framework with broad community tooling beyond Keras model conversion"], "when_to_choose": ["you need to run neural network inference directly on a microcontroller in C", "you want a one-line conversion from Keras models to embedded inference code", "you need support for complex architectures like ResNet, Inception, or LSTM on MCUs", "you want onboard evaluation tools like runtime analysis and confusion matrix"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nnom", "repo": "majianjia/nnom", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "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:03:49.923264+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.923264+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:31:29.973238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daf2ce07312de676a2b095d02d2dfe66507e8205340c16d0d373b8cc57fd5415", "fetched_at": "2026-08-28T04:03:49.923264+00:00", "kind": "readme", "missing": false, "url": "https://github.com/majianjia/nnom"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 2781, "days_push": 877, "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}}