Загрузка...

Настройка Factory Droid CLI через RouterAI (BYOK / Custom Models)

Factory Droid

Droid — терминальный coding-агент от Factory (документация). Он работает в терминале и десктопном приложении: читает и правит код, запускает команды, подключает MCP-серверы. Droid поддерживает Custom Models (BYOK, Bring Your Own Key): можно подключить любую модель через свой API-ключ. По документации Factory, ключи хранятся локально и не загружаются на серверы Factory.

RouterAI подходит для этого как OpenAI-совместимый провайдер: в одном агенте доступны Claude, GPT, DeepSeek и GLM из каталога моделей, работа из России без VPN и оплата в рублях.

Требования

  • macOS, Linux или Windows
  • Аккаунт Factory: Droid при первом запуске просит войти (подробности в разделе «Ограничения»)
  • API-ключ из личного кабинета
  • На Linux нужен пакет xdg-utils (sudo apt-get install xdg-utils), как указано в quickstart Factory

Установка

Команды взяты из quickstart Droid CLI.

macOS и Linux:

curl -fsSL https://app.factory.ai/cli | sh

Homebrew:

brew install --cask droid

Windows (PowerShell):

irm https://app.factory.ai/cli/windows | iex

npm:

npm install -g droid

Запустите агент в папке проекта:

cd /path/to/your/project
droid

На первом запуске Droid показывает экран входа: пункты Login, Sign into a Factory Private deployment и Exit.

1.00

Подключение к RouterAI

Модель можно добавить тремя способами. Все они пишут в один файл ~/.factory/settings.json, так что результат одинаковый.

Где Как
CLI /settings → Custom models, либо /model → Manage custom models. Выберите Add model, провайдера, заполните поля и нажмите Save changes
Десктопное приложение Settings → Custom Models → Add Model. Поля заполняются в режиме Form, либо можно переключиться на JSON и править объект модели напрямую
Файл Массив customModels в ~/.factory/settings.json

Ниже разобран третий способ: он быстрее всего и хорошо повторяется на нескольких машинах.

OpenAI-совместимый API (Chat Completions)

Подходит для всех моделей каталога. В Factory для этого служит провайдер generic-chat-completion-api: по документации, он работает через OpenAI Chat Completions API и предназначен для OpenRouter, Fireworks, Together AI, Ollama, vLLM и большинства других провайдеров.

  1. Сохраните ключ в переменную окружения (например, в ~/.zshrc или ~/.bashrc): export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx".
  2. Откройте ~/.factory/settings.json и добавьте массив customModels. Пример для четырёх моделей:
{
  "customModels": [
    {
      "model": "deepseek/deepseek-v4.1-flash",
      "displayName": "DeepSeek V4.1 Flash [RouterAI]",
      "baseUrl": "https://routerai.ru/api/v1",
      "apiKey": "${ROUTERAI_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16384
    },
    {
      "model": "z-ai/glm-5.3",
      "displayName": "GLM 5.3 [RouterAI]",
      "baseUrl": "https://routerai.ru/api/v1",
      "apiKey": "${ROUTERAI_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16384
    },
    {
      "model": "anthropic/claude-sonnet-5.5",
      "displayName": "Sonnet 5.5 [RouterAI]",
      "baseUrl": "https://routerai.ru/api/v1",
      "apiKey": "${ROUTERAI_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16384
    },
    {
      "model": "openai/gpt-6.1-terra",
      "displayName": "GPT-6.1 Terra [RouterAI]",
      "baseUrl": "https://routerai.ru/api/v1",
      "apiKey": "${ROUTERAI_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16384
    }
  ]
}

Что значат поля (по документации Factory):

  • model — id модели, который уходит в запрос. Берите его из каталога RouterAI без изменений.
  • displayName — название в списке моделей.
  • baseUrl — для Chat Completions это https://routerai.ru/api/v1.
  • apiKey — поддерживает ссылки ${VAR_NAME}: Droid читает значение из переменной окружения, поэтому ключ не попадает в файл. Не вписывайте в settings.json настоящий ключ, если файл хранится в репозитории или синхронизируется.
  • provider — обязательное поле, тип API.
  • maxOutputTokens — максимум токенов в ответе. Значение 16384 взято из примера в документации Factory; подберите своё под модель.

Droid отслеживает изменения файла сам, перезапускать его не нужно.

Anthropic Messages API для моделей Claude

