Switchyard - открытый LLM-роутер от NVIDIA (проект NeMo): единая точка входа для всего LLM-трафика. Приложение шлет запросы в привычном формате (OpenAI Chat, Anthropic Messages или OpenAI Responses), а Switchyard транслирует между форматами и маршрутизирует запрос на нужную модель или провайдера - по стоимости, по качеству ответа или по вашим правилам. Один base_url на все модели: меняете маршрут в конфиге, а не в коде приложений.

Роутер невесомый - это Rust-прокси, сам инференс он не держит, а проксирует к бэкенду (OpenRouter, vLLM, NVIDIA NIM, Ollama, любой OpenAI-совместимый API). В покое занимает около 15 МиБ RAM. Умеет llm_classifier (дешевая модель на простые запросы, сильная на сложные), stage_router по сигналам диалога и A/B. В каждом ответе отдает стоимость и токены, наружу - метрики Prometheus на /metrics.

Карта собирает switchyard-server из канонического апстрима (crates.io) прямо на вашей VM, поднимает его как systemd-сервис на 127.0.0.1:4000, а Caddy выпускает Let's Encrypt и открывает HTTPS. Роутер стартует сразу и держит health - модель провайдера (ключ) вы подставляете сами (BYOM), это ваш аккаунт и ваши лимиты.

Что внутри

  • switchyard-server - сам роутер (Rust), собирается из crates.io на буте, слушает 127.0.0.1:4000, запускается как systemd-сервис switchyard.
  • Caddy - reverse-proxy и авто-TLS (Let's Encrypt), наружу только 80/443, роутер напрямую недоступен.
  • routes.toml - дефолтный маршрут llm_classifier (weak=gpt-4o-mini, strong=gpt-4o через OpenRouter); правится под ваши модели.

Как начать

  1. Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net. Пример: IP 45.15.159.10 -> https://45-15-159-10.fatmetal.net/. Проверка живости: https://<адрес>/health отдает {"status":"ok"}.
  2. Роутер стартует с плейсхолдер-ключом - чтобы он начал реально ходить к моделям, впишите ключ вашего провайдера в /etc/switchyard/switchyard.env (по умолчанию OPENROUTER_API_KEY) и выполните systemctl restart switchyard.
  3. Дальше приложение указывает https://<адрес> как base_url (совместим с OpenAI Chat и Anthropic Messages), модель - switchyard. Маршруты между моделями меняются в /etc/switchyard/routes.toml.

Свой домен

Направьте CNAME на magic-DNS адрес сервера, пропишите домен в /etc/switchyard-mp/params.env (DOMAIN=ваш-домен) и перезапустите install.sh - выпустится Let's Encrypt. Полная памятка и адрес - на сервере: cat /root/switchyard-credentials.txt.

Требования

Ubuntu 24.04, открытые порты 80/443. Первый буст собирает роутер из исходников (Rust-тулчейн ставится и удаляется после сборки) - это 6-8 минут и требует тарифа от CPU2-RAM4-DISK30. Сам рантайм невесомый (15 МиБ RAM). Важно: Switchyard - экспериментальный проект NVIDIA (pre-alpha, v0.2.0), не для критичного продакшена. И egress: из РФ-IP публичные OpenRouter/OpenAI отвечают 403 - для реального инференса нужен провайдер, доступный с этой VM (свой egress вне РФ), либо локальная модель (vLLM/Ollama) как бэкенд.

Подробный разбор с замерами