Агенты в терминале
Почти все консольные агенты читают одни и те же переменные окружения. Если инструмента нет в списке ниже — попробуйте эту пару: она работает чаще, чем документирована.
Общая пара#
export OPENAI_BASE_URL=https://nirastudio.org/v1 export OPENAI_API_KEY=$NIRA_API_KEY
Для клиентов протокола Anthropic — та же идея, но без /v1:
export ANTHROPIC_BASE_URL=https://nirastudio.org export ANTHROPIC_AUTH_TOKEN=$NIRA_API_KEY
OPENAI_API_BASE вместо OPENAI_BASE_URL. Задать можно обе — лишняя переменная никому не мешает.Aider#
export OPENAI_API_BASE=https://nirastudio.org/v1 export OPENAI_API_KEY=$NIRA_API_KEY aider --model openai/anthropic/claude-sonnet-4.6
Префикс openai/ — это указание Aider, каким протоколом идти; дальше следует идентификатор модели целиком. Выглядит громоздко, но именно так он различает провайдера и модель.
# .aider.conf.yml в корне проекта model: openai/anthropic/claude-sonnet-4.6 weak-model: openai/anthropic/claude-haiku-4.5
weak-model Aider использует для сообщений коммитов и мелких сводок — старшая модель там не нужна.
Остальные#
Codex CLI
export OPENAI_BASE_URL=https://nirastudio.org/v1 export OPENAI_API_KEY=$NIRA_API_KEY
Модель задаётся флагом --model или в ~/.codex/config.toml. Имя — из каталога.
OpenCode, Goose и прочие
У них в настройках есть выбор совместимого с OpenAI провайдера: указываете https://nirastudio.org/v1, ключ и имя модели. Ключевой признак, что инструмент подойдёт, — наличие поля для базового адреса.
Свои скрипты#
Для одноразовой задачи библиотека не нужна — хватит curl:
#!/usr/bin/env bash
# Объясняет ошибку из вывода команды
set -euo pipefail
OUT=$("$@" 2>&1) || true
curl -sN https://nirastudio.org/v1/chat/completions \
-H "Authorization: Bearer $NIRA_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg out "$OUT" '{
model: "anthropic/claude-haiku-4.5",
messages: [
{ role: "system", content: "Коротко объясни ошибку и предложи исправление." },
{ role: "user", content: $out }
]
}')" | jq -r '.choices[0].message.content'jq -n --arg здесь не для красоты: вывод команды содержит кавычки и переводы строк, и вручную собранный JSON на них ломается.
В сборках и на серверах#
- Отдельный ключ на каждое окружение: отзыв одного не остановит остальные.
- Дневной лимит у ключа — единственная защита от цикла, который никто не смотрит.
- Ключ можно ограничить по IP, если сборка ходит с постоянного адреса.
- В журналы CI ключ попадать не должен:
echo $OPENAI_API_KEYв отладке — самый частый способ его потерять.
Проверить доступ из окружения сборки можно самым дешёвым запросом: curl https://nirastudio.org/v1/account — см. аккаунт и баланс.