Инструкция · Claude Code · сентябрь 2026

OmniRoute для Claude Code: шлюз за 10 минут и три строки

OmniRoute это шлюз: программа, которая встаёт между твоим Claude Code и моделями и сама переключает запрос на другую модель, когда у первой кончился лимит. Я поставил его на свою машину и замерил по часам: установка 2 минуты 7 секунд, старт 7.3 секунды, вся дорога до первого ответа 10 минут. Ниже порядок без пропусков.

Ставишь шлюз на свой компьютер одной командой, запускаешь его второй, и он поднимается на адресе http://localhost:20128. Дальше в настройках Claude Code прописываешь три строки: адрес шлюза, свой ключ от него и разрешение показывать список моделей. Проверка одна: команда /status внутри Claude Code печатает строку Anthropic base URL, и в ней стоит адрес шлюза, а не адрес Anthropic

Что нужно на входе

Три вещи, и ни одна не про деньги. Первая проверяется одной строкой в окне для ввода команд («Терминал» на Mac, «PowerShell» на Windows):

node --version

Ответ вида v20.x и выше подходит. Пусто или ошибка: сначала поставь Node с сайта nodejs.org, это обычная установка через мастера. Остальные две вещи в таблице.

Что нужноКак проверить за минутуЕсли этого нет
среда Node, версия 20 или вышекоманда node --version отвечает v20 и старшепоставить Node с сайта nodejs.org обычным мастером
свободное место от 3 ГБу меня папка шлюза заняла 2.6 ГБосвободить диск заранее: на полпути установка встанет
доступ хотя бы к одной моделиподписка, ключ провайдера или бесплатный ярусвзять провайдера из бесплатного яруса: таких 154 из 352

Таблица прокручивается вбок →

Своей учётной записи шлюз не просит: он открытый, лицензия MIT, работает целиком на твоей машине.

Раздел Providers в панели шлюза: боковое меню слева, строка счётчиков сверху и сетка карточек провайдеров с переключателями
Раздел Providers из документации проекта: строка счётчиков, отдельная полка бесплатного яруса, у каждой карточки свой переключатель. На кадре версия 3.8.1, счётчики там меньше нынешних

Ставим шлюз: две команды

Первая команда скачивает и ставит шлюз. Вставь её в окно для ввода команд и нажми Enter:

npm install -g omniroute

Пойдут строки про скачивание пакетов. У меня установка началась в 13:28:39 и закончилась в 13:30:46, в конце шлюз напечатал, сколько всего пакетов подтянул:

added 1171 packages in 2m
3.8.50

Вторая команда запускает шлюз. Набери одно слово и нажми Enter:

omniroute

Через несколько секунд в окне появится рисунок из символов с названием проекта, а под ним главное: адрес панели и адрес, на который надо будет направить Claude Code.

  ✔ OmniRoute is running! (started in 7.3s)
    Dashboard:  http://localhost:20128
    API Base:   http://localhost:20128/v1

Dashboard это панель управления в браузере. API Base это вход, куда стучатся программы. Разница между ними решает половину всех проблем с подключением, к этому вернусь через два раздела.

Окно с этими строками закрывать нельзя: пока оно открыто, шлюз работает. Закроешь: шлюз остановится, и Claude Code перестанет получать ответы.

Мой прогон 21.09.2026 на macOS 25.3, среда Node v25.9.0, в отдельной папке (основной профиль я не трогал): установка шла с 13:28:39 до 13:30:46, подтянулось 1171 пакет, версия шлюза 3.8.50, на диске 2.6 ГБ. Сам шлюз поднялся за 7.3 секунды и занял порт 20128. Запрос без ключа шлюз завернул с кодом 401, то есть защита на входе работает сразу из коробки.

Панель: где взять ключ

Открой в браузере адрес http://localhost:20128. Это и есть панель, она живёт только у тебя на компьютере, наружу ничего не уходит.

При первом входе панель попросит пароль и честно пишет его прямо на экране входа: CHANGEME. Смени его сразу, шаги внизу в разделе про безопасность.

