{"adoption": {"forks": 1730, "observed_at": "2026-08-28T04:11:03.268373+00:00", "stars": 13413}, "canonical_url": "https://ross.abutalabs.com/products/johnny-five", "card": {"archived": false, "artifact_type": "framework", "description": "JavaScript Robotics and IoT programming framework, developed at Bocoup.", "domain": ["iot", "robotics", "embedded-systems", "hardware", "developer-tools"], "enriched": true, "function": ["iot", "robotics", "embedded", "sdk"], "health_score": 20, "homepage": "http://johnny-five.io", "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["rwaldron/johnny-five"], "name": "rwaldron/johnny-five", "platform": ["cross-platform", "embedded", "iot"], "pushed_at": "2023-10-24T22:18:06+00:00", "repo": "rwaldron/johnny-five", "stars": 13413, "tags": ["firmata", "arduino", "gpio", "nodebots", "raspberry-pi", "tessel", "hardware-programming", "javascript", "nodejs"], "topics": ["javascript", "arduino", "tessel", "raspberry-pi", "chip", "photon", "pcduino", "gpio", "i2c", "adc", "dac", "pwm", "spi", "serial", "1-wire", "bluetooth", "iot", "robotics", "beaglebone-black", "intel"], "urls": [], "use_cases": ["blink an LED on an Arduino from JavaScript", "control motors and servos for a robot with Node.js", "read sensor data from a Raspberry Pi in JavaScript", "build IoT prototypes without writing C/C++", "teach hardware programming to beginners with NodeBots", "interface with I2C, SPI, or serial peripherals from JavaScript"], "what_it_is": "Johnny-Five is a Firmata protocol-based JavaScript robotics and IoT programming framework for Node.js. It provides composable, consistent APIs for controlling LEDs, motors, sensors, and other hardware across many boards including Arduino, Raspberry Pi, Tessel 2, and Particle Photon.", "when_to_avoid": ["you need hard real-time control or microsecond timing", "you're working in a language other than JavaScript/Node.js", "you need a very small footprint on constrained microcontrollers", "you require actively developed cutting-edge features, as development has slowed"], "when_to_choose": ["you want to program Arduino-compatible or single-board hardware in JavaScript/Node.js", "you need a consistent API across multiple board platforms", "you're teaching or learning robotics and electronics", "you want a mature library with extensive examples and platform support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/johnny-five", "repo": "rwaldron/johnny-five", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "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:03.268373+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:03.268373+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:13:19.237511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12e84b4f017061746b8ec5145006aec07fd1579f500e162042cd66af27cd4a92", "fetched_at": "2026-08-28T04:11:03.268373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwaldron/johnny-five"}, {"content_hash": "3754a298dab33c8446154d67840265845503da489fc01d741242e2c26b95e6ba", "fetched_at": "2026-08-29T08:08:33.456104+00:00", "kind": "homepage", "missing": false, "url": "http://johnny-five.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5269, "days_push": 1044, "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}}