</>
CLI-агентOpen Source

OpenCode + TokenTool

Получите отдельный ключ, проверьте dry-run, сохраните credential через /connect и примените конфиг с актуальной моделью без секретов в shell history.

Параметры подключения

Base URL

https://api.tokentool.ru/api/v1

API Key

не хранить в коде— env или хранилище credential приложения
1

Получить отдельный API-ключ TokenTool

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

Не вставляй секрет в конфиг, Git или командную строку. Он понадобится ещё дважды: для штатного /connect и для безопасной передачи Rescue через stdin.

2

Установить OpenCode и выполнить dry-run

Если OpenCode уже установлен, пропусти установку и проверь версию:

bash
npm install -g opencode-ai
opencode --version

Для уже настроенного bun можно использовать:

bash
bun install -g opencode-ai
opencode --version

Теперь запусти dry-run. Он найдёт opencode.json или opencode.jsonc, покажет безопасный diff, не изменит файл и не откроет лишнюю вкладку авторизации:

bash
npx --yes --package=https://tokentool.ru/downloads/tokentool-0.1.2.tgz tokentool rescue opencode --no-open

Rescue 0.1.2 не читает и не меняет auth.json, не принимает ключ аргументом командной строки и не записывает конфиг без --apply.

Скачать TokenTool Rescue 0.1.2SHA-256

SHA-256: 970e1348005959d2dc93697767715d93d832cbb6529efdac0c262b1337d6d2b6

3

Сохранить ключ через /connect

Запусти OpenCode и используй его штатное хранилище credential:

text
/connect
Other
provider id: tokentool

Вставь ключ только в запрос OpenCode. Долгосрочно credential хранит OpenCode; Rescue этот файл не читает.

4

Выбрать model ID из живого каталога

Не копируй model ID из старых примеров. Открой живой каталог моделей или GET /models, выбери доступную текстовую модель и скопируй её ID. На следующем шаге замени ID_ИЗ_КАТАЛОГА этим значением.

5

Безопасно применить конфигурацию

Команды ниже запрашивают ключ скрытым вводом, передают его Rescue только через stdin и очищают временную переменную после выполнения. Сначала подставь выбранный model ID.

Windows PowerShell 7

powershell 7
$TokenToolKey = Read-Host 'TokenTool API key' -MaskInput
try {
  $TokenToolKey | npx --yes --package=https://tokentool.ru/downloads/tokentool-0.1.2.tgz tokentool rescue opencode --key-stdin --model 'ID_ИЗ_КАТАЛОГА' --apply
} finally {
  Remove-Variable TokenToolKey -ErrorAction SilentlyContinue
}

macOS / Linux — bash

bash
tokentool_apply() {
  local TOKEN_TOOL_KEY status
  IFS= read -r -s -p 'TokenTool API key: ' TOKEN_TOOL_KEY
  printf '\n'
  printf '%s\n' "$TOKEN_TOOL_KEY" | npx --yes --package=https://tokentool.ru/downloads/tokentool-0.1.2.tgz tokentool rescue opencode --key-stdin --model "ID_ИЗ_КАТАЛОГА" --apply
  status=$?
  unset TOKEN_TOOL_KEY
  return "$status"
}
tokentool_apply
unset -f tokentool_apply

Если diff действительно нужен, --apply до любой записи выполнит ровно один минимальный платный запрос. Только ответ HTTP 2xx с сообщением разрешает создать timestamp backup и атомарно обновить config.

При 401, 403, 5xx, timeout или пустом 2xx CLI завершится ошибкой: config и backup останутся нетронутыми. Если конфиг уже актуален, обычный --apply сделает только GET каталога: платного POST и backup не будет. Если явно добавить --smoke, изменяемый config переиспользует успешный pre-write smoke, а no-op выполнит ровно один явный smoke. В обоих случаях второго платного POST нет.

6

Запустить OpenCode и проверить модель

Успешный apply уже подтвердил реальный 2xx-ответ модели. Теперь перейди в папку проекта и запусти агент:

bash
cd ~/my-project
opencode

В OpenCode открой /models, выбери provider tokentool и проверенную модель, затем отправь короткий запрос.

Если не заработало:

  • ✗Provider not found — снова запусти dry-run и проверь diff.
  • ✗Unauthorized — повтори /connect для provider id tokentool.
  • ✗Model not found — выбери новый ID из текущего /models и повтори apply.

Готово к работе?

Зарегистрируйтесь на TokenTool, получите API-ключ и подключите OpenCode + TokenTool за пару минут.