Панель шлюза, поднятого на своей машине: боковое меню с разделами и экран входа с полем пароля
Панель на своём компьютере по адресу localhost:20128: в неё заводятся ключи провайдеров и из неё берётся ключ шлюза

Панель говорит по-английски, язык переключается в правом верхнем углу, русский в списке есть. Ниже я называю английские подписи: так они выглядят сразу после установки.

Внутри нужны два пункта бокового меню.

Providers, подпись под ним Manage AI providers: сюда заводятся модели, которыми ты хочешь пользоваться. Список пустой, поэтому первая кнопка на экране так и называется Add your first provider, дальше та же кнопка живёт сверху как Add Provider. Порядок внутри такой:

  • нажми Add Provider, в списке Select a provider выбери своего: у бесплатных рядом стоит метка Free
  • в поле с подсказкой Enter your API key вставь ключ провайдера. Провайдеру, который работает без ключа, поле не нужно
  • нажми Save Provider. Карточка появится в списке со статусом Active и числом подтянутых моделей строкой вида 12 models
  • сомневаешься, что ключ рабочий: на карточке есть Test Connection. Ключ неверный, и статус переключится на Inactive, моделей у карточки не будет

Ключей пока нет: начни с бесплатных, у меня отдельно разобрано, как взять бесплатный ключ Gemini и ключи NVIDIA, обе процедуры занимают пару минут.

API Keys, подпись Manage API keys and access: вот здесь выдаётся ключ самого шлюза. Нажимаешь кнопку Create API Key, даёшь ключу любое имя, и он появляется на экране строкой, рядом кнопка Copy API Key. Копируй сразу: панель показывает ключ один раз, дальше в списке остаётся только маска, и при потере ключ не восстанавливают, а выпускают заново. Готовую пару «адрес входа плюс ключ» потом видно в пункте Endpoints, подпись Your AI connection URLs, поля там называются Base URL и API Key.

Ключ шлюза не имеет отношения к Anthropic: он нужен только для того, чтобы шлюз понимал, что запрос пришёл от тебя. Его и вставишь в настройки Claude Code следующим шагом.

Три строки в настройках Claude Code

Claude Code читает настройки из файла settings.json в папке .claude внутри твоей домашней папки. Имя папки начинается с точки, поэтому в обычном окне её не видно. Как попасть внутрь:

  • Mac: в Finder нажми Cmd+Shift+G, впиши ~/.claude и нажми Enter
  • Windows: в адресной строке Проводника впиши %USERPROFILE%\.claude и нажми Enter

Файла settings.json в папке может не оказаться, это нормально для свежей установки: создай пустой файл ровно с таким именем и вставь в него весь блок целиком. Файл уже есть и в нём что-то написано: не затирай его, а добавь ключ env внутрь существующих фигурных скобок и поставь запятую между соседними ключами. Формат строгий: одна лишняя или пропущенная запятая, и Claude Code файл не прочитает, а настройки не применятся.

Открой этот файл в любом редакторе и добавь блок env:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:20128",
    "ANTHROPIC_AUTH_TOKEN": "сюда-твой-ключ-от-шлюза",
    "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1"
  }
}

Разбор по строкам, потому что в каждой есть подвох.

СтрокаЧто делаетПодвох
ANTHROPIC_BASE_URLадрес шлюзаставится без хвоста /v1, хотя при старте шлюз показывал адрес с хвостом
ANTHROPIC_AUTH_TOKENключ шлюза, тот самый из панелирядом живёт ANTHROPIC_API_KEY, заданы обе - выигрывает первая, задавай одну
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERYразрешает спросить у шлюза список моделейбез неё в выборе по команде /model останется прежний список

Таблица прокручивается вбок →

Про хвост /v1 отдельно: Claude Code дописывает окончание сам, и если оно уже стоит, получается двойной путь и ответа не будет. Это самая частая причина, по которой шлюз «не подхватывается». Заготовку ключа в кавычках замени своим значением.

