{"adoption": {"forks": 51, "observed_at": "2026-08-28T04:03:27.012070+00:00", "stars": 1066}, "canonical_url": "https://ross.abutalabs.com/products/kotlinx-rpc", "card": {"archived": false, "artifact_type": "library", "description": "Add asynchronous RPC services to your multiplatform applications.", "domain": ["backend", "web-development", "developer-tools", "apis"], "enriched": true, "function": ["rpc", "serialization", "middleware"], "health_score": 100, "homepage": "https://kotlin.github.io/kotlinx-rpc/", "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "experimental", "member_repos": ["Kotlin/kotlinx-rpc"], "name": "Kotlin/kotlinx-rpc", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-26T14:53:27+00:00", "repo": "Kotlin/kotlinx-rpc", "stars": 1066, "tags": ["kotlin-multiplatform", "coroutines", "ktor", "grpc", "asynchronous", "jetbrains-official", "android", "ios"], "topics": ["asynchronous", "coroutines", "kotlin", "rpc"], "urls": [], "use_cases": ["call server methods from a Kotlin Multiplatform app over RPC", "expose an RPC service from a Ktor backend", "stream data to clients with Flow-based RPC methods", "share service interfaces between client and server code", "use gRPC from Kotlin Multiplatform", "build asynchronous client-server communication with coroutines"], "what_it_is": "kotlinx.rpc is an official JetBrains Kotlin library for adding asynchronous Remote Procedure Call (RPC) services to Kotlin Multiplatform applications using ordinary language constructs like interfaces, suspend functions, and Flows. It supports multiple transports including a Ktor integration and a preview gRPC Kotlin Multiplatform integration.", "when_to_avoid": ["you need a battle-tested, stable RPC solution for production today", "your stack is not Kotlin or does not target Kotlin Multiplatform", "you need broad language interop beyond Kotlin clients and servers"], "when_to_choose": ["you are building a Kotlin Multiplatform app and want typed RPC with shared interfaces", "you prefer suspend functions and Flows over manual HTTP API plumbing", "you want a JetBrains-maintained RPC library with Ktor or gRPC transports"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kotlinx-rpc", "repo": "Kotlin/kotlinx-rpc", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "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:03:27.012070+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.012070+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:13.509933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d2f39972098687df56e63ca0244428f004b9f77512138ccebe34449064569f", "fetched_at": "2026-08-28T04:03:27.012070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin/kotlinx-rpc"}, {"content_hash": "ba72c386743f599cecbda66d840d027046b5a7dcecbfaf3adea7365157672957", "fetched_at": "2026-08-29T12:57:03.709816+00:00", "kind": "homepage", "missing": false, "url": "https://kotlin.github.io/kotlinx-rpc/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 69, "rhythm": 78}, "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": 971, "days_push": 7, "days_rel": 68, "gap_med": 30.5, "n_releases_24m": 15}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}