{"adoption": {"forks": 517, "observed_at": "2026-08-28T04:05:17.208977+00:00", "stars": 1654}, "canonical_url": "https://ross.abutalabs.com/products/node-opcua", "card": {"archived": false, "artifact_type": "library", "description": "Unlocking the Full Potential of OPC UA with Typescript and NodeJS - http://node-opcua.github.io/", "domain": ["iot", "developer-tools", "apis"], "enriched": true, "function": ["sdk", "networking", "cryptography", "security"], "health_score": 100, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["node-opcua/node-opcua"], "name": "node-opcua/node-opcua", "platform": ["cross-platform", "browser", "windows"], "pushed_at": "2026-08-26T15:19:23+00:00", "repo": "node-opcua/node-opcua", "stars": 1654, "tags": ["opc-ua", "opcua", "industrial-automation", "iiot", "m2m", "industry-4", "typescript", "iec-62541", "client-server", "nodejs", "linux", "macos"], "topics": ["iot-platform", "opc-ua", "node-opcua", "nodejs", "javascript", "iiot", "m2m", "iec-62541", "industrial-automation", "industry-4", "manufacturing", "energy", "transport", "instrumentation", "cybersecurity", "opcua", "cryptography", "typescript"], "urls": [], "use_cases": ["build an OPC UA server to expose industrial sensor data", "connect to a PLC or SCADA system as an OPC UA client", "read and write OPC UA nodes from a Node.js application", "implement secure encrypted industrial communication with certificates", "monitor manufacturing equipment data in an Industry 4.0 setup", "browse an OPC UA address space and subscribe to data changes", "run an OPC UA client in the browser"], "what_it_is": "node-opcua is a full OPC UA (IEC 62541) protocol stack for Node.js and the browser, written in TypeScript. It provides client, server, discovery, and aggregation components with built-in security policies, encryption, and certificate management.", "when_to_avoid": ["your devices use Modbus, MQTT, or other non-OPC-UA protocols", "you need a lightweight embedded OPC UA stack for microcontrollers rather than Node.js", "your project does not run on Node.js 20 or above"], "when_to_choose": ["you need a complete, production-tested OPC UA stack in JavaScript/TypeScript", "you are building industrial automation, IIoT, or M2M integrations on Node.js", "you need client and server implementations with full security policy support", "you want cross-platform deployment including Windows, Linux, macOS, and browser"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/node-opcua", "repo": "node-opcua/node-opcua", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "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:17.208977+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.208977+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:44:56.232281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d25f0cc614a999396dd4781854e7d9ffdfb93ad55e03c3c9d05c1a4aa89c065", "fetched_at": "2026-08-28T04:05:17.208977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/node-opcua/node-opcua"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "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": 4606, "days_push": 7, "days_rel": 13, "gap_med": 9.5, "n_releases_24m": 39}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}