Pi
Pi читает провайдеров из одного глобального JSON-файла, а не из переменных окружения, поэтому
opencodex не запускает его сам. Вместо этого ocx export сериализует блок провайдера
opencodex — base URL, список моделей и env-ссылку, которую интерполирует Pi, — а вы сливаете
его в свою конфигурацию.
Быстрый старт
Заголовок раздела «Быстрый старт»Сначала запустите прокси, затем выведите конфиг:
ocx startocx export --client piСначала выводится JSON, затем путь назначения, предупреждение о merge, строка export для
переменной окружения и число моделей, для которых есть авторитетные контекстные лимиты.
{ "providers": { "opencodex": { "baseUrl": "http://127.0.0.1:10100/v1", "api": "openai-completions", "apiKey": "$OPENCODEX_API_KEY", "models": [ { "id": "anthropic/claude-opus-5", "name": "Claude Opus 5 (anthropic)", "input": ["text"], "contextWindow": 200000, "maxTokens": 32000 } ] } }}Id моделей — это канонические селекторы прокси, поэтому маршрутизируемые модели появляются как
provider/model (anthropic/claude-opus-5), а нативные slug OpenAI остаются без префикса
(gpt-5.6-sol). Суффикс в name — (anthropic), (native), (routed) — как раз и позволяет
различать в picker’е Pi две модели с одинаковым именем, пришедшие с разных upstream.
Куда это идёт
Заголовок раздела «Куда это идёт»Глобальная конфигурация моделей Pi находится здесь:
~/.pi/agent/models.jsonЭкспортируемый блок — это статический снимок, а не живое представление. После добавления
провайдера или изменения видимости моделей заново выполняйте ocx export, а новый блок вливайте
поверх старого.
Admission key
Заголовок раздела «Admission key»Здесь легко перепутать два разных ключа, и в этом файле появляется только первый:
| Ключ | Что это | Где хранится |
|---|---|---|
| Ключ допуска прокси | собственная учётная запись opencodex, генерируемая на вкладке API в дашборде | указывается в apiKey как $OPENCODEX_API_KEY; само значение остаётся в окружении |
| Ключ провайдера | ваш ключ Anthropic / OpenAI / OpenRouter | хранится в конфигурации самого opencodex, см. Провайдеры |
Экспортируемая конфигурация несёт только ссылку, а не секрет. Pi интерполирует голый $NAME,
поэтому переменная должна выглядеть так:
export OPENCODEX_API_KEY=<your key>Это имя переменной относится только к Pi. opencode использует другую переменную
(OPENCODEX_OPENCODE_API_KEY в форме {env:…}) — см. руководство по opencode.
Прокси на loopback вообще не требует ключа. По умолчанию opencodex привязывается к
127.0.0.1 и ничего там не аутентифицирует, поэтому ссылка $OPENCODEX_API_KEY инертна и
переменную можно не задавать. Она нужна только когда hostname выходит за пределы loopback — а
именно в этом случае прокси и отказывается запускаться без токена; см.
Удалённый доступ.
Метаданные моделей
Заголовок раздела «Метаданные моделей»contextWindow и maxTokens выводятся только тогда, когда каталог сообщает авторитетное
контекстное окно. Если его нет, оба поля для этой модели опускаются, и Pi использует собственные
значения по умолчанию; ocx export печатает, сколько строк попали в эту категорию.
maxTokens — это удовлетворяющий схеме бюджет 32000, ограниченный сверху контекстным окном,
чтобы у модели с маленьким контекстом никогда не было больше output, чем сам context. Это не
утверждение о реальном максимуме какой-либо модели.
Два поля намеренно отсутствуют. cost требует всех четырёх ценовых полей, а у opencodex нет
данных о ценах для маршрутизируемых моделей — вывести нули означало бы заявить, что каждая модель
бесплатна. reasoning в Pi — булево поле, тогда как каталог несёт целую лестницу effort, и
отображать одно на другое пришлось бы догадкой.
Статус схемы
Заголовок раздела «Статус схемы»Требования
Заголовок раздела «Требования»Нужны запущенный прокси opencodex (ocx start) и установленный Pi. ocx export читает живой
каталог через management API прокси, поэтому конфиг никогда не будет сгенерирован с пустым
списком моделей.

