{"id":115407,"date":"2026-09-03T01:08:23","date_gmt":"2026-09-03T01:08:23","guid":{"rendered":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/"},"modified":"2026-09-03T01:08:23","modified_gmt":"2026-09-03T01:08:23","slug":"meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis","status":"publish","type":"post","link":"https:\/\/youzum.net\/it\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/","title":{"rendered":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Teams running coding agents hit the same wall. Claude Code speaks the Anthropic Messages API, Codex CLI speaks OpenAI, and the model a team actually wants to serve sits behind vLLM, <a href=\"https:\/\/developer.nvidia.com\/nim\">NVIDIA NIM<\/a>, or Ollama. Rewriting the agent is not an option, so the translation layer has to live somewhere else.<\/p>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard\">Switchyard<\/a> is NVIDIA\u2019s answer: a Rust proxy and library for LLM traffic that routes requests across providers, translates between OpenAI and Anthropic formats, records operational metrics, and exposes typed, composable routing algorithms. It is released under <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard\/blob\/main\/LICENSE\">Apache 2.0<\/a> with documentation at <a href=\"https:\/\/docs.nvidia.com\/nemo\/switchyard\/home\">docs.nvidia.com\/nemo\/switchyard<\/a>.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Is it deployable?<\/strong> Yes, but for evaluation only. The binary installs from crates.io and the launcher from PyPI, and it self-hosts anywhere, but NVIDIA labels Switchyard <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard#maturity\">pre-alpha and experimental<\/a>, warns it is not for production use, and expects the API and algorithms to change significantly before v1.0.<\/p>\n<h2 class=\"wp-block-heading\"><strong>What Switchyard does<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Clients keep their native API. Switchyard decodes the inbound request into provider-neutral Rust types, runs a routing algorithm to pick a backend, re-encodes the request in that backend\u2019s own wire format, calls it, and translates the response, including streaming events, back into the shape the client expects.<\/p>\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard\/blob\/main\/crates\/switchyard-server\/README.md\">server<\/a> accepts three inbound formats: OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages. Any of the three can address any route, and each configured LLM client selects one upstream format of its own. That decoupling is the point: the agent\u2019s API and the backend\u2019s API no longer have to match.<\/p>\n<div>\n<\/div>\n<p class=\"wp-block-paragraph\">\n<h2 class=\"wp-block-heading\"><strong>Three ways to run it<\/strong><\/h2>\n<\/p><p class=\"wp-block-paragraph\">The <strong>launcher path<\/strong> targets coding agents. Install the published tool with <code>uv tool install --python 3.12 \"nemo-switchyard[cli]\"<\/code>, then run <code>switchyard launch claude<\/code>, <code>switchyard launch codex<\/code>, or <code>switchyard launch openclaw<\/code> against a packaged deployment or your own TOML file.<\/p>\n<p class=\"wp-block-paragraph\">The <strong>server path<\/strong> installs the standalone proxy with <code>cargo install --locked switchyard-server<\/code>, validates a config with <code>--dry-run<\/code>, and serves on a host and port you choose.<\/p>\n<p class=\"wp-block-paragraph\">The <strong>library path<\/strong> uses <code>switchyard-libsy<\/code>, which embeds the routing algorithms in a Rust application without owning an HTTP stack. It never calls a model itself; the algorithm decides which target to use and hands every model call back to the caller.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Routing algorithms<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">A <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard\/blob\/main\/docs\/routing_algorithms\/overview.md\">route<\/a> is one client-visible model ID plus the algorithm behind it. <strong>The server supports:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><strong><code>passthrough<\/code><\/strong> sends every request to one target.<\/li>\n<li><strong><code>random<\/code><\/strong> splits traffic across targets using optional relative weights, with an optional seed that reproduces the selection sequence. This is the A\/B and cost-experiment path.<\/li>\n<li><strong><code>llm_classifier<\/code><\/strong> calls a classifier target for a capability verdict, then routes to a weak or strong target. <code>base_threshold<\/code> is required; <code>min_confidence<\/code>, <code>capability_elevated_floor<\/code>, and <code>session_affinity<\/code> tune it, and anything the judge cannot decide falls through to the strong target. Setting <code>mode = \"escalation\"<\/code> runs every turn on the weak tier first and lets a judge decide whether to rerun it on the strong tier.<\/li>\n<li><strong><code>stage_router<\/code><\/strong> scores tool-result and agent-progress signals from recent turns to pick a capable or efficient target, avoiding an extra classifier call on most turns.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Strong, weak, capable, and efficient are roles inside a route, not fixed properties of a model. The same upstream model can serve different roles in different routes.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Observability<\/strong><\/h2>\n<p class=\"wp-block-paragraph\"><code>GET \/metrics<\/code> returns Prometheus text from the server\u2019s process-wide OpenTelemetry provider. The families cover requests, errors, model-call latency, full-turn latency, prompt, completion, cached, cache-creation, and reasoning tokens, and upstream HTTP attempts by outcome and code. A <code>tier<\/code> label carries <code>strong<\/code> or <code>weak<\/code> for distinguishable classifier decisions, and classifier calls are excluded from those families.<\/p>\n<p class=\"wp-block-paragraph\">The more interesting metric is <code>switchyard_routing_overhead_ms<\/code>, which reports the algorithm\u2019s run time minus the call that served the request. Classifier calls are not subtracted, so an LLM-classifier route reports its classification time here while <code>passthrough<\/code> and <code>random<\/code> report the sub-millisecond cost of picking a target. Buckets start at 0.1 ms. Separately, <code>--routing-log-file<\/code> appends a JSON record per completed response, and <code>GET \/v1\/routing\/session-stats<\/code> returns per-session call and token totals from that log.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Configuration<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">A TOML deployment has three layers: <code>llm_clients<\/code> define base URL, wire format, credential environment variable, and retry policy; <code>targets<\/code> bind one upstream model ID to a client; <code>routes<\/code> expose one client-visible model ID and its algorithm. Secrets never sit in the file, since <code>api_key_env<\/code> only names an environment variable. <code>max_retries<\/code> defaults to 2 and applies to transport failures, timeouts, HTTP 408\/429, and 5xx responses.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li>Switchyard is an Apache-2.0 Rust proxy and library that routes and translates LLM traffic.<\/li>\n<li>It bridges OpenAI Chat, OpenAI Responses, and Anthropic Messages in both directions, including streams.<\/li>\n<li>Four route types ship: passthrough, random, LLM-classifier, and signal-driven stage router.<\/li>\n<li>Prometheus metrics isolate routing overhead from model-call latency, per model and tier.<\/li>\n<li>It is pre-alpha and explicitly not for production, so treat it as an evaluation tool.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<\/p><p class=\"wp-block-paragraph\">\n<\/p><p class=\"wp-block-paragraph\">Check out the <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/Switchyard\"><strong>GitHub Repo<\/strong><\/a> and <a href=\"https:\/\/docs.nvidia.com\/nemo\/switchyard\/home\"><strong>Documentation<\/strong><\/a>. Also,\u00a0feel free to follow us on\u00a0<strong><a href=\"https:\/\/x.com\/intent\/follow?screen_name=marktechpost\" target=\"_blank\" rel=\"noopener\"><mark>Twitter<\/mark><\/a><\/strong>\u00a0and don\u2019t forget to join our\u00a0<strong><a href=\"https:\/\/www.reddit.com\/r\/machinelearningnews\/\" target=\"_blank\" rel=\"noopener\">150k+ML SubReddit<\/a><\/strong>\u00a0and Subscribe to\u00a0<strong><a href=\"https:\/\/magic.beehiiv.com\/v1\/f5e63dd4-5653-4f09-83e2-321a8b1ba526?email=%7B%7Bemail%7D%7D\" target=\"_blank\" rel=\"noopener\">our Newsletter<\/a><\/strong>. Wait! are you on telegram?\u00a0<strong><a href=\"https:\/\/t.me\/machinelearningresearchnews\" target=\"_blank\" rel=\"noopener\">now you can join us on telegram as well.<\/a><\/strong><\/p>\n<p class=\"wp-block-paragraph\">Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.?\u00a0<strong><a href=\"https:\/\/forms.gle\/wbash1wF6efRj8G58\" target=\"_blank\" rel=\"noopener\"><mark>Connect with us<\/mark><\/a><\/strong><\/p>\n<p>The post <a href=\"https:\/\/www.marktechpost.com\/2026\/09\/02\/nvidia-releases-switchyard-rust-proxy-llm-traffic-openai-anthropic-api-translation\/\">Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs<\/a> appeared first on <a href=\"https:\/\/www.marktechpost.com\/\">MarkTechPost<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Teams running coding agents hit the same wall. Claude Code speaks the Anthropic Messages API, Codex CLI speaks OpenAI, and the model a team actually wants to serve sits behind vLLM, NVIDIA NIM, or Ollama. Rewriting the agent is not an option, so the translation layer has to live somewhere else. Switchyard is NVIDIA\u2019s answer: a Rust proxy and library for LLM traffic that routes requests across providers, translates between OpenAI and Anthropic formats, records operational metrics, and exposes typed, composable routing algorithms. It is released under Apache 2.0 with documentation at docs.nvidia.com\/nemo\/switchyard. Is it deployable? Yes, but for evaluation only. The binary installs from crates.io and the launcher from PyPI, and it self-hosts anywhere, but NVIDIA labels Switchyard pre-alpha and experimental, warns it is not for production use, and expects the API and algorithms to change significantly before v1.0. What Switchyard does Clients keep their native API. Switchyard decodes the inbound request into provider-neutral Rust types, runs a routing algorithm to pick a backend, re-encodes the request in that backend\u2019s own wire format, calls it, and translates the response, including streaming events, back into the shape the client expects. The server accepts three inbound formats: OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages. Any of the three can address any route, and each configured LLM client selects one upstream format of its own. That decoupling is the point: the agent\u2019s API and the backend\u2019s API no longer have to match. Three ways to run it The launcher path targets coding agents. Install the published tool with uv tool install &#8211;python 3.12 &#8220;nemo-switchyard[cli]&#8221;, then run switchyard launch claude, switchyard launch codex, or switchyard launch openclaw against a packaged deployment or your own TOML file. The server path installs the standalone proxy with cargo install &#8211;locked switchyard-server, validates a config with &#8211;dry-run, and serves on a host and port you choose. The library path uses switchyard-libsy, which embeds the routing algorithms in a Rust application without owning an HTTP stack. It never calls a model itself; the algorithm decides which target to use and hands every model call back to the caller. Routing algorithms A route is one client-visible model ID plus the algorithm behind it. The server supports: passthrough sends every request to one target. random splits traffic across targets using optional relative weights, with an optional seed that reproduces the selection sequence. This is the A\/B and cost-experiment path. llm_classifier calls a classifier target for a capability verdict, then routes to a weak or strong target. base_threshold is required; min_confidence, capability_elevated_floor, and session_affinity tune it, and anything the judge cannot decide falls through to the strong target. Setting mode = &#8220;escalation&#8221; runs every turn on the weak tier first and lets a judge decide whether to rerun it on the strong tier. stage_router scores tool-result and agent-progress signals from recent turns to pick a capable or efficient target, avoiding an extra classifier call on most turns. Strong, weak, capable, and efficient are roles inside a route, not fixed properties of a model. The same upstream model can serve different roles in different routes. Observability GET \/metrics returns Prometheus text from the server\u2019s process-wide OpenTelemetry provider. The families cover requests, errors, model-call latency, full-turn latency, prompt, completion, cached, cache-creation, and reasoning tokens, and upstream HTTP attempts by outcome and code. A tier label carries strong or weak for distinguishable classifier decisions, and classifier calls are excluded from those families. The more interesting metric is switchyard_routing_overhead_ms, which reports the algorithm\u2019s run time minus the call that served the request. Classifier calls are not subtracted, so an LLM-classifier route reports its classification time here while passthrough and random report the sub-millisecond cost of picking a target. Buckets start at 0.1 ms. Separately, &#8211;routing-log-file appends a JSON record per completed response, and GET \/v1\/routing\/session-stats returns per-session call and token totals from that log. Configuration A TOML deployment has three layers: llm_clients define base URL, wire format, credential environment variable, and retry policy; targets bind one upstream model ID to a client; routes expose one client-visible model ID and its algorithm. Secrets never sit in the file, since api_key_env only names an environment variable. max_retries defaults to 2 and applies to transport failures, timeouts, HTTP 408\/429, and 5xx responses. Key Takeaways Switchyard is an Apache-2.0 Rust proxy and library that routes and translates LLM traffic. It bridges OpenAI Chat, OpenAI Responses, and Anthropic Messages in both directions, including streams. Four route types ship: passthrough, random, LLM-classifier, and signal-driven stage router. Prometheus metrics isolate routing overhead from model-call latency, per model and tier. It is pre-alpha and explicitly not for production, so treat it as an evaluation tool. Check out the GitHub Repo and Documentation. Also,\u00a0feel free to follow us on\u00a0Twitter\u00a0and don\u2019t forget to join our\u00a0150k+ML SubReddit\u00a0and Subscribe to\u00a0our Newsletter. Wait! are you on telegram?\u00a0now you can join us on telegram as well. Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.?\u00a0Connect with us The post Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs appeared first on MarkTechPost.<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_pvb_checkbox_block_on_post":false,"footnotes":""},"categories":[52,5,7,1],"tags":[],"class_list":["post-115407","post","type-post","status-publish","format-standard","hentry","category-ai-club","category-committee","category-news","category-uncategorized","pmpro-has-access"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum<\/title>\n<meta name=\"description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/youzum.net\/it\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum\" \/>\n<meta property=\"og:description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta property=\"og:url\" content=\"https:\/\/youzum.net\/it\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\" \/>\n<meta property=\"og:site_name\" content=\"YouZum\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DroneAssociationTH\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-03T01:08:23+00:00\" \/>\n<meta name=\"author\" content=\"admin NU\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin NU\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\"},\"author\":{\"name\":\"admin NU\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\"},\"headline\":\"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs\",\"datePublished\":\"2026-09-03T01:08:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\"},\"wordCount\":842,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"articleSection\":[\"AI\",\"Committee\",\"News\",\"Uncategorized\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\",\"url\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\",\"name\":\"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum\",\"isPartOf\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#website\"},\"datePublished\":\"2026-09-03T01:08:23+00:00\",\"description\":\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\",\"breadcrumb\":{\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/youzum.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/yousum.gpucore.co\/#website\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"name\":\"YouSum\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/yousum.gpucore.co\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\",\"name\":\"Drone Association Thailand\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"width\":300,\"height\":300,\"caption\":\"Drone Association Thailand\"},\"image\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/DroneAssociationTH\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\",\"name\":\"admin NU\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"caption\":\"admin NU\"},\"url\":\"https:\/\/youzum.net\/it\/members\/adminnu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/youzum.net\/it\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/","og_locale":"it_IT","og_type":"article","og_title":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum","og_description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","og_url":"https:\/\/youzum.net\/it\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/","og_site_name":"YouZum","article_publisher":"https:\/\/www.facebook.com\/DroneAssociationTH\/","article_published_time":"2026-09-03T01:08:23+00:00","author":"admin NU","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin NU","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#article","isPartOf":{"@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/"},"author":{"name":"admin NU","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c"},"headline":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs","datePublished":"2026-09-03T01:08:23+00:00","mainEntityOfPage":{"@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/"},"wordCount":842,"commentCount":0,"publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"articleSection":["AI","Committee","News","Uncategorized"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/","url":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/","name":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs - YouZum","isPartOf":{"@id":"https:\/\/yousum.gpucore.co\/#website"},"datePublished":"2026-09-03T01:08:23+00:00","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","breadcrumb":{"@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/youzum.net\/meet-switchyard-a-rust-proxy-and-library-that-routes-and-translates-llm-traffic-across-openai-and-anthropic-apis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/youzum.net\/"},{"@type":"ListItem","position":2,"name":"Meet Switchyard: A Rust Proxy and Library That Routes and Translates LLM Traffic Across OpenAI and Anthropic APIs"}]},{"@type":"WebSite","@id":"https:\/\/yousum.gpucore.co\/#website","url":"https:\/\/yousum.gpucore.co\/","name":"YouSum","description":"","publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yousum.gpucore.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/yousum.gpucore.co\/#organization","name":"Drone Association Thailand","url":"https:\/\/yousum.gpucore.co\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","width":300,"height":300,"caption":"Drone Association Thailand"},"image":{"@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DroneAssociationTH\/"]},{"@type":"Person","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c","name":"admin NU","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","caption":"admin NU"},"url":"https:\/\/youzum.net\/it\/members\/adminnu\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"admin NU","author_link":"https:\/\/youzum.net\/it\/members\/adminnu\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/youzum.net\/it\/category\/ai-club\/\" rel=\"category tag\">AI<\/a> <a href=\"https:\/\/youzum.net\/it\/category\/committee\/\" rel=\"category tag\">Committee<\/a> <a href=\"https:\/\/youzum.net\/it\/category\/news\/\" rel=\"category tag\">News<\/a> <a href=\"https:\/\/youzum.net\/it\/category\/uncategorized\/\" rel=\"category tag\">Uncategorized<\/a>","rttpg_excerpt":"Teams running coding agents hit the same wall. Claude Code speaks the Anthropic Messages API, Codex CLI speaks OpenAI, and the model a team actually wants to serve sits behind vLLM, NVIDIA NIM, or Ollama. Rewriting the agent is not an option, so the translation layer has to live somewhere else. Switchyard is NVIDIA\u2019s answer:&hellip;","_links":{"self":[{"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/posts\/115407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/comments?post=115407"}],"version-history":[{"count":0,"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/posts\/115407\/revisions"}],"wp:attachment":[{"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/media?parent=115407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/categories?post=115407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/youzum.net\/it\/wp-json\/wp\/v2\/tags?post=115407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}