Антон Ларичев

OpenCode: пользовательские провайдеры недоступны — что делать
Ошибка «Пользовательские провайдеры недоступны на этом сервере» (в английском интерфейсе — «Custom providers are unavailable on this server») появляется в OpenCode Desktop и веб-интерфейсе OpenCode, когда вы сохраняете своего провайдера через «Настройки → Провайдеры → Пользовательский провайдер». Это ошибка самого OpenCode, а не вашего ключа, сервера или региона: в версиях 2.0.x форма сохранения не подключена к серверу и выдаёт эту ошибку при любых введённых данных. VPN и смена ключа не помогут. Решение — описать провайдера в файле opencode.json: так он работает и в Desktop, и в терминальной версии. Ниже — что именно сломано, готовые конфиги для Claude, GPT и Qwen и что делать, если модели не появились.
Почему OpenCode пишет, что провайдеры недоступны
В трекере OpenCode на GitHub есть серия обращений об этой ошибке на версиях от 2.0.12 до 2.0.25, на Windows, macOS и Linux, в приложении и в веб-интерфейсе. Авторы, разобравшие код собранного приложения, описывают одно и то же: обработчик сохранения формы — заглушка, которая сразу выбрасывает ошибку с этим текстом. Встроенный в приложение сервер при этом вообще не умеет принимать нового провайдера через интерфейс. Основное обращение открыто с 22 сентября 2026 года, 12 октября о той же ошибке сообщили уже на версии 2.0.25, а исправленная версия в обсуждениях не упоминается.
Отсюда три практических вывода:
- «Этот сервер» — не ваш провайдер. Речь о локальном сервере OpenCode, который приложение запускает в фоне. Адрес, ключ и модели, введённые в форму, на ошибку не влияют.
- Это не блокировка региона. Ошибка одинаковая в любой стране, VPN её не убирает.
- Ждать исправления не нужно. Провайдер, описанный в конфиге, работает уже сейчас — так же предлагает и бот проекта в ответах на эти обращения.
В терминальной версии похожая история: команда /connect позволяет выбрать пункт Other и сохранить ключ, но сам провайдер всё равно нужно описать в конфиге — об этом прямо пишет документация OpenCode.
Решение: провайдер в opencode.json
OpenCode читает настройки из двух мест:
- глобальный файл
~/.config/opencode/opencode.json— для всех проектов, на Windows%USERPROFILE%.config\opencode\opencode.json; opencode.jsonв корне проекта — только для этого проекта.
Для Desktop удобнее глобальный файл: приложение открывается на разных папках, и провайдер должен быть доступен везде.
Шаг 1. Ключ в переменной окружения
Ключ не вписывается в конфиг открытым текстом — OpenCode подставит его из переменной окружения. На macOS и Linux добавьте строку в ~/.zshrc или ~/.bashrc:
export PURPLESCHOOL_API_KEY="ваш ключ"
На Windows — в PowerShell:
[Environment]::SetEnvironmentVariable("PURPLESCHOOL_API_KEY", "ваш ключ", "User")
Ключ с оплатой в рублях выдаётся на странице AI для кода от PurpleSchool. Один ключ работает с моделями Claude, GPT и Qwen.
Шаг 2. Провайдеры в конфиге
Ниже — конфиг сразу с двумя провайдерами: для моделей Claude по протоколу Anthropic и для GPT и Qwen по протоколу OpenAI. Если файл уже есть, добавьте блоки внутрь существующего provider, не удаляя остальные настройки:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"purpleschool-anthropic": {
"npm": "@ai-sdk/anthropic",
"name": "PurpleSchool Anthropic Proxy",
"options": {
"baseURL": "https://app.purpleschool.ru/api-v2/public/ai-proxy/anthropic/v1",
"apiKey": "{env:PURPLESCHOOL_API_KEY}"
},
"models": {
"claude-sonnet-5-5": { "name": "Claude Sonnet 5.5" },
"claude-opus-5-5": { "name": "Claude Opus 5.5" }
}
},
"purpleschool": {
"npm": "@ai-sdk/openai",
"name": "PurpleSchool OpenAI Proxy",
"options": {
"baseURL": "https://app.purpleschool.ru/api-v2/public/ai-proxy/openai/v1",
"apiKey": "{env:PURPLESCHOOL_API_KEY}"
},
"models": {
"gpt-6-sol": { "name": "GPT 6 Sol" },
"qwen3.8-max": { "name": "Qwen 3.8 Max" }
}
}
}
}
Что здесь важно:
npm— пакет, через который OpenCode говорит с API:@ai-sdk/anthropicдля Claude,@ai-sdk/openaiдля GPT и Qwen. Второй работает по протоколу Responses API, который принимает прокси PurpleSchool.options.baseURL— адрес провайдера, обязательно с/v1в конце.options.apiKey— запись{env:PURPLESCHOOL_API_KEY}означает «взять значение из переменной окружения».models— модели, которые появятся в списке. Ключ объекта — ID модели,name— подпись в интерфейсе. Полный список моделей — в инструкции на странице AI для кода.
Нужен только один провайдер — оставьте один блок. Если подключаете своего провайдера, который принимает формат Chat Completions (/v1/chat/completions), документация OpenCode предлагает для него пакет @ai-sdk/openai-compatible.
Шаг 3. Перезапустите OpenCode и выберите модель
Полностью закройте Desktop и откройте снова: настройки провайдеров читает фоновый сервер, и он подхватывает их при старте. В терминальной версии просто запустите opencode заново.
Модель выбирается в списке моделей — в Desktop через выбор модели в окне чата, в терминале командой:
/models
В списке появятся провайдеры «PurpleSchool Anthropic Proxy» и «PurpleSchool OpenAI Proxy» — это значения из поля name.
Если модели не появились
Конфиг не тот или с ошибкой. Проверьте путь к файлу и валидность JSON: одна лишняя запятая ломает весь файл, и OpenCode его не применит. Если конфиг лежит в нестандартном месте, путь можно задать переменной окружения OPENCODE_CONFIG.
Desktop не видит переменную с ключом. Приложение, запущенное из меню или Dock, может не получить переменные из ~/.zshrc. Проверка: откройте терминал, убедитесь, что echo $PURPLESCHOOL_API_KEY печатает ключ, и запустите приложение из этого терминала. На Windows после сохранения переменной приложение нужно закрыть и открыть заново.
Настроили в WSL, а запускаете Desktop в Windows. Это две разные системы с разными домашними папками. Конфиг и переменная нужны там, где запущено приложение.
Модели своего провайдера не показываются в окне выбора Desktop. В обращениях к OpenCode встречается и такое. Если в окне не получается, а работать нужно сейчас, тот же конфиг и ключ работают в терминальной версии — она ставится рядом командой npm install -g opencode-ai и Desktop не мешает.
Ошибка 401 или 404 при первом запросе. 401 — ключ не принят: проверьте переменную и сам ключ в кабинете. 404 — неправильный baseURL: проверьте /v1 в конце и что адрес соответствует пакету — Anthropic-адрес для @ai-sdk/anthropic, OpenAI-адрес для @ai-sdk/openai.
Частые вопросы
Исправят ли форму в новых версиях? В основной ветке разработки OpenCode у формы есть рабочая реализация, но она ограничена серверами старого поколения. Поэтому даже после обновления пункт может не заработать или пропасть из настроек. Конфиг — надёжный путь независимо от версии.
Поможет ли переустановка или откат версии? Переустановка — нет: обращения есть на всех версиях от 2.0.12 до 2.0.25. В обсуждении один пользователь пишет, что откатился на более старую версию, но описать провайдера в конфиге проще и надёжнее.
Где подробно про установку OpenCode Desktop? В статье OpenCode Desktop: установка и подключение Claude. Про терминальную версию — OpenCode в России: установка и настройка без VPN.
Что выгоднее: свой ключ или OpenCode Zen? Сравнение с расчётом — в статье OpenCode Zen или свой API-ключ.
Итог
Ошибка «Пользовательские провайдеры недоступны на этом сервере» — баг формы в OpenCode 2.0.x, а не проблема ключа, провайдера или региона. Форму обходим: провайдер описывается в ~/.config/opencode/opencode.json, ключ лежит в переменной окружения, OpenCode перезапускается — и модели появляются в списке. Ключ к Claude, GPT и Qwen с оплатой в рублях — на странице AI для кода от PurpleSchool.






Комментарии
0