Знакомая картина. Ты в середине задачи, агент разобрался в проекте, держит контекст, осталось два шага до результата. И тут прилетает сообщение про лимит. Дальше либо ждать несколько часов, либо платить за следующий тариф, либо начинать заново в другом инструменте и пересказывать ему всё с нуля.
OmniRoute это попытка убрать этот момент совсем. Не «ещё один агент», а прослойка между твоим инструментом и моделями: один локальный адрес, за которым стоит большой список провайдеров. Кончился лимит у одного, запрос уходит следующему, сессия не прерывается.
Репозиторий: github.com/diegosouzapw/OmniRoute. Лицензия MIT, около 49 тысяч звёзд, коммиты идут каждый день. Пакет в npm называется omniroute и ведёт на тот же репозиторий, это важно проверить, потому что в поиске висят форки-однодневки с одинаковыми описаниями и нулём звёзд.
Что он делает
Один адрес вместо десяти настроек. Поднимается локально на http://localhost:20128, отдаёт OpenAI-совместимый эндпоинт /v1. Любой инструмент, который умеет ходить в свой базовый URL, подключается туда: Claude Code, Codex, Cursor, Cline, Copilot.
Каскад из четырёх уровней. Сначала твоя подписка (Claude Code, Codex, Copilot), кончилась квота, идут твои API-ключи, дальше дешёвые модели, дальше бесплатные. Переключение происходит внутри запроса, тебе не надо ничего нажимать.
Сжатие промптов. В проекте это называется RTK и Caveman, две ступени компрессии поверх друг друга. Заявленная экономия от 15 до 95 процентов, среднее около 89 процентов на сессиях, где много вызовов инструментов. Именно вызовы инструментов и раздувают расход: чтение файлов, вывод команд, длинные логи.
Ключи лежат у тебя. Заявлено: работает целиком на твоей машине, телеметрия по умолчанию выключена, ключи шифруются на диске. Промпты уходят только тем провайдерам, которых ты сам подключил.
Цифры, и что с ними не так
В описании висит «около 1,53 миллиарда бесплатных токенов в месяц». Это не подарок от одной компании, а сумма документированных бесплатных лимитов 43 пулов провайдеров, 516 моделей. Считает её сам проект и пересчитывает раз в две недели, цифра ходит в обе стороны: провайдер закрыл бесплатный тариф, она упала, появился новый, выросла.
Что важнее для ожиданий: бесплатный кусок Claude в этой сумме крошечный. В их же таблице у Claude Sonnet стоит 25 тысяч токенов, а миллионы приходятся на Mistral, Gemini Flash, GPT-4o mini и подобные. То есть «бесплатный Claude Code без лимита» на практике означает: интерфейс Claude Code остаётся, а отвечать тебе будет в основном не Claude. Для рефакторинга, тестов, скучной рутины это нормально. Для сложной архитектурной задачи разница будет чувствоваться.
Отдельно сам проект помечает 15 провайдеров как спорные по условиям использования и оставляет решение тебе. Это честно с их стороны и это твоя ответственность: бесплатный тариф чужого сервиса не обязан разрешать прогон через шлюз.
Установка
Ставится одной командой:
npm install -g omniroute omniroute
Панель откроется на http://localhost:20128, API живёт на http://localhost:20128/v1.
Если не хочешь ставить глобально, есть Docker:
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \ -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
Дальше в панели заходишь в Providers и подключаешь хотя бы одного бесплатного. Без регистрации работают OpenCode Free и Felo, они прошиты в режим auto сразу после установки. Kiro AI даёт бесплатный доступ к Claude, около 50 кредитов в месяц на аккаунт.
Проверить, что всё поднялось:
curl http://localhost:20128/v1/models -H "Authorization: Bearer ТВОЙ_КЛЮЧ"
Ключ берётся в панели, раздел Endpoints. В ответ должен прийти список подключённых моделей.
Подключение Claude Code
У Claude Code нет флага для смены адреса, он читает переменные окружения. Самый короткий путь, шлюз подставит всё сам:
omniroute launch
Если OmniRoute крутится не на этой машине, а на сервере:
omniroute launch --remote http://192.168.0.15:20128 --api-key oma_live_xxx
Руками это выглядит так:
export ANTHROPIC_BASE_URL=http://localhost:20128 export ANTHROPIC_AUTH_TOKEN=твой_ключ_из_панели claude
Две вещи, на которых спотыкаются. Первая: в ANTHROPIC_BASE_URL не надо дописывать /v1, Claude Code добавит путь сам. Вторая: переменные читаются один раз при старте, поменял значение, перезапусти агента, иначе он продолжит ходить туда же.
Хочешь отдельные профили под разные модели:
omniroute setup-claude omniroute launch --profile glm52
Первая команда пишет настройки в ~/.claude/profiles/<имя>/settings.json, вторая запускает Claude Code уже на выбранной модели.
Три вещи, которые стоит знать заранее
Селектор моделей показывает не всё. Родной выбор моделей в Claude Code берёт только те названия, которые начинаются на claude или anthropic. Модель вида glm/glm-5.2 через шлюз работает, но в списке не появится. В OmniRoute для этого есть отдельный тумблер, который подсовывает такие модели под именем с префиксом claude/, по умолчанию он выключен.
Размер контекста считается неправильно. Незнакомой модели Claude Code приписывает окно в 200 тысяч токенов, потому что настоящее значение ему взять неоткуда. Если реальное окно меньше, разговор оборвётся раньше, чем агент этого ждёт.
Бесплатный тариф это не приватность. Локально крутится маршрутизатор, но сами запросы уходят чужим провайдерам, и у бесплатных тарифов условия обычно самые вольные по части обучения на твоих данных. Мой личный порог такой: пет-проекты и учебные задачи туда можно, клиентский код и всё, что под NDA, нет. Для рабочего кода лучше заплатить за подписку и спать спокойно.
Кому это реально нужно
Заходит, если ты каждый день упираешься в лимит на середине задачи, гоняешь агента по рутине с большим количеством чтения файлов и команд, или держишь несколько инструментов сразу и устал настраивать каждый отдельно.
Не заходит, если ты работаешь с чужим кодом под договором, если тебе нужна именно топовая модель на сложной архитектуре, или если ты не готов раз в пару недель проверять, что из бесплатных провайдеров ещё живо. Список меняется, это не поставил и забыл.
Чеклист перед запуском
- Проверил, что ставишь пакет из репозитория
diegosouzapw/OmniRoute, а не из форка. - Поставил, панель открылась на порту 20128.
- Подключил хотя бы одного бесплатного провайдера в разделе Providers.
- Скопировал ключ из раздела Endpoints и проверил список моделей через curl.
- Запустил Claude Code через
omniroute launchи убедился, что ответы идут. - Решил для себя, какой код ты через это гоняешь, а какой нет.
- Через неделю зашёл в панель и посмотрел, сколько бесплатной квоты реально ушло.
Получи план AI под свои задачи. 30 сек.
Хочешь больше таких разборов?
В Telegram новые гайды и разборы каждую неделю. А если у тебя бизнес, такие системы я настраиваю под ключ: голосовые AI-агенты, боты в WhatsApp и Telegram, воронки, лидген, контент и автоматизация. Заявка 60 секунд, отвечаю с планом и ценой в течение дня.