{"adoption": {"forks": 259, "observed_at": "2026-08-28T04:04:43.947599+00:00", "stars": 1438}, "canonical_url": "https://ross.abutalabs.com/products/rstudio-plumber", "card": {"archived": false, "artifact_type": "library", "description": "Turn your R code into a web API.", "domain": ["web-development", "backend", "apis", "data-science", "developer-tools"], "enriched": true, "function": ["api-framework", "http-server", "web-framework", "serialization", "middleware"], "health_score": 77, "homepage": "https://www.rplumber.io", "language": "R", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["rstudio/plumber"], "name": "rstudio/plumber", "platform": ["cross-platform"], "pushed_at": "2026-02-09T15:10:26+00:00", "repo": "rstudio/plumber", "stars": 1438, "tags": ["r-package", "api-generator", "annotation-based", "rest-api", "swagger", "cran", "r", "web-server"], "topics": ["plumber", "r", "api", "api-server"], "urls": [], "use_cases": ["expose R functions as a REST API", "serve machine learning model predictions over HTTP", "turn an R script into a web service", "build an API around R data analysis", "serve plots generated in R as images via HTTP", "deploy R code as an endpoint for other applications to call"], "what_it_is": "Plumber is an R package that converts annotated R functions into RESTful web API endpoints using roxygen2-style comments. It handles routing, request parsing, response serialization, and auto-generated Swagger/OpenAPI documentation.", "when_to_avoid": ["you need a high-performance, general-purpose web framework outside R", "you're building a full web application with frontend and sessions", "your team doesn't use R", "you need async or streaming-first HTTP features at large scale"], "when_to_choose": []}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rstudio-plumber", "repo": "rstudio/plumber", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "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:43.947599+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:43.947599+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:36:41.607051+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "649314e205c545cd1d4ed03f3002f0b84d96f5e130663aa6adcb0f2b7ba5b762", "fetched_at": "2026-08-28T04:04:43.947599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstudio/plumber"}, {"content_hash": "d1d8632acd6d2a5546a436c95639b8bfcfbb843c251fda99da13a2d7648ddfb0", "fetched_at": "2026-08-29T11:47:20.400817+00:00", "kind": "homepage", "missing": false, "url": "https://www.rplumber.io"}, {"content_hash": "b5170edfec238be1d96c8acd78b921c364c50c0df68612a8d474c8f1040262e1", "fetched_at": "2026-08-29T11:47:20.403664+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/articles/quickstart.html"}, {"content_hash": "9090bc787bda8457889bf557b3ed360a217602849e2bfe853bde8d4898957fe2", "fetched_at": "2026-08-29T11:47:20.405912+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/news/index.html"}, {"content_hash": "3c5e42c76cc58a46c8d8ee3f3a317338c9af4ffac2b0240043a7c7bcc601e431", "fetched_at": "2026-08-29T11:47:20.408564+00:00", "kind": "site_page", "missing": false, "url": "https://www.rplumber.io/authors.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 100, "rhythm": 57}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4108, "days_push": 205, "days_rel": 205, "gap_med": 32.5, "n_releases_24m": 5}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}