{"adoption": {"forks": 206, "observed_at": "2026-08-28T04:07:18.673807+00:00", "stars": 2767}, "canonical_url": "https://ross.abutalabs.com/products/soheilhy-cmux", "card": {"archived": false, "artifact_type": "library", "description": "Connection multiplexer for GoLang: serve different services on the same port!", "domain": ["networking", "backend", "developer-tools", "apis"], "enriched": true, "function": ["networking", "middleware", "http-server", "rpc"], "health_score": 72, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["soheilhy/cmux"], "name": "soheilhy/cmux", "platform": ["go", "cross-platform"], "pushed_at": "2026-06-08T03:39:49+00:00", "repo": "soheilhy/cmux", "stars": 2767, "tags": ["connection-multiplexing", "tcp", "grpc", "protocol-matching", "single-port"], "topics": [], "urls": [], "use_cases": ["serve grpc and http on the same port", "multiplex multiple protocols on one tcp listener", "run ssh and https behind a single port", "route connections by protocol payload in go", "expose rest and grpc apis on one endpoint", "share a port between multiple go servers"], "what_it_is": "cmux is a Go library that multiplexes TCP connections based on their payload, allowing multiple protocols like gRPC, HTTP, HTTPS, and SSH to be served on the same port. It matches the first bytes of each connection and routes it to the appropriate protocol-specific listener.", "when_to_avoid": ["you need http.Request.TLS populated in handlers for HTTPS", "a single connection must switch between protocols mid-stream", "you use Java gRPC clients and cannot use MatchWithWriters"], "when_to_choose": ["you need to serve multiple protocols on a single port behind a firewall or load balancer", "you want to combine gRPC and HTTP/REST on one endpoint in Go", "you need lightweight protocol sniffing with negligible overhead on long-lived connections"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/soheilhy-cmux", "repo": "soheilhy/cmux", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "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:07:18.673807+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.673807+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:16:44.797143+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6fd152351ccc4ae98870a3d3fa8b6199ca619ac0dd0b0ee21e998489890b433", "fetched_at": "2026-08-28T04:07:18.673807+00:00", "kind": "readme", "missing": false, "url": "https://github.com/soheilhy/cmux"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 86, "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": 4053, "days_push": 86, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}