{"adoption": {"forks": 888, "observed_at": "2026-08-28T04:09:09.671298+00:00", "stars": 5094}, "canonical_url": "https://ross.abutalabs.com/products/aiortc", "card": {"archived": false, "artifact_type": "library", "description": "WebRTC and ORTC implementation for Python using asyncio", "domain": ["web-development", "networking", "developer-tools"], "enriched": true, "function": ["websocket", "http-server", "audio-processing", "video-processing", "networking", "concurrency"], "health_score": 76, "homepage": null, "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["aiortc/aiortc"], "name": "aiortc/aiortc", "platform": ["python", "cross-platform"], "pushed_at": "2026-07-17T08:17:35+00:00", "repo": "aiortc/aiortc", "stars": 5094, "tags": ["webrtc", "ortc", "asyncio", "data-channel", "sdp", "dtls", "srtp", "real-time-communication", "signaling", "real-time", "audio", "video"], "topics": ["webrtc", "ortc", "data-channel", "python", "asyncio", "webrtc-libraries"], "urls": [], "use_cases": ["build a WebRTC server in Python", "exchange data channels between Python and browsers", "apply OpenCV computer vision to WebRTC video streams", "learn how WebRTC works by reading a readable implementation", "stream audio and video from Python to a browser", "implement custom signaling and media handling without native WebRTC bindings"], "what_it_is": "aiortc is a Python library implementing WebRTC and ORTC on top of asyncio, with an API closely mirroring the JavaScript WebRTC API. It supports audio, video, and data channel exchange and is regularly tested for interoperability with Chrome and Firefox.", "when_to_avoid": ["you need maximum media performance or hardware-accelerated codecs", "you are building a browser-only app where native WebRTC suffices", "you need a language other than Python", "you need a turnkey video conferencing product rather than a building block"], "when_to_choose": ["you need WebRTC in pure Python with asyncio integration", "you want to plug Python audio/video processing into a WebRTC pipeline", "you need a hackable, readable WebRTC implementation for learning or customization", "you want interoperable audio, video, and data channels with Chrome and Firefox"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aiortc", "repo": "aiortc/aiortc", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "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:09.671298+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.671298+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:02:14.815860+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d5140ba3230aa871e7fe20bbdd410a9b4b05af3a6d4326012239f920fd72b122", "fetched_at": "2026-08-28T04:09:09.671298+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aiortc/aiortc"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3113, "days_push": 47, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}