{"adoption": {"forks": 46, "observed_at": "2026-08-28T04:04:55.475697+00:00", "stars": 1508}, "canonical_url": "https://ross.abutalabs.com/products/membrane_core", "card": {"archived": false, "artifact_type": "framework", "description": "The core of Membrane Framework, multimedia processing framework written in Elixir", "domain": ["media", "web-development"], "enriched": true, "function": ["streaming", "video-processing", "audio-processing", "middleware", "developer-tools"], "health_score": 97, "homepage": "https://membrane.stream", "language": "Elixir", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["membraneframework/membrane_core"], "name": "membraneframework/membrane_core", "platform": ["elixir", "cross-platform"], "pushed_at": "2026-08-10T07:25:30+00:00", "repo": "membraneframework/membrane_core", "stars": 1508, "tags": ["multimedia", "webrtc", "hls", "rtmp", "transcoding", "pipeline", "media-server", "elixir", "video", "audio", "real-time", "linux", "macos"], "topics": ["membrane", "membrane-framework", "multimedia", "streaming", "streaming-video", "streaming-audio", "streaming-api", "elixir"], "urls": [], "use_cases": ["build a WebRTC SFU for video conferencing", "transcode video streams between codecs like h264 and vp8", "mix and process audio in real time", "record streams to MP4 or MKV containers", "stream IP camera feeds via RTSP", "integrate media pipelines into a Phoenix web application", "overlay text on live video streams"], "what_it_is": "Membrane Core is the heart of Membrane Framework, a multimedia processing and streaming framework written in Elixir. It lets developers build custom media servers and pipelines for streaming, transcoding, mixing, and recording audio and video over protocols like WebRTC, HLS, RTSP, and RTMP.", "when_to_avoid": ["you need a turnkey, out-of-the-box media SaaS solution", "your project is not in Elixir or on the BEAM", "you only need simple one-off video file conversion", "you require a framework with a large non-Elixir ecosystem of plugins"], "when_to_choose": ["you need a customizable multimedia pipeline in Elixir", "you want to build a media server with WebRTC, HLS, or RTMP support", "you need fault-tolerant, scalable streaming that integrates with Elixir apps", "you want to plug custom processing into any stage of a media pipeline"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/membrane_core", "repo": "membraneframework/membrane_core", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "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:04:55.475697+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.475697+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:32:33.728269+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc3976e8c3593710bdcebf4d473528582760e54b788fceb0a1530e9e58018e4", "fetched_at": "2026-08-28T04:04:55.475697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/membraneframework/membrane_core"}, {"content_hash": "5ca40aef2e95d760e5d2571677d4d8083d63e3855409c22e42d0d70d19c99845", "fetched_at": "2026-08-29T11:36:50.922444+00:00", "kind": "homepage", "missing": false, "url": "https://membrane.stream"}, {"content_hash": "d3deec6a6c65d0ea7bc89cde2875d5962332adb0eabbf34a5eb93c9ccec8fe88", "fetched_at": "2026-08-29T11:36:50.932067+00:00", "kind": "site_page", "missing": false, "url": "https://membrane.stream/about"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 89}, "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": 3506, "days_push": 23, "days_rel": 72, "gap_med": 19, "n_releases_24m": 14}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}