Для моделей anthropic/* в Factory есть провайдер anthropic (Anthropic Messages API). Базовый адрес RouterAI для него — https://routerai.ru/api без /v1: клиент сам добавляет /v1/messages. В официальном примере Factory для Anthropic указан адрес без /v1 (https://api.anthropic.com).

{
  "model": "anthropic/claude-sonnet-5.5",
  "displayName": "Sonnet 5.5 [RouterAI, Messages]",
  "baseUrl": "https://routerai.ru/api",
  "apiKey": "${ROUTERAI_API_KEY}",
  "provider": "anthropic",
  "maxOutputTokens": 16384
}

Эндпоинт https://routerai.ru/api/v1/messages мы проверили запросом curl: он отвечает. Запустить именно эту связку внутри Droid не удалось, потому что для старта агента нужен вход в Factory. Если сомневаетесь, начните с варианта generic-chat-completion-api: он работает для всех моделей, включая Claude.

OpenAI Responses API

Провайдер openai в Factory использует OpenAI Responses API, и в документации он рекомендован для новейших моделей OpenAI. RouterAI отвечает и на https://routerai.ru/api/v1/responses (проверено curl на openai/gpt-6.1-terra), поэтому для GPT можно указать "provider": "openai" с тем же baseUrl https://routerai.ru/api/v1. Как и в предыдущем случае, внутри Droid этот вариант не запускали.

В документации Factory допустимы четыре значения provider: anthropic, openai, generic-chat-completion-api и bedrock-converse. Любое другое даёт ошибку «Invalid provider».

Выбор модели

Модели, добавленные в customModels, появляются в /model в разделе Custom Models под значением displayName. Выберите нужную стрелками и подтвердите выбор. Идентификаторы проверены по каталогу RouterAI на момент написания; цены и актуальный список смотрите там же.

Модель Для чего
anthropic/claude-sonnet-5.5 Основная модель для кода: фичи, отладка, рефакторинг среднего размера
openai/gpt-6.1-terra Альтернатива Claude от OpenAI для тех же задач; обзор версий в статье GPT-6.1 Terra и Sol
deepseek/deepseek-v4.1-flash Дешёвые массовые правки, переименования, быстрые ответы
z-ai/glm-5.3 Альтернатива для кода и агентных задач; цену сравните в каталоге

Factory предупреждает: полностью протестированы только модели Anthropic и OpenAI через их официальные API, а работу остальных моделей «из коробки» компания не гарантирует. Модели меньше 30 млрд параметров заметно хуже справляются с агентными задачами.

Проверка подключения

Сначала убедитесь, что ключ и модель работают, независимо от Droid:

curl https://routerai.ru/api/v1/chat/completions \
  -H "Authorization: Bearer $ROUTERAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "deepseek/deepseek-v4.1-flash", "messages": [{"role": "user", "content": "ok?"}]}'

Ответ с кодом 200 и полем choices означает, что ключ принят. После этого:

  1. Запустите droid в той же сессии терминала, где экспортирована ROUTERAI_API_KEY.
  2. Выполните /model и найдите свои модели в разделе Custom Models.
  3. Выберите модель и дайте агенту небольшую задачу, например «Объясни одной фразой, что делает этот проект».
  4. Команда /cost покажет разбивку расходов по сессии.

Ограничения

  • Нужен вход в Factory. При первом запуске Droid CLI v1.3.0 требует войти в аккаунт Factory (экран выше), без этого интерфейс не открывается. Для запуска в CI и скриптах документация предлагает ключ Factory в переменной FACTORY_API_KEY (создаётся в настройках на app.factory.ai). Работает ли BYOK без платной подписки и какие лимиты действуют на бесплатном тарифе, мы не проверяли: перед выпуском сверьтесь с актуальной страницей тарифов Factory. Там сказано, что BYOK бесплатен в пределах квоты на тарифах Individual, а сверх неё тарифицируется по вашему плану.
  • Личные модели видны только локально. Custom Models доступны в Droid CLI и десктопном приложении, которые читают локальный settings.json. В веб-версии и мобильной версии Factory их нет.
  • Ограничения организации. Администратор Enterprise может отключить пользовательские модели (allowCustomModels: false) или разрешить подключение только к утверждённым адресам (allowedBaseUrls). Тогда https://routerai.ru/api/v1 придётся внести в список разрешённых адресов. Подробнее: Enterprise Controls.

Решение проблем

Модель не появляется в списке

Проверьте синтаксис JSON в ~/.factory/settings.json (лишняя или недостающая запятая) и наличие обязательных полей: model, provider, а также baseUrl, пока нет блока bedrock.

Ошибка «Invalid provider»

provider должен совпадать с одним из значений ровно: anthropic, openai, generic-chat-completion-api, bedrock-converse. Проверьте опечатки и регистр.

401 Unauthorized

Ключ не передан или неверный. Droid подставляет значение из переменной окружения, поэтому она должна быть экспортирована в том терминале, откуда запущен droid (echo $ROUTERAI_API_KEY). Если ссылку ${ROUTERAI_API_KEY} заменить настоящим ключом, убедитесь, что он скопирован из личного кабинета целиком.

404 Not Found

Обычно ошибка в базовом адресе. Для generic-chat-completion-api и openai нужен https://routerai.ru/api/v1, для anthropic — https://routerai.ru/api без /v1.

402 Payment Required

Недостаточно средств на балансе. Пополните его в разделе Биллинг.

Что дальше