{"adoption": {"forks": 1548, "observed_at": "2026-08-28T04:09:48.063549+00:00", "stars": 6721}, "canonical_url": "https://ross.abutalabs.com/products/ejabberd", "card": {"archived": false, "artifact_type": "service", "description": "Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)", "domain": ["iot", "self-hosted", "networking"], "enriched": true, "function": ["http-server", "websocket", "message-queue", "auth", "security"], "health_score": 99, "homepage": "https://www.process-one.net/ejabberd/", "language": "Erlang", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["processone/ejabberd"], "name": "processone/ejabberd", "platform": ["windows", "self-hosted", "cross-platform"], "pushed_at": "2026-08-17T09:58:02+00:00", "repo": "processone/ejabberd", "stars": 6721, "tags": ["xmpp", "mqtt-broker", "sip", "voip", "chat-server", "erlang", "pubsub", "matrix", "stun-turn", "federation", "messaging", "real-time", "linux", "macos", "docker"], "topics": ["erlang", "xmpp", "jabber", "chat", "messaging", "sip", "voip", "iot", "pubsub", "groupchat", "stun", "turn", "ejabberd", "mqtt", "server", "matrix"], "urls": [], "use_cases": ["self-host an XMPP chat server for my organization", "run an MQTT broker for IoT device telemetry", "deploy a federated instant messaging server", "host group chat and MUC rooms at scale", "add voice and video calling via SIP and WebRTC", "build a messaging backend for multiplayer games", "support millions of concurrent messaging users"], "what_it_is": "ejabberd is an open-source, massively scalable real-time messaging platform written in Erlang/OTP that combines an XMPP server, MQTT broker, and SIP service in a single process. It has been maintained since 2002 and powers large deployments at WhatsApp, Nintendo, BBC, and Facebook, supporting millions of concurrent users per node.", "when_to_avoid": ["you only need a simple chat app backend without XMPP/MQTT protocols", "your team cannot operate an Erlang-based server or its configuration model", "you need a lightweight single-protocol broker with minimal resource usage"], "when_to_choose": ["you need a battle-tested, massively scalable XMPP server with federation", "you want XMPP, MQTT, and SIP in one unified platform", "you need self-hosted messaging with strong protocol compliance (400+ XEPs)", "you require clustering and fault tolerance via Erlang/OTP"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ejabberd", "repo": "processone/ejabberd", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "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:48.063549+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.063549+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:54.765620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d38baade461e8d14aefbcdf8cca950905516744e0eae2514b50493fab67b09c", "fetched_at": "2026-08-28T04:09:48.063549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/processone/ejabberd"}, {"content_hash": "1210a96d50b509c3afd310f06f247bb26bf57d2ccab4acfe90e85df296073ee2", "fetched_at": "2026-08-29T08:38:53.552193+00:00", "kind": "homepage", "missing": false, "url": "https://www.process-one.net/ejabberd/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 83}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6050, "days_push": 16, "days_rel": 34, "gap_med": 51, "n_releases_24m": 12}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}