Настройки читаются один раз при запуске. Правишь файл при открытом Claude Code: закрой и открой заново, иначе он продолжит работать по-старому. И ещё одно: значение из файла настроек перебивает то же самое, выставленное командой в окне ввода, так что искать расхождение надо в файле.

Как убедиться, что запрос пошёл через шлюз

Признак один, и он на экране. Запусти Claude Code и набери:

/status

Откроется сводка, в ней найди строку Anthropic base URL. Если в ней стоит адрес твоего шлюза, запрос идёт через шлюз. Если там адрес Anthropic или строки нет вовсе, настройки не подхватились: смотри предыдущий раздел, начиная с хвоста /v1.

Второй способ, если хочется проверить сам шлюз отдельно от Claude Code. Вставь в окно ввода команд одну строку:

curl http://localhost:20128/v1/models

Шлюз без ключа отвечает отказом, и это правильный ответ, он означает, что шлюз жив и защита работает:

{"error":{"message":"Authentication required","type":"invalid_api_key","code":"invalid_api_key"}}
http=401

Тишина вместо ответа или отказ в соединении: шлюз не запущен, вернись к окну, где он работал.

Запасная модель на случай, когда лимит кончился

Ради этого шлюз и ставят. Внутри у него четыре яруса запасных целей: сначала то, что идёт по подписке, потом то, где у тебя есть ключ, потом дешёвые модели, потом бесплатные. Кончился первый ярус: запрос сам уходит на следующий.

Claude Code делит задачи на три уровня по сложности, и под каждый можно подставить свою запасную модель. Добавь в тот же блок env три строки:

"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm/glm-5.2",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "kmc/kimi-k2.6",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm/glm-4.7-flash"

Слева уровень сложности, справа имя модели у шлюза. Имена берутся из панели, там же видно, какие из них бесплатны. В примере стоят GLM на тяжёлые задачи и Kimi на обычные: обе дешёвые и обе понимают длинные разговоры. Годится и DeepSeek, если ты уже с ним работал.

Есть и четвёртая строка, она нужна не всем:

"OMNIROUTE_ROTATE_ON_400": "true"

Она разрешает шлюзу перепрыгивать на следующую цель не только при отказе по лимиту, но и когда модель отвечает «не понимаю такой запрос». Полезно, когда в списке запасных стоят модели разных семейств.

Одна честная оговорка. У меня в прогоне ни одного ключа провайдера заведено не было, и шлюз перебрал семь пар «провайдер-модель» из пула в тринадцать штук: первая попросила ключ, вторая ответила, что бесплатный тариф работает только внутри её собственного приложения, остальные уткнулись в лимит. Переезд между целями работает как задумано, но если ключей нет вообще, ехать некуда. Минимум один живой ключ или один провайдер без ключа завести придётся.

Про то, сколько именно дают по подписке и когда лимит кончается раньше времени, у меня есть отдельный разбор сентябрьских лимитов. А чтобы понимать, какую модель ставить в какой ярус, посмотри разницу между моделями Claude: запасная должна быть сравнима по окну, иначе длинный разговор в неё просто не влезет.

Раздел Combos в панели: список связок моделей, у каждой метка режима перебора и строка целей, справа кнопка создания новой
Раздел Combos из документации проекта: одна связка собирает несколько целей, метка справа от имени задаёт порядок перебора. На кадре версия 0.9.0, раздел с тех пор на месте

Что ломается: шесть экранов и их тексты

Собрал по документации обоих проектов и по своему прогону.

Что видно на экранеЧто это значитЧто делать
предупреждение при старте про два источника входа, заканчивается словами auth may not work as expectedзадано сразу две строки с ключомубрать лишнюю, оставить одну
401 с упоминанием непризнанного токенаключ не тот, отозван или вставлен не в ту строкусверить ключ с панелью шлюза
Connection refusedшлюз не запущенвернуться в окно, где он работал, и запустить заново
API returned an empty or malformed response (HTTP 200)адрес ведёт не на вход шлюза, а на страницу панелипроверить адрес и хвост /v1
400 со словами Extra inputs are not permittedзапасная модель не понимает опытные добавки Claude Codeдобавить строку "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
prompt token count of N exceeds the limit of Mу запасной модели окно меньше, чем у Claudeсжать разговор командой /compact

