Об этом проекте

WindsurfAPI — это самостоятельно размещаемый обратный прокси-сервис, преобразующий более 100 AI-моделей облачной платформы Windsurf (ранее Codeium, ныне Devin Desktop) в несколько наборов стандартных API-интерфейсов. Проект реализован на чистом Node.js, заявлена нулевая зависимость от npm во время выполнения, по умолчанию прослушивается порт 3003. ## Предоставляемые интерфейсы - `POST /v1/chat/completions`: совместим с OpenAI Chat, можно напрямую использовать OpenAI SDK - `POST /v1/completions`: старый OpenAI Completions (без потоковой передачи) - `POST /v1/responses`: совместим с OpenAI Responses, дополнительно поддерживаются `GET`/`DELETE /v1/responses/{id}` для чтения и удаления сохранённых ответов, можно продолжать контекст через `previous_response_id` - `POST /v1/messages`: совместим с Anthropic, для подключения таких клиентов, как Claude Code, Cline, Cursor - `POST /v1beta/models/*`: совместим с Gemini, поддерживает заголовок `x-goog-api-key` и параметр запроса `?key=` ## Принцип работы Сервис транслирует запросы различных протоколов во внутренний gRPC-протокол Windsurf, передавая их в облако Windsurf через локальный бинарник Language Server; также возможен прямой доступ к облаку Devin через путь `DEVIN_CONNECT`. Встроен пул аккаунтов с циклическим перебором, изоляцией ограничений скорости, отказоустойчивостью и размыканием цепи; перед возвратом удаляется информация об идентичности вышестоящего Windsurf. ## Развёртывание и использование Предоставляются `setup.sh` для развёртывания одной командой, развёртывание через Docker Compose и скрипт обновления `update.sh`. Сначала необходимо добавить аккаунт Windsurf: можно войти через Google/GitHub OAuth в панели управления, по email и паролю, либо массово импортировать токены, полученные через `windsurf.com/show-auth-token`, с помощью интерфейса `/auth/login`. Панель управления (`/dashboard`) предоставляет обзор, вход и получение аккаунтов, управление аккаунтами, чёрные и белые списки моделей, настройку прокси, журналы в реальном времени, панели статистического анализа и другое. ## Ключевые моменты конфигурации Переменные окружения переопределяют порт, API-ключ, модель по умолчанию, максимальное количество токенов, уровень логирования, путь к бинарнику LS и каталог данных, пул экземпляров LS и защиту памяти, хранение ответов (TTL, количество, бюджет байтов), липкие сессии, белый список хостов прокси и т. д. Пустые `API_KEY` и `DASHBOARD_PASSWORD` по умолчанию работают по принципу fail-closed (возвращают 401); для открытия доступа с локальной машины необходимо явно установить соответствующие переключатели. ## Модели и клиенты Статический список моделей охватывает серии Claude, GPT, Gemini, Grok, Qwen, Kimi, GLM, MiniMax, SWE, Arena и другие, а при запуске объединяется с динамически передаваемым облаком каталогом моделей. В документации указано, что сами модели не работают с файлами; чтение и запись файлов выполняются локально такими клиентами, как Claude Code и Cline, а шлюз лишь передаёт tool_use/tool_result. В связи с блокировкой клиентом Cursor по белому списку имён моделей, содержащих `claude`, в README приведена таблица сопоставления псевдонимов. Проект распространяется под лицензией MIT; в README также приведено личное заявление автора о коммерческом использовании.