{"adoption": {"forks": 1684, "observed_at": "2026-08-28T04:10:24.397726+00:00", "stars": 8716}, "canonical_url": "https://ross.abutalabs.com/products/ocelot", "card": {"archived": false, "artifact_type": "library", "description": ".NET API Gateway", "domain": ["microservices", "apis", "backend", "web-development"], "enriched": true, "function": ["api-gateway", "proxy", "routing", "middleware", "http-server", "caching", "auth", "rate-limiting", "load-testing"], "health_score": 100, "homepage": "https://ocelot.readthedocs.io", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ThreeMammals/Ocelot"], "name": "ThreeMammals/Ocelot", "platform": ["dotnet", "cross-platform", "cloud"], "pushed_at": "2026-08-26T16:50:53+00:00", "repo": "ThreeMammals/Ocelot", "stars": 8716, "tags": ["api-gateway", "reverse-proxy", "aspnetcore", "microservices", "service-mesh", "nuget", "request-aggregation", "service-discovery", "devops", "web-server", "docker"], "topics": ["ocelot", "dotnet", "aspnetcore", "gateway", "microservices", "reverse-proxy", "api-gateway"], "urls": [], "use_cases": ["set up an api gateway for .net microservices", "unify multiple microservices behind a single entry point", "reverse proxy http requests to downstream services in asp.net core", "aggregate responses from multiple services into one endpoint", "add authentication and jwt bearer token handling at the gateway", "route and rewrite requests with configuration-based rules", "integrate service discovery with consul or service fabric"], "what_it_is": "Ocelot is a .NET API gateway built as a series of ASP.NET Core middlewares, providing a unified entry point for microservices architectures. It routes HTTP(S) requests to downstream services and supports features like authentication, caching, aggregation, and service discovery on any platform ASP.NET Core supports.", "when_to_avoid": ["your stack is not .NET and you don't want to host ASP.NET Core", "you need a standalone gateway appliance with a full admin UI out of the box", "you need non-HTTP protocols like gRPC or TCP passthrough"], "when_to_choose": ["you have a .NET/ASP.NET Core microservices system needing a unified gateway", "you want configuration-driven routing, aggregation, and middleware in C#", "you need IdentityServer/JWT integration at the gateway level", "you want a lightweight alternative to Kong or Traefik within the .NET ecosystem"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ocelot", "repo": "ThreeMammals/Ocelot", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "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:10:24.397726+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:24.397726+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:25:21.047402+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7f0b0166f6afb69e856e982cfd1eca6a9927d42ff6ea4cc949c5cd95fabc0787", "fetched_at": "2026-08-28T04:10:24.397726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThreeMammals/Ocelot"}, {"content_hash": "552cb8e5f4311131c54b55710b1c4f97089e1d377d14c270976b26445b38b61e", "fetched_at": "2026-08-29T08:25:42.366027+00:00", "kind": "homepage", "missing": false, "url": "https://ocelot.readthedocs.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 95}, "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": 3717, "days_push": 7, "days_rel": 35, "gap_med": 23.0, "n_releases_24m": 17}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}