{"adoption": {"forks": 156, "observed_at": "2026-08-28T04:04:13.844500+00:00", "stars": 1281}, "canonical_url": "https://ross.abutalabs.com/products/embd", "card": {"archived": false, "artifact_type": "framework", "description": "Embedded Programming Framework in Go", "domain": ["embedded-systems", "iot", "hardware", "developer-tools"], "enriched": true, "function": ["embedded", "iot"], "health_score": 20, "homepage": "http://embd.kidoman.io", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["kidoman/embd"], "name": "kidoman/embd", "platform": ["go", "embedded", "iot"], "pushed_at": "2020-09-06T08:09:25+00:00", "repo": "kidoman/embd", "stars": 1281, "tags": ["hardware-abstraction-layer", "hal", "gpio", "i2c", "spi", "pwm", "sensors", "raspberry-pi", "beaglebone-black", "single-board-computers", "linux-device-drivers", "cross-compilation", "go-library", "linux"], "topics": [], "urls": [], "use_cases": ["control gpio pins on a raspberry pi from a go program", "read i2c or spi sensor data in golang", "blink an led on a beaglebone black with go", "cross-compile a go program for an arm linux board", "access pwm controllers and dac chips from userspace", "write board-portable code with a hardware abstraction layer", "hook up accelerometers or thermometers to a hobby embedded project"], "what_it_is": "embd is a hardware abstraction layer (HAL) for embedded Linux single-board computers such as the Raspberry Pi, BeagleBone Black, and C.H.I.P., written in Go. It exposes GPIO, SPI, I2C, LED, and PWM capabilities through Linux device drivers and bundles user-level drivers for common sensors and controllers like accelerometers, gyroscopes, thermometers, and DACs.", "when_to_avoid": ["You need an actively maintained project - the last release was in 2020 and alternatives like gobot or periph are actively developed", "You target microcontrollers or non-Linux embedded platforms, since embd relies on Linux device drivers", "You cannot run your programs with root privileges, which writing to hardware special files on the board requires"], "when_to_choose": ["You want to program hobby single-board computers like the Raspberry Pi or BeagleBone Black in Go rather than Python or C", "You want hardware access to go through Linux kernel drivers for efficiency and easy porting between boards", "You need ready-made drivers for common sensors and controllers connected via GPIO, I2C, or SPI"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/embd", "repo": "kidoman/embd", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "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:13.844500+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.844500+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:02:32.551026+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75a0e618ed095295ae2557292d37ec028afa2cceb0b72dc4a7132ade618195f6", "fetched_at": "2026-08-28T04:04:13.844500+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kidoman/embd"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4651, "days_push": 2187, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}