{"adoption": {"forks": 211, "observed_at": "2026-08-28T04:06:55.057534+00:00", "stars": 2490}, "canonical_url": "https://ross.abutalabs.com/products/switchyard", "card": {"archived": false, "artifact_type": "service", "description": "Switchyard lets LLM applications route traffic across models and providers while preserving native OpenAI and Anthropic API compatibility - enabling flexible model selection, benchmarking, and cost/performance optimization.", "domain": ["large-language-models", "artificial-intelligence", "developer-tools", "apis"], "enriched": true, "function": ["proxy", "routing", "llm-inference", "monitoring", "middleware"], "health_score": 100, "homepage": null, "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "experimental", "member_repos": ["NVIDIA-NeMo/Switchyard"], "name": "NVIDIA-NeMo/Switchyard", "platform": ["rust", "cli", "self-hosted", "cross-platform"], "pushed_at": "2026-08-26T21:55:49+00:00", "repo": "NVIDIA-NeMo/Switchyard", "stars": 2490, "tags": ["llm-gateway", "api-translation", "openai-compatible", "anthropic-api", "model-routing", "benchmarking", "prometheus-metrics", "vllm", "ollama"], "topics": [], "urls": [], "use_cases": ["route coding agents like Claude Code or Codex to open-source models served by vLLM or Ollama", "translate Anthropic Messages API requests to OpenAI-compatible endpoints", "A/B benchmark multiple LLM backends behind one endpoint", "optimize cost and performance with signal-driven model routing", "embed LLM routing logic in a Rust application via a library", "monitor LLM proxy traffic with Prometheus metrics"], "what_it_is": "Switchyard is a Rust proxy and library that routes LLM traffic across models and providers while translating between OpenAI Chat, Anthropic Messages, and OpenAI Responses API formats. It supports pluggable routing algorithms (random, LLM-as-classifier, signal-driven stage routing) and exposes Prometheus metrics for requests, latency, tokens, and routing overhead.", "when_to_avoid": ["you need a production-hardened gateway today (pre-alpha, APIs expected to change)", "you want a turnkey server without writing or tuning routing configuration", "your stack is not Rust and you only need the library path"], "when_to_choose": ["you need OpenAI/Anthropic API compatibility across heterogeneous model backends", "you want to experiment with routing algorithms for LLM traffic in Rust", "you are benchmarking or spreading traffic across several models"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/switchyard", "repo": "NVIDIA-NeMo/Switchyard", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "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:06:55.057534+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.057534+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:27:48.551506+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "84818161fc13191b468b41a48e59045712e6e26732a0b3fcf72f05ac98fba26f", "fetched_at": "2026-08-28T04:06:55.057534+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVIDIA-NeMo/Switchyard"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 7, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 106, "days_push": 7, "days_rel": 23, "gap_med": 20.0, "n_releases_24m": 3}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}