# Свои провайдеры и локальные модели

> Свой провайдер в Buff Code: OpenRouter, Anthropic, OpenAI, LiteLLM, Ollama, LM Studio. Что уходит в Buff, а что остаётся на машине.

Кроме [моделей организации](/docs/buff-code/models) Buff Code работает и с вашими собственными
провайдерами: подпиской или ключом API у облачного провайдера, корпоративным прокси вроде
LiteLLM или моделью, запущенной на своей машине. Вход в Buff для этого не нужен. Если войти,
модели организации видны рядом со своими, и модель выбирается для каждой сессии.

## Что уходит в Buff, а что нет

Запрос к своей модели идёт с вашей машины прямо к провайдеру, мимо
[шлюза коннектора](/docs/buff-code/gateway). Заголовков Buff (сессия, клиент, организация,
проект) провайдер не получает.

Ходы на своей модели в Buff не попадают. Журнала нет, токенов и списаний тоже. Учёт идёт
**строго по ходам**:

- **Сессия целиком на своей модели** в [сессиях разработки](/docs/buff-code/sessions/view)
  не появляется.
- **Смешанная сессия** (часть ходов на модели Buff, часть на своей) видна, но только ходами
  Buff. Токены и списания в ней тоже считаются только по ходам Buff.
- Проекты, настройки и отметки git уходят как обычно, если вы вошли в Buff.

Инструменты Buff — [база знаний](/docs/buff-code/knowledge),
[репозитории проекта](/docs/buff-code/repositories) и
[инструменты подключений](/docs/buff-code/tools) — работают и на своей модели, если вы вошли в
Buff и выбрали контекст.

## Провайдер из каталога

В каталоге — известные провайдеры: Anthropic, OpenAI, Google, OpenRouter, GitHub Copilot,
OpenCode Zen и другие. Ключ или вход по подписке хранится только на вашей машине. OpenCode Zen
работает с ключом или входом в OpenCode Console: бесплатный уровень OpenCode доступен только в
самом OpenCode, поэтому в Buff Code его моделей нет.

- **В окне**: «Настройки» → «Провайдеры» → «Подключить» у нужного провайдера или «Показать
  все». Из окна входа в Buff туда же ведёт «Подключить другой провайдер».
- **В терминальном интерфейсе**: команда `/connect`.
- **В консоли**:

```bash
buff auth login            # выбрать провайдера из списка
buff auth login openrouter # сразу к нужному
buff auth list             # что подключено
buff auth logout           # отключить
```

Модели подключённого провайдера появляются в выборе модели (`/models`, `buff models`) под его
именем, например `openrouter/qwen/qwen3-coder`.

## Свой адрес: LiteLLM, Ollama, LM Studio, vLLM

Сервер, который говорит на языке OpenAI API, подключается блоком `provider` в конфигурации:

- у себя, для всех проектов: `~/.config/buff/buffcode.jsonc`;
- в проекте, для всех, кто его откроет: `buffcode.json` в корне. Ключ туда не кладите, файл
  уходит в репозиторий.

Прежние файлы `opencode.json` / `opencode.jsonc` тоже читаются.

### LiteLLM или другой прокси

```jsonc
{
  "provider": {
    "litellm": {
      "name": "LiteLLM",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://litellm.example.com/v1",
        "apiKey": "{env:LITELLM_API_KEY}"
      },
      "models": {
        "gpt-4.1": { "name": "GPT-4.1 через LiteLLM" },
        "claude-sonnet": { "name": "Claude Sonnet через LiteLLM" }
      }
    }
  }
}
```

`{env:LITELLM_API_KEY}` подставит значение переменной окружения, а `{file:~/.secrets/litellm}`
прочитает его из файла. Ключ так не попадает в сам конфиг.

### Ollama

```jsonc
{
  "provider": {
    "ollama": {
      "name": "Ollama",
      "npm": "@ai-sdk/openai-compatible",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "qwen2.5-coder:14b": { "name": "Qwen 2.5 Coder 14B" } }
    }
  }
}
```

Имя модели — то, под которым она загружена в Ollama (`ollama list`).

### LM Studio и vLLM

То же самое, другой адрес. LM Studio по умолчанию слушает `http://127.0.0.1:1234/v1`, vLLM —
`http://127.0.0.1:8000/v1`. Модели называются так, как их отдаёт сервер в `/v1/models`.

Для агентной работы модель должна уметь вызывать инструменты (tool calling). Без этого она
отвечает текстом, но не правит файлы и не запускает команды.

## Какая модель выбирается

- Модель, названная в `model` конфигурации (например, `"model": "ollama/qwen2.5-coder:14b"`),
  выбирается по умолчанию.
- Иначе — последняя модель, которую вы выбирали.
- Если вы ещё ничего не выбирали, берётся модель Buff, а без входа в Buff — первая из
  подключённых.

Для разовой команды модель задаётся флагом:

```bash
buff run --model ollama/qwen2.5-coder:14b "объясни этот модуль"
```

Без входа в Buff и без подключённого провайдера Buff Code скажет, что делать: войти в Buff
или подключить свой провайдер.
