# Шлюз разработчика

> Для администратора: как открыть команде вход в Buff Code через коннектор компании — конфигурация, сертификат, кого пускает шлюз и что о нём видно.

Buff Code разработчика ходит не к нам напрямую, а в **коннектор вашей компании**. Для этого
на коннекторе включается **шлюз разработчика** — адрес в вашей сети, куда приходят вход,
запросы к моделям и вызовы инструментов. Через тот же коннектор платформа уже работает с
вашими репозиториями и системами; шлюз — ещё один его режим, а не отдельная программа.

Нужен [коннектор](/docs/connector/install) **v0.17.0** или новее (минимальные версии для
отдельных возможностей — на [обзорной странице](/docs/buff-code#что-нужно)).

## Включить

В [конфигурации коннектора](/docs/connector/yaml) добавьте блок:

```yaml
developer_gateway:
  listen: 0.0.0.0:8767                          # где слушать
  host: https://connector.company.local:8767    # как разработчики до него достучатся
  tls_cert: /etc/connector/gw.crt               # сертификат вашей компании
  tls_key: /etc/connector/gw.key
```

и перезапустите коннектор. В журнале появится строка
`developer gateway: listening on 0.0.0.0:8767 (https)`, а в кабинете, в карточке этого
коннектора, — строка **«Вход для Buff Code»** с адресом и кнопкой копирования.

| Ключ | Что значит |
| --- | --- |
| `listen` | адрес и порт, на которых коннектор слушает шлюз |
| `host` | адрес, который вводят разработчики; если не задан, коннектор покажет `listen` как есть |
| `tls_cert`, `tls_key` | сертификат и ключ для HTTPS; без них шлюз работает по HTTP |

## Сертификат

- **Сертификат — ваш.** Шлюзу нужен сертификат, которому доверяют машины разработчиков:
  выпущенный вашим внутренним центром сертификации или публичный. Мы сертификатов не
  выпускаем и в системное хранилище машин разработчиков ничего не добавляем.
- **Без сертификата** шлюз работает по HTTP. При каждом запуске коннектор пишет в журнал
  предупреждение, а кабинет показывает рядом с адресом: «Шлюз работает без TLS — токены
  разработчиков идут по сети открытым текстом». Так можно только для проверки на одной машине.

## Кого пускает шлюз

Только участников организации, к которой привязан коннектор, вошедших из Buff Code.
Коннектор проверяет каждого через Buff при первом запросе и повторяет проверку раз в минуту,
поэтому устройство, [отозванное в кабинете](/docs/buff-code/sign-in#устройства), теряет доступ к
инструментам не позже чем через минуту, а к моделям — сразу.

Если разработчик вошёл в другую организацию, шлюз откажет с сообщением «этот коннектор
работает для организации X, а вход выполнен в другую».

## Что проходит через шлюз

| Что | Куда идёт дальше |
| --- | --- |
| Вход по коду и обновление токена | в Buff |
| Список организаций и проектов разработчика | в Buff |
| Запросы к модели | в Buff, к модели организации; коннектор их не читает и не хранит |
| Вызовы инструментов подключений | к подключениям этого коннектора, от имени разработчика |
| Чтение базы знаний и репозиториев проекта | в Buff |

К модели ходит Buff, коннектор только передаёт ему запрос: на тарифах OpenRouter — к стороннему
провайдеру с ключом Buff, на выделенных мощностях и в индивидуальном сетапе — к модели на
выделенной машине, и к сторонним провайдерам ничего не уходит. Ключи к моделям — у Buff. Токены трекеров и остальные секреты подключений остаются на коннекторе. Buff Code не
получает ни того, ни другого.

## Что видно администратору

- **В кабинете**, в карточке коннектора: адрес шлюза и предупреждение, если он без TLS.
- **На [локальной странице коннектора](/docs/connector/web-setup)** — раздел **«Buff Code»**:
  кто из разработчиков вызывал инструменты, сколько раз, сколько с ошибкой и когда в
  последний раз. Пока никто не вызывал, там так и написано.
- **В журнале вызовов коннектора** — каждый вызов инструмента с пометкой, что его сделал
  разработчик, и его именем.

## Массовая раскатка адреса

Адрес `host` можно раздать разработчикам заранее переменной `BUFF_CONNECTOR_URL` — тогда
форма входа его не спросит (см. [Установка](/docs/buff-code/install#массовая-раскатка)).
