{"adoption": {"forks": 602, "observed_at": "2026-08-28T04:09:42.918488+00:00", "stars": 6376}, "canonical_url": "https://ross.abutalabs.com/products/moleculer", "card": {"archived": false, "artifact_type": "framework", "description": ":rocket: Progressive microservices framework for Node.js", "domain": ["microservices", "backend", "web-development", "developer-tools"], "enriched": true, "function": ["microservices", "rpc", "message-queue", "caching", "api-framework", "middleware", "monitoring", "tracing", "service-discovery"], "health_score": 99, "homepage": "https://moleculer.services/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["moleculerjs/moleculer"], "name": "moleculerjs/moleculer", "platform": ["cross-platform"], "pushed_at": "2026-08-22T08:03:22+00:00", "repo": "moleculerjs/moleculer", "stars": 6376, "tags": ["microservices-framework", "service-registry", "event-driven", "fault-tolerance", "load-balancing", "circuit-breaker", "pluggable-transporters", "api-gateway", "nodejs"], "topics": ["microservices", "microservice", "nodejs", "distributed-systems", "moleculer", "microservice-framework"], "urls": [], "use_cases": ["build microservices in Node.js", "set up service discovery and a service registry", "implement request-reply and event-driven communication between services", "add circuit breaker, retry, and timeout fault tolerance to distributed services", "build an API gateway in front of microservices", "load balance requests and events across service nodes", "add metrics and distributed tracing to services", "connect services over NATS, MQTT, Kafka, Redis, or AMQP"], "what_it_is": "Moleculer is a fast, progressive microservices framework for Node.js that helps build efficient, reliable, and scalable distributed services. It provides built-in service discovery, load balancing, fault tolerance, caching, and pluggable transporters, serializers, and loggers.", "when_to_avoid": ["you are building a small monolith where a simple web framework suffices", "your team is not using Node.js or JavaScript", "you need a framework with a guaranteed 1.0 stable API, since pre-1.0 minor versions may include breaking changes", "you require a framework with a large corporate backing rather than a community-driven project"], "when_to_choose": ["you are building a microservices architecture in Node.js", "you need built-in service discovery, load balancing, and fault tolerance without extra infrastructure", "you want pluggable transporters and serializers to fit your existing messaging stack", "you need a master-less, scalable distributed system with metrics and tracing out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/moleculer", "repo": "moleculerjs/moleculer", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "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:09:42.918488+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.918488+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:45:10.771264+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ce5c8de8fa7fb1b42546cf829accf8b73a54b852b60b6c27b3cb9b4b85b1a6", "fetched_at": "2026-08-28T04:09:42.918488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/moleculerjs/moleculer"}, {"content_hash": "aaaf72ac46328839abcfe68b48a3ed32a5d262ae187d0026541c9bf2a2d2722c", "fetched_at": "2026-08-29T08:42:29.902548+00:00", "kind": "homepage", "missing": false, "url": "https://moleculer.services/"}, {"content_hash": "f435f3e17dc2ddd32b49d7aec19f5fd688d585cfa1e0ac24c030fb6794f4ce57", "fetched_at": "2026-08-29T08:42:29.911440+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/0.15"}, {"content_hash": "2e540b6995c99da00cbce0cedea587972f8965a8fba645f318bb0d6d322efb11", "fetched_at": "2026-08-29T08:42:29.913262+00:00", "kind": "site_page", "missing": false, "url": "https://moleculer.services/docs/benchmark"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 62}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3484, "days_push": 11, "days_rel": 43, "gap_med": 310.0, "n_releases_24m": 3}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}