Таблица прокручивается вбок →

Отдельно про 429 после переезда: это выбранный дневной бесплатный лимит уже у запасного провайдера. Лечится либо ожиданием суток, либо вторым бесплатным провайдером в списке. Если хочется другого пути к бесплатным моделям, у меня разобран бесплатный доступ через OpenRouter и подборка бесплатных замен.

Ключ: что с ним нельзя делать

Четыре правила, каждое стоит денег, если его нарушить.

Не клади ключ в файл настроек внутри проекта. У Claude Code есть второй файл настроек, .claude/settings.json в папке самого проекта, и он уезжает на GitHub вместе с кодом. Ключ из домашней папки остаётся у тебя, ключ из проекта увидят все, кто скачает твой проект.

Не оставляй шлюз открытым наружу. При старте он честно предупреждает: слушает все сетевые адреса и не требует ключа по умолчанию, то есть до входа может дотянуться любое устройство в той же сети, а пароль панели по умолчанию написан прямо на её экране входа. Счёт при этом прилетит по твоим ключам провайдеров. Лечится двумя настройками шлюза: REQUIRE_API_KEY=true или OMNIROUTE_SERVER_HOST=127.0.0.1, вторая запирает шлюз на твоём компьютере.

Смени пароль панели, это минута. В боковом меню открой Settings, подпись Manage your preferences, и найди раздел Security. Там три поля подряд: Current Password (сюда CHANGEME, если его ещё не меняли), New Password и Confirm New Password. Снизу кнопка Update Password. Получилось: сверху выскочит зелёное Password updated successfully. Поля разошлись: панель ответит Passwords do not match, и пароль останется прежним.

Пароль лежит в базе шлюза не текстом, а свёрткой bcrypt, так что восстановить его нельзя: забудешь - задавать заново через переменную INITIAL_PASSWORD при старте. Ключи провайдеров лежат в одном месте, и пароль панели это единственная дверь к ним. Про то, как вообще проверять такие инструменты на дыры, у меня есть разбор безопасности агентов.

И ещё одно, про что стоит знать заранее. В официальной документации Claude Code написано прямым текстом: Anthropic не одобряет, не поддерживает и не проверяет сторонние шлюзы и не поддерживает маршрутизацию Claude Code на модели других поставщиков через шлюз. Это не запрет, шлюз работает. Но пока ключ шлюза активен, подписка claude.ai не используется, а две возможности выключаются: голосовой ввод и удалённое управление сессией с телефона. Момент переключения виден по той же команде /status: пока в строке Anthropic base URL стоит адрес шлюза, Claude Code работает по ключу шлюза, а не по подписке. Уберёшь три строки и перезапустишь: подписка снова в деле, это раздел про откат ниже.

Шлюз или экономия: это разные ходы

Шлюз не уменьшает твой расход, он не даёт работе встать. Растянуть лимит той же модели без всяких шлюзов тоже можно, и это отдельная дисциплина: короткие сессии, сжатие разговора, выбор модели под уровень задачи. Разобрал это отдельно, чтобы не мешать два хода в одной статье: https://theivansergeev.com/guide-ekonomit-limit-neyroseti/

Как снять, если не подошёл

Убери три строки из блока env в файле настроек и перезапусти Claude Code: он вернётся на обычный вход, подписка снова заработает. Сам шлюз при этом можно оставить стоять, есть он не просит, пока не запущен.

Проверка, что откат прошёл, та же самая: /status и строка Anthropic base URL, в ней должен снова стоять адрес Anthropic.

Источники

Все страницы открыты живым запросом 21 сентября 2026 года; версия, вес, время старта и тексты ошибок сняты с собственного прогона на своей машине, а не переписаны из чужих обзоров

Памятка: что проверить, если шлюз не подхватился

Шесть точек, по которым решаются почти все случаи «настроил, а работает по-старому»

Сохрани себе

  • в адресе шлюза нет хвоста /v1: Claude Code дописывает окончание сам
  • задана ровно одна строка с ключом, а не две сразу
  • Claude Code перезапущен после правки файла настроек
  • окно, в котором работает шлюз, всё ещё открыто
  • команда /status печатает адрес шлюза в строке Anthropic base URL
  • в панели заведён хотя бы один живой провайдер, иначе переезжать некуда

Про следующий шаг

Запасной путь готов, дорога всё равно твоя

Шлюз закрывает одну конкретную боль: работа не встаёт посреди задачи. Дальше упирается в другое, в то, какую вещь ты собираешь и доводишь ли её до людей

Сам я после прогона оставил шлюз запертым на своём компьютере и с одним бесплатным провайдером в запасе: этого хватает, чтобы длинная сборка не останавливалась. Такие развилки решаются не чтением инструкций, а работой над своим проектом рядом с тем, кто уже собрал

На Лагере мы берём твою задачу, режем её на шаги и за три дня доводим до работающего результата. Приходишь со своей задачей, уходишь с собранной вещью

Забрать путёвку в ИИ-Лагерь

Заявка в закрытый канал, одобряю сразу. Бот напишет первым и отдаст три дня Лагеря. Бесплатно

Частые вопросы

OmniRoute платный?

Сам шлюз нет: код открытый, лицензия MIT, ставится на твою машину. Платишь ты за модели, к которым он ходит, и то лишь за платные: часть провайдеров в его реестре бесплатна, а тринадцать работают вообще без ключа.

Правда ли, что там больше двух сотен провайдеров?

На 21 сентября 2026 года в реестре 352 провайдера, это подтверждается и страницей проекта, и его собственным описанием. Обещание про «больше двух сотен» занижено. С бесплатными сложнее: меткой «есть бесплатный доступ» отмечены 154 провайдера, а витрина проекта отдельно обещает больше девяноста бесплатных тарифов и 56 постоянно бесплатных.

Обязательно держать окно с запущенным шлюзом открытым?

Да, если запускать его командой в окне. Снимается автозапуском: в документации проекта описан запуск в контейнере Docker с ключом --restart unless-stopped, тогда шлюз поднимается сам и окно ему не нужно.

Можно ли поставить шлюз не на свой компьютер, а куда-то в сеть?

Можно, он самохостится. Тогда адрес в настройках будет не localhost, а адрес твоего сервера, и обязательной становится настройка REQUIRE_API_KEY=true: иначе вход в шлюз открыт всем, кто знает адрес.

Бесплатные модели заменяют Claude?

Дело даже не в силе модели, а в том, сколько бесплатных целей доезжает. В моём прогоне без единого ключа провайдера шлюз перебрал семь пар «провайдер-модель» из тринадцати: одна попросила ключ, вторая ответила, что бесплатный тариф работает только внутри её собственного приложения, остальные уткнулись в лимит. То есть бесплатный ярус это страховка на случай «работа встала», а не замена подписки, и держать в запасе стоит минимум две-три цели.

Заметит ли Anthropic, что я хожу через шлюз?

Вопрос не в том, заметит ли. В документации Claude Code написано, что сторонние шлюзы не одобряются и не поддерживаются, а пока активен ключ шлюза, подписка claude.ai не используется и часть возможностей отключается. Никакой блокировки за это не предусмотрено, но поддержки от Anthropic по такой связке тоже не будет.

Если дочитал до конца

Дальше я пишу в своём канале

Я работаю один, без команды и подрядчиков: всё собираю Claude, Claude Code и агентами. В канале показываю внутрянку: что реально держу подключённым, что сэкономило день, а что снял через неделю. Разборов там заметно больше, чем доезжает до сайта

Заходи в мой канал

Это заявка на вход в мой закрытый канал, одобряю сразу. Бесплатно