{"adoption": {"forks": 167, "observed_at": "2026-09-03T02:15:05.830092+00:00", "stars": 1006}, "canonical_url": "https://ross.abutalabs.com/products/apio", "card": {"archived": false, "artifact_type": "cli-tool", "description": ":seedling: Open source ecosystem for open FPGA boards", "domain": ["developer-tools", "hardware", "embedded-systems"], "enriched": true, "function": ["cli", "build-tool", "package-manager", "developer-tools", "testing"], "health_score": 100, "homepage": "https://fpgawars.github.io/apio/docs/", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["FPGAwars/apio"], "name": "FPGAwars/apio", "platform": ["windows", "python", "cli"], "pushed_at": "2026-09-02T17:02:31+00:00", "repo": "FPGAwars/apio", "stars": 1006, "tags": ["fpga", "verilog", "icestorm", "lattice", "fpga-development", "hardware-description", "open-fpga", "simulation", "synthesis", "command-line", "linux", "macos"], "topics": ["apio", "cli", "icestorm", "fpga", "lattice", "verilog", "package", "manager", "python"], "urls": [], "use_cases": ["set up an fpga toolchain for a lattice ice40 board", "build and upload verilog code to an fpga board", "simulate a verilog design from the command line", "lint my verilog source files", "manage fpga toolchain packages like icestorm", "get started with open source fpga development"], "what_it_is": "Apio is an open-source command-line toolbox that simplifies FPGA development, providing commands to lint, simulate, build, and upload designs to FPGA boards. It manages toolchains and supports 3 FPGA architectures, 80+ FPGAs, and 80+ boards, with a companion VS Code IDE extension.", "when_to_avoid": ["you target FPGA vendors or architectures not among the 3 supported ones", "you need vendor-specific proprietary toolchains like Vivado or Quartus", "you need a GUI-only workflow without any command-line usage"], "when_to_choose": ["you develop for supported Lattice/iCE40 or other supported FPGA boards and want a simple, unified CLI workflow", "you want automatic toolchain installation and management instead of configuring open-source FPGA tools manually", "you want a VS Code IDE integration for FPGA projects"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/apio", "repo": "FPGAwars/apio", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/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-09-03T02:15:05.830092+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:05.830092+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:13:41.191656+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1b8c3785c72e0b3c4b2138fb585dec30cc7ba4ee4a6fa751145d7e4c57ca08", "fetched_at": "2026-09-03T02:15:05.830092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FPGAwars/apio"}, {"content_hash": "001c99fcd4bde9a292b43613bd25eeeb0f08b7ad1d5adee4c7ef417139c44c82", "fetched_at": "2026-08-29T13:13:20.899574+00:00", "kind": "homepage", "missing": false, "url": "https://fpgawars.github.io/apio/docs/"}, {"content_hash": "12ae81aeffeb740845b0cdb792eaa1abc1432789ea51138914626875f009793e", "fetched_at": "2026-08-29T13:13:20.931915+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/apio/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 98}, "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": 3858, "days_push": 0, "days_rel": 13, "gap_med": 4.5, "n_releases_24m": 23}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}