Этот проект полезно рассматривать как инфраструктуру между вашим инструментом для кодинга и аккаунтами моделей. Claude Code, Codex, Cursor, Cline, клиенты в стиле Copilot, Antigravity, OpenClaw и другие OpenAI-compatible инструменты могут указывать на `http://localhost:20128/v1`; затем 9Router решает, как транслировать, сжимать, маршрутизировать, повторять и логировать запрос.
Get the latest on AI, LLMs & developer tools
New MCP servers, model updates, and guides like this one — delivered weekly.
Смотреть видео о 9Router
Предпочитаете читать? В руководстве ниже рассматриваются архитектура, настройка, риски и практический вердикт.
Редакционная заметка
Эта статья основана на репозитории GitHub, README, метаданных пакета, дереве исходного кода, метаданных npm, релизах/тегах, недавних issue, недавних PR и файлах конфигурации провайдеров, изученных 3 июня 2026 г. Утверждения в README о «бесплатном/безлимитном» доступе рассматриваются как позиционирование проекта, а не как независимо проверенные данные о квотах.
1. 9router в одном предложении
9Router — это локальный LLM-шлюз с лицензией MIT для агентов кодинга, который объединяет OpenAI-compatible API, трансляцию провайдеров, резервное переключение между аккаунтами, отслеживание квот, сжатие вывода инструментов RTK, панель управления и развертывание через Docker/локально.
| Область | Детали | Почему это важно |
|---|---|---|
| Репозиторий | decolua/9router | https://github.com/decolua/9router |
| Основной язык | JavaScript | Основной язык GitHub на момент исследования. |
| Лицензия | MIT | При необходимости отдельно проверьте лицензии встроенных или бинарных компонентов. |
| Создано | 5 января 2026 г. | Опубликованный пакет проверен: 0.4.66 от 29 мая 2026 г.; последняя запись в GitHub Releases проверена: v0.4.63 от 26 мая 2026 г. |
2. Почему это важно
Проект важен, потому что рабочие процессы ИИ-кодинга больше не привязаны к одному клиенту или одному провайдеру моделей. Разработчики часто используют Claude Code, Codex, Cursor, Cline и OpenAI-compatible инструменты параллельно, в то время как доступ к моделям осуществляется через подписки, API-ключи, бесплатные уровни, региональных провайдеров и локально-совместимые эндпоинты.
9Router пытается нормализовать этот хаос в один эндпоинт и одну панель управления. Вместо того чтобы перенастраивать каждый инструмент кодинга, когда у провайдера заканчивается квота или меняется формат событий, вы создаете аккаунты провайдеров, псевдонимы моделей, комбинации и цепочки резервного переключения в маршрутизаторе.
Агрессивный подход к экономии токенов также практичен. Агенты кодинга расходуют контекст на diff-файлы, вывод grep, логи, списки файлов и повторяющиеся транскрипты инструментов. Сжатие RTK выполняется до трансляции формата, поэтому проект может уменьшить размер полезной нагрузки, не требуя от каждого вышестоящего клиента знаний о формате сжатия.
3. Архитектура и ментальная модель
9Router — это панель управления на Next.js плюс API-шлюз с отдельно опубликованным CLI-пакетом. Приложение переписывает OpenAI-compatible маршруты в обработчики Next API, делегирует работу чата в ядро трансляции/маршрутизации `open-sse`, сохраняет состояние выполнения в локальном хранилище данных и предоставляет панель управления для провайдеров, квот, логов и управления комбинациями.
| Область | Детали | Почему это важно |
|---|---|---|
| Интерфейс клиента | `http://localhost:20128/v1` | OpenAI-compatible эндпоинт, используемый Claude Code, Codex, Cursor, Cline, Antigravity и аналогичными клиентами. |
| Панель управления | Приложение на Next.js | Настройка провайдеров, комбинации, псевдонимы, квоты, использование, логи, настройки эндпоинтов, облачная синхронизация и тестирование моделей. |
| CLI-пакет | `9router` в npm | Запускает локальную среду выполнения, лаунчер, хуки для системного трея и поведение упакованного приложения. |
| Обработчики запросов | `src/app/api/v1/*` | Маршруты для чат-комплитов, ответов, сообщений, моделей, эмбеддингов, изображений, речи, поиска и fetch-запросов. |
| Ядро трансляции | `open-sse/*` | Форматирование трансляции, выполнение провайдеров, вспомогательные функции для стриминга, обновление токенов и вспомогательные функции для обработки сбоев. |
| Реестр провайдеров | `src/shared/constants/providers.js` | OAuth-провайдеры, провайдеры с API-key, бесплатные провайдеры/провайдеры с бесплатным тарифом, типы медиа, псевдонимы и метаданные рисков. |
| Хранилище | Локальная директория данных и адаптеры SQLite | Текущий исходный код использует адаптеры баз данных, хотя в старой документации по архитектуре все еще упоминается хранилище JSON. |
4. Минимальная end-to-end настройка
Команды ниже взяты из документации репозитория и сверены с текущим исследовательским снимком. Используйте их как отправную точку, а затем прочитайте связанную README перед установкой в production.
# Global install path
npm install -g 9router
9router
# Source development path
git clone https://github.com/decolua/9router.git
cd 9router
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
# Docker path
docker run -d \
--name 9router \
-p 20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data \
decolua/9router:latestНебольшая первая задача должна подтвердить интеграцию, прежде чем подключать ее к критичным данным или большим рабочим пространствам.
# Configure your coding client with the local router
Endpoint: http://localhost:20128/v1
API key: copy from the 9Router dashboard
Model: choose a 9Router model alias or combo, for example kr/claude-sonnet-4.5
# Local URLs
Dashboard: http://localhost:20128/dashboard
OpenAI-compatible API: http://localhost:20128/v15. Технический разбор
5.1 Это шлюз, а не провайдер моделей
9Router не создает магическим образом новую базовую модель. Он находится между клиентами для программирования и вышестоящими провайдерами. Роутер транслирует форматы запросов, обновляет токены там, где это поддерживается, управляет API-ключами, маршрутизирует запросы к аккаунтам и решает, что делать, если предпочтительный провайдер дает сбой или достигает настроенного лимита.
Это различие важно для оценки рисков. Если вышестоящий провайдер меняет событие потока, отклоняет схему, убирает бесплатный тариф или ограничивает использование аккаунта, 9Router должен быстро адаптироваться. Недавние проблемы показывают именно такую нестабильность провайдеров.
Claude Code / Codex / Cursor / Cline
-> http://localhost:20128/v1
-> 9Router endpoint settings
-> combo / alias / provider account
-> upstream model API
-> translated stream back to client5.2 Комбинации — это примитив маршрутизации
В README механизм fallback описывается как трехступенчатая цепочка: сначала подписка, затем дешевые провайдеры, в последнюю очередь — бесплатные. На практике это превращается в конфигурацию комбинаций в панели управления. Комбинация — это место, где вы задаете предпочтения моделей, порядок fallback и то, какие аккаунты могут обслуживать запрос.
Это полезно для долгих дней программирования, так как ручное переключение провайдеров создает лишние сложности. Это также опасно, если вы не понимаете условия, квоты, задержки и качество моделей каждого провайдера. Цепочка резервных вариантов (fallback chain) позволяет продолжать работу, но может незаметно изменить поведение модели в процессе выполнения задачи.
5.3 RTK сжимает вывод инструментов агента перед трансляцией
Самая конкретная техническая функция — это RTK Token Saver. Результаты работы инструментов от агентов программирования часто бывают огромными: diff-файлы, результаты поиска, деревья каталогов, логи, пронумерованные чтения и вывод оболочки. 9Router обнаруживает эти структуры и применяет специализированные фильтры сжатия до того, как запрос будет транслирован в формат Claude, OpenAI, Gemini, Vertex, Kiro или другой целевой формат.
В README сказано, что фильтр безопасен по своей конструкции: если сжатие не удается или увеличивает объем вывода, сохраняется исходный текст. Это правильное поведение по умолчанию, так как сжатие с потерями или повреждение diff-файла может привести к тому, что агент внесет изменения не в тот код.
tool_result: git diff / grep / tree / logs
-> RTK filter selection
-> compressed or original payload
-> format translation
-> upstream provider request5.4 Трансляция форматов — это самая сложная часть
Проект поддерживает OpenAI chat completions, OpenAI Responses, сообщения в стиле Claude, Gemini, Cursor, Kiro, Vertex, Antigravity, пути в стиле Ollama, эмбеддинги, генерацию изображений, речь, поиск и маршруты веб-запросов. Это обширная область совместимости.
Недавние баги показывают цену этого: поведение prefill помощника, ограничения Vertex, специфичные для провайдера параметры токенов, сборка потоков GitHub Gemini и тесты медиа-моделей могут ломаться по-разному. Ценность 9Router заключается в нивелировании этих различий, но это означает, что репозиторий должен постоянно отслеживать изменения вышестоящих сервисов.
5.5 Локальное хранилище и логи являются частью модели угроз
Подобный маршрутизатор хранит или затрагивает учетные данные провайдеров, OAuth сессии, логи запросов, записи об использовании, псевдонимы моделей и, возможно, необработанные промпты. Текущий исходный код включает адаптеры для локальных баз данных; в README описано хранение локальных данных в каталоге data. Относитесь к машине, на которой запущен 9Router, как к инфраструктуре, содержащей учетные данные.
Это не делает проект непригодным для использования. Это означает, что вам следует осознанно настраивать логирование, использовать API keys с минимальными привилегиями, где это возможно, избегать маршрутизации конфиденциальных клиентских данных через аккаунты с неясными условиями и держать порт панели управления закрытым, если вы намеренно не развернули его за аутентификацией.
6. Реальные паттерны: неверно vs верно
| Неверно | Верно | Причина |
|---|---|---|
| Не считайте, что 9Router сам по себе предоставляет неограниченный доступ к моделям. | Относитесь к нему как к маршрутизатору поверх реальных вышестоящих аккаунтов, подписок и бесплатных уровней доступа. | Условия провайдеров, квоты и доступность моделей по-прежнему действуют. |
| Направляйте каждый инструмент на одну комбинацию резервных вариантов без тестирования. | Создавайте отдельные комбинации для программирования, дешевых экспериментов, медиа и конфиденциальной работы. | Разным клиентам и задачам требуются разные профили задержки, качества и риска. |
| Включайте подробные логи навсегда. | Используйте логирование запросов для отладки, затем сокращайте срок хранения и защищайте каталог с данными. | Логи могут содержать промпты, код, ключи и бизнес-контекст. |
| Не полагайтесь только на страницу релизов GitHub для получения актуальной информации. | Проверяйте npm, теги и ветку по умолчанию при отладке поведения, зависящего от версии. | Состояние npm/тегов 9Router ушло вперед относительно последней записи о релизе на GitHub. |
7. Частые ошибки и текущие проблемы
Issue tracker важен, потому что эти репозитории молоды и быстро меняются. В статье issues используются как сигналы риска, а не как доказательство непригодности проекта.
| Область | Детали | Почему это важно |
|---|---|---|
| Условия провайдеров | Провайдеры, использующие OAuth/подписки, могут нести риск ограничения аккаунта. | Исходный код содержит уведомления о рисках; не направляйте критически важный бизнес-трафик бездумно. |
| Расхождение версий | Версия npm/tag 0.4.66 на момент исследования была новее, чем последняя запись в релизах GitHub. | Будьте точны при указании версий. |
| Задержки потоковой передачи | Сообщается о проблемах с зависаниями, пустыми потоками, заполнителями и эхом промптов. | Длинные рассуждения и адаптеры провайдеров требуют дымового тестирования. |
| Медиа-эндпоинты | Недавние PR направляют запросы изображений и STT на реальные медиа-эндпоинты. | Не стоит полагать, что тесты chat-completion проверяют все модальности. |
| Зависимости среды выполнения | Сообщается о проблеме с удалением зависимости SQLite в упакованных путях среды выполнения. | Упакованные установки требуют проверки локального запуска. |
| Устаревшая документация | Более старая архитектурная документация упоминает хранилище JSON, в то время как текущий исходный код включает адаптеры SQLite. | При возникновении конфликтов отдавайте предпочтение исходному коду и README, а не старым архитектурным заметкам. |
8. Заметки о производительности, масштабировании и стоимости
Производительность 9Router определяется двумя переменными: поведением вышестоящего провайдера и накладными расходами на трансляцию/сжатие на стороне роутера. Роутер может уменьшить размер промпта с помощью RTK, но он не может ускорить медленного или перегруженного вышестоящего провайдера.
Резервный вариант (fallback) повышает доступность только в том случае, если резервные модели действительно могут справиться с задачей. Дешевая/бесплатная модель может поддерживать поток, но выдавать менее качественные правки кода, более слабые вызовы инструментов или несовместимые структуры вызова функций.
Лучшая модель затрат — это явная сегментация: премиум-комбинация для рискованных правок и ревью, более дешевая комбинация для исследования, локальная/бесплатная комбинация для широкого поиска и резюме, а также специфические медиа-маршруты для запросов изображений/речи/видео.
9. Для кого это
| Используйте, если | Пропустите, если |
|---|---|
| Вы используете несколько AI-клиентов для кодинга и хотите один локальный эндпоинт. | Вы используете только одного провайдера и цените простоту выше гибкости маршрутизации. |
| Вы активно управляете квотами, подписками, бесплатными уровнями и дешевыми API. | Ваша организация запрещает проксирование сессий с OAuth/подпиской. |
| Ваши промпты для AI-агентов включают большие diff-файлы, логи и результаты поиска. | Вам необходимы проверенные корпоративные шлюзовые элементы управления перед маршрутизацией исходного кода. |
| Вы уверенно чувствуете себя при отладке быстро меняющихся адаптеров провайдеров. | Вам нужно стабильное устройство с медленными, консервативными релизами. |
10. Сигнал сообщества
Поверхность GitHub issue и PR крайне активна и высокотехнична. Большинство сигналов поступает от пользователей, тестирующих комбинации провайдеров в Claude Code, Antigravity, OpenClaw, MiniMax, Xiaomi, GitHub Gemini, Vertex и пользовательских совместимых эндпоинтах.
Самый сильный положительный сигнал — практический: люди используют его с реальными клиентами для программирования и быстро сообщают о граничных случаях. Самое сильное предостережение — тот же факт наоборот: протоколы провайдеров и клиентов меняются настолько быстро, что маршрутизатор приходится постоянно патчить.
README репозитория использует сильные формулировки о бесплатности/безлимитности, но трекер задач рассказывает более приземленную с инженерной точки зрения историю: идентификаторы моделей меняются, форматы потоковой передачи различаются, пути OAuth ломаются, а тесты панели управления должны учитывать модальность.
11. Вердикт: стоит ли использовать?
Наш вывод
Используйте 9Router, если вам нужен локальный, практический шлюз для маршрутизации инструментов ИИ-программирования между несколькими провайдерами и вы готовы тщательно управлять рисками провайдеров. Пропустите его для регулируемых производственных путей кода, пока не проверите хранение учетных данных, логирование, условия провайдеров и поведение при сбоях в соответствии с вашими собственными политиками.
12. Общая картина
9Router является частью более широкого перехода от клиентов с одной моделью к локальной ИИ-инфраструктуре. Разработчики все чаще хотят маршрутизацию моделей, контроль бюджета, видимость квот, совместимость с прокси и абстракцию провайдеров без изменения каждого редактора или терминального агента.
Нерешенная проблема — доверие. Маршрутизацию легко продемонстрировать; безопасная маршрутизация сложнее. Следующее поколение инструментов потребует явных элементов управления политиками, разделения учетных данных, журналов аудита, редактирования и воспроизводимых решений по маршрутизации моделей.
13. Частые вопросы
В: Является ли 9Router провайдером ИИ-моделей?
Нет. Это локальный маршрутизатор и панель управления, которые отправляют запросы вышестоящим провайдерам, учетным записям, бесплатным уровням, подпискам или совместимым эндпоинтам, которые вы настраиваете.
В: Какой эндпоинт мне следует настроить в моем инструменте программирования?
Используйте `http://localhost:20128/v1` и API ключ, отображаемый на панели управления 9Router, затем выберите псевдоним модели или комбинацию, определенную внутри 9Router.
В: Что такое RTK Token Saver?
RTK сжимает общие выходные данные инструментов ИИ-агентов, такие как diff, результаты grep, деревья файлов, логи и пронумерованные чтения, перед тем как полезная нагрузка будет переведена и отправлена вышестоящему провайдеру.
В: Почему версии различаются между npm и GitHub Releases?
На момент исследования теги npm опережали последнюю запись релиза на GitHub. Для отладки проверяйте метаданные npm, теги, релизы и ветку по умолчанию вместе.
В: Безопасно ли использовать учетные записи OAuth/подписки через маршрутизатор?
Это зависит от условий провайдера и вашей толерантности к риску. Проект включает уведомления о рисках для некоторых провайдеров, поэтому рассматривайте это как решение по политике, а не как чисто технический этап настройки.
В: Где хранятся локальные данные?
README описывает локальные данные в настроенном каталоге данных, а текущий исходный код включает адаптеры SQLite. Защищайте этот каталог, так как он может содержать учетные данные, записи об использовании и логи.
В: Что ломается чаще всего?
Недавние проблемы указывают на изменения схемы вышестоящих провайдеров, сборку потоков, идентификаторы моделей, параметры токенов, тесты медиа-эндпоинтов и упакованные зависимости среды выполнения.
14. Глоссарий
| Область | Детали | Почему это важно |
|---|---|---|
| Шлюз | Локальная служба, которая принимает запросы к моделям и перенаправляет их в другие места. | Основная роль 9Router. |
| Комбо | Настроенная цепочка маршрутизации/резервирования. | Используется для выбора подписки, дешевых или бесплатных маршрутов. |
| RTK | Слой сжатия вывода инструментов. | Уменьшает объем результатов работы агента перед передачей провайдеру. |
| OpenAI-compatible | Формат API, на который могут ссылаться многие инструменты. | 9Router предоставляет совместимые конечные точки `/v1`. |
| OAuth-провайдер | Провайдер, аутентифицированный через пользовательскую сессию. | Может нести дополнительные риски, связанные с политикой учетной записи. |
| Медиа-эндпоинт | Путь для изображений, речи, видео или STT. | Не следует тестировать только через чат-комплишены. |
| Резервный маршрут (Fallback) | Маршрутизация к следующему провайдеру/аккаунту при сбое первого. | Полезно, но может изменить поведение модели. |
15. Все источники и ссылки
Основные источники
Issues и PRs
Источники релиза
Внутренние ссылки
16. Таблица атрибуции источников
| Область | Детали | Почему это важно |
|---|---|---|
| README | Позиционирование, быстрый старт, эндпоинт, уровни провайдеров, RTK, Docker, поверхность дашборда. | Первичный источник. |
| Метаданные пакета | CLI package, нюансы версий, требования Node, исполняемый файл. | Первичный источник. |
| Дерево исходного кода | Next routes, ядро перевода, реестр провайдеров, адаптеры баз данных. | Источник архитектуры. |
| Issues/PRs | Отток провайдеров, задержки потоковой передачи, медиа-зонды, предостережения о зависимостях среды выполнения. | Сигнал актуальности. |
| npm и релизы | Расхождение версий между опубликованным пакетом, тегами и записями о релизах. | Источник актуальности. |
Get the Ultimate Antigravity Cheat Sheet
Join 5,000+ developers and get our exclusive PDF guide to mastering Gemini 3 shortcuts and agent workflows.
Related Guides
Humanizer Skill Guide
blader/humanizer: 29 AI-writing patterns, voice calibration, and a two-pass audit, all in one Claude Code skill.
Guides & FeaturesMastering Agent Skills
The open standard for portable AI agent expertise.
Guides & FeaturesAntigravity Workflows Guide
Create automation recipes with Turbo Mode and AgentKit 2.0.
Guides & FeaturesHow to Change Antigravity Themes
Customize themes, dark mode, icons, and color schemes.
Guides & FeaturesHow to Change Language
Switch Antigravity to Spanish, German, Japanese, and more.
Guides & FeaturesAntigravity Security Guide
Known vulnerabilities, safe settings, and hardening steps.
