{"adoption": {"forks": 301, "observed_at": "2026-08-28T04:05:51.718435+00:00", "stars": 1903}, "canonical_url": "https://ross.abutalabs.com/products/peer-calls", "card": {"archived": false, "artifact_type": "application", "description": "Group peer to peer video calls for everyone written in Go and TypeScript", "domain": ["web-development", "self-hosted", "privacy"], "enriched": true, "function": ["websocket", "http-server", "rpc"], "health_score": 56, "homepage": "https://peercalls.com", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["peer-calls/peer-calls"], "name": "peer-calls/peer-calls", "platform": ["windows", "self-hosted", "cross-platform"], "pushed_at": "2025-10-28T22:46:52+00:00", "repo": "peer-calls/peer-calls", "stars": 1903, "tags": ["webrtc", "video-calls", "p2p", "sfu", "conference", "go", "react", "pion", "real-time", "linux", "macos", "docker", "web-server"], "topics": ["peer-calls", "peer-to-peer", "p2p", "video-call", "conference", "webrtc", "peer-call", "sfu"], "urls": [], "use_cases": ["host my own video conference server without third-party services", "run group video calls peer-to-peer in the browser", "self-host a webrtc meeting tool with an sfu", "share my screen and files during a private video call", "reduce bandwidth for multi-party calls with selective forwarding", "set up an end-to-end encrypted video chat for a team"], "what_it_is": "Peer Calls is a self-hosted group peer-to-peer video calling application written in Go and TypeScript, built on WebRTC via the pion library. It supports mesh connections and an optional Selective Forwarding Unit (SFU) mode to reduce upload bandwidth, with features like file transfer, screen sharing, and end-to-end encryption.", "when_to_avoid": ["you need enterprise features like recording, calendars, or large-scale webinars", "you require native mobile apps rather than browser-based calls", "you need TURN infrastructure management out of the box"], "when_to_choose": ["you want a lightweight, self-hosted alternative to Zoom/Meet with no accounts", "you need peer-to-peer calls with optional SFU scaling", "you prefer a Go server with simple YAML config and Docker deployment"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/peer-calls", "repo": "peer-calls/peer-calls", "role": "main", "score": 45}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "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:51.718435+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.718435+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:11:53.364990+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "541c8d0be54a12188ba01d42bfb1ed9618927975cb21d2b41cc021794904ad4f", "fetched_at": "2026-08-28T04:05:51.718435+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peer-calls/peer-calls"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 49, "longevity": 100, "rhythm": 8}, "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": 3807, "days_push": 309, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 45, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}