v1.5.0 — Docker + SOCKS5 + виправлення викликів інструментів

Перетворіть AI-моделі Windsurf
на звичний вам API.

Одночасна підтримка двох протоколів: /v1/chat/completions та /v1/messages. Claude Code, Cursor, Cline підключаються напряму. Без npm-залежностей, розгортання у Docker одним кліком.

Без npm-залежностей Node.js ≥ 20 Ліцензія MIT Готовий Docker-образ
0
AI-моделей
9
провайдерів
2
сумісні протоколи
0
залежностей npm
Подвійний протокол · Dual Protocol

Один сервер, два стандарти.

Незалежно від того, який протокол використовує ваш клієнт — OpenAI чи Anthropic — спрямуйте його на той самий екземпляр Windsurf API.

S

Сумісність з OpenAI

POST /v1/chat/completions
$ curl http://localhost:3003/v1/chat/completions \
  -H "Authorization: Bearer sk-ws-demo" \
  -d '{
    "model": "gpt-5.2",
    "messages": [
      {"role":"user","content":"hello"}
    ],
    "stream": true
  }'
# → Server-Sent Events (формат OpenAI chunk)
A

Сумісність з Anthropic

POST /v1/messages
$ curl http://localhost:3003/v1/messages \
  -H "x-api-key: sk-ws-demo" \
  -d '{
    "model": "claude-opus-4.6",
    "messages": [
      {"role":"user","content":"hello"}
    ],
    "stream": true
  }'
# → SSE (формат Anthropic message_delta)
Єдиний формат тіла запиту, спільний пул акаунтів, спільний обмежувач частоти — перемикання протоколу зводиться до зміни префіксу маршруту. Claude Code та Cline працюють через /v1/messages, Cursor і OpenAI SDK — через /v1/chat/completions, не заважаючи один одному.
Моделі · Models

Один API, безліч провайдерів.

Від Claude Opus до GPT-5, від Gemini 3 до DeepSeek R1 — моделі від дев'яти провайдерів через єдиний інтерфейс.

Безкоштовний акаунт: підтримується лише gemini-2.5-flash (gpt-4o-mini Windsurf уже зняв із підтримки). Решта моделей потребують підписки Windsurf Pro.
Не бачите найновіших моделей? Ваш бінарник Language Server може відставати від хмари Windsurf — скопіюйте найновіший LS із десктопного застосунку поверх існуючого, і /v1/models автоматично виявить нові моделі.
Як оновлюється перелік моделей? Список на цій сторінці генерується з src/models.js через scripts/gen-docs-models.js і завжди синхронізований з бекендом.
Архітектура · Architecture

Один проміжний шар — все під контролем.

Запит від клієнта проходить переклад протоколу, вибір акаунта з пулу, симуляцію інструментів та очищення шляхів. Далі Language Server перетворює його на Protobuf і надсилає у хмару Windsurf. Відповідь повертається тим самим маршрутом і передається у потоковому режимі.

Client
IDE / CLI
Claude Code · Cursor
Cline · OpenAI SDK
HTTP · SSE
Node.js Proxy
Windsurf API
Переклад протоколу · Ротація акаунтів
Симуляція інструментів · Повторне використання контексту
Обмеження частоти · Перемикання у разі збоїв
Protobuf · gRPC
Binary · gRPC
Language Server
Бінарник Windsurf LS
Серіалізація / десеріалізація Proto
TLS · HTTPS
Upstream
Windsurf Cloud
Рушій Cascade AI
Інференс 100+ моделей
Подвійний переклад протоколів
OpenAI ↔ Anthropic ↔ Cascade
Пул кількох акаунтів
Ротація · Перемикання у разі збоїв · Автоматичне виявлення блокувань
Симуляція інструментів
Ін'єкція у prompt · Парсинг трьох форматів
Повторне використання контексту
Пул fingerprint · Кеш сесій Cascade
Безпекове очищення
Видалення шляхів · Захист від SSRF · Виявлення обрізання Proto
SOCKS5 · Docker
Окремий проксі для кожного акаунта · Контейнеризоване розгортання
Потік запитів · Потік відповідей
Адмінпанель · Dashboard

10 панелей — повне керування акаунтами в одному місці.

Перейдіть на /dashboard — темний веб-інтерфейс із потоковими логами в реальному часі, входом в акаунт одним кліком, чорними та білими списками моделей і виявленням блокувань.

1

Огляд

Аптайм, стан пулу акаунтів, успішність за моделями

2

Реєстрація акаунта

Пряма реєстрація через email/пароль з автоматичним отриманням токена

3

Керування акаунтами

Додавання, видалення, вимкнення, перевірка балансу credits

4

Керування моделями

Глобальні та індивідуальні білі/чорні списки моделей для кожного акаунта

5

Налаштування проксі

Глобальні та індивідуальні HTTP/SOCKS5-проксі для кожного акаунта

6

Перегляд логів

Реальний SSE-потік, фільтри за рівнем, підсвічування ключових слів

7

Статистика запитів

Метрики та графіки в розрізі моделей/акаунтів

8

Виявлення блокувань

Розпізнавання шаблонів помилок, автоматичне відстеження стану акаунтів

9

Автоматичне оновлення

git pull + перезапуск PM2 одним кліком

10

Подяки

Список учасників

Розгортання · Deploy

З нуля до робочого сервера — п'ять хвилин.

Два способи на вибір.

Встановіть Node.js 20+

bash
$ curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
$ apt install -y nodejs

Клонуйте репозиторій та встановіть Language Server

bash
$ git clone https://github.com/MYMDO/WindsurfAPI.git
$ cd WindsurfAPI
$ bash install-ls.sh

Налаштуйте .env

.env
PORT=3003
API_KEY=                   # порожнє = без перевірки
DEFAULT_MODEL=claude-4.5-sonnet-thinking
LS_BINARY_PATH=/opt/windsurf/language_server_linux_x64
DASHBOARD_PASSWORD=         # порожнє = адмінпанель без пароля

Запустіть

bash
$ npm install -g pm2
$ pm2 start src/index.js --name windsurf-api
$ pm2 save && pm2 startup
Оновлення одним кліком: bash update.sh

Підготуйте конфігурацію

bash
$ git clone https://github.com/MYMDO/WindsurfAPI.git
$ cd WindsurfAPI
$ cp .env.example .env

Запустіть контейнер

bash
$ docker compose up -d --build
$ docker compose logs -f
Стандартні томи: .docker-data/data зберігає акаунти та конфігурацію, .docker-data/opt/windsurf містить бінарник LS. Контейнер автоматично завантажить його при першому запуску.
Підключення клієнтів · Integrations

Ваша улюблена IDE — вже сумісна.

Змініть BASE_URL, додайте API KEY — і готово.

CClaude Code

/v1/messages · протокол Anthropic

export ANTHROPIC_BASE_URL="http://YOUR_IP:3003"
export ANTHROPIC_API_KEY="sk-ws-your-key"
claude

CCursor

/v1/chat/completions · протокол OpenAI

# Settings → Models → Custom OpenAI
Base URL: http://YOUR_IP:3003/v1
API Key:  sk-ws-your-key
Model:    claude-opus-4.6

CCline / Roo Code

→ провайдер Anthropic або OpenAI на вибір

# Provider: OpenAI Compatible
Base URL: http://YOUR_IP:3003/v1
API Key:  sk-ws-your-key

OOpenAI SDK

/v1/chat/completions

from openai import OpenAI
client = OpenAI(
    base_url="http://YOUR_IP:3003/v1",
    api_key="sk-ws-your-key",
)
Поширені запитання · FAQ

Те, про що ви, ймовірно, хочете запитати.

Чи потрібен платний акаунт Windsurf?
Безкоштовний акаунт працює, але обмежений лише gemini-2.5-flash (gpt-4o-mini вже знято з підтримки). Усі моделі Claude, GPT-5, Gemini 3, GLM 5.x, Kimi K2.x та інші потребують підписки Windsurf Pro. Адмінпанель автоматично визначає й позначає tier кожного акаунта.
Чи можна запустити на Windows?
HTTP-сервер та адмінпанель працюють, але бінарник Language Server існує лише для Linux (language_server_linux_x64) — тому функція чату доступна лише на Linux. Для Windows рекомендуємо WSL2 або повноцінну Linux VM.
Що робити, якщо не видно найновіших моделей (opus-4.7, gpt-5.3 тощо)?
Публічний реліз Exafunction зупинився на v2.12.5 (січень 2026) і не містить 4.7. Скопіюйте LS-бінарник з десктопного застосунку Windsurf:
• macOS: ~/Library/Application Support/Windsurf/.../language_server_macos_arm
• Linux: ~/.windsurf/bin/language_server_linux_x64
Після копіювання /v1/models автоматично виявить найновіший каталог моделей із хмари.
Чи можуть заблокувати акаунт?
Високочастотні burst-запити легко виявляються. Панель виявлення блокувань відстежує рівень помилок і застосовує охолодження у вікнах по 5 хвилин. Рекомендації: тримайте RPM < 10 на акаунт, використовуйте різні вихідні проксі (SOCKS5 підтримується), чергуйте моделі мислення зі звичайними.
Чим цей проєкт відрізняється від аналогів?
Три ключові відмінності:
(1) Подвійний протокол — одночасно /v1/messages та /v1/chat/completions.
(2) planner_mode=NO_TOOL — вимикає вбудований tool-цикл Cascade і усуває витік шляхів.
(3) Повноцінна адмінпанель + пул акаунтів — ротація між кількома акаунтами, автоматичне перемикання у разі збоїв, розгортання у Docker одним кліком.
Ліцензія MIT — чи можна використовувати комерційно?
Сам код під ліцензією MIT, тож юридично комерційне використання дозволене. На початку README автор просить: будь ласка, не перепродавайте комерційно без зірочки та підписки на GitHub — якщо ж ви це зробили, користуйтесь на здоров'я.
Подяки · Credits

Ці люди тримають проєкт на плаву.

Кожен PR супроводжується аналізом root-cause; кожен root-cause — це момент, коли хтось о третій ночі лаяв Claude в Issues. Ваги розставлені за кількістю та точністю внесків, а не за кількістю рядків коду.

aict666
@aict666 S+
PR #44 · #51 · #53 · #54

Чотири влучні удари. Переписав обхід Opus 4.7 injection-guard, вистраждав ітерацію redact-маркерів до U+2026, виправив помилкове пониження Pro/Trial tier у inferTier, скоротив tool preamble з 1600 до 330 символів. Кожен PR — пряме влучання в root-cause.

baily-zhang
@baily-zhang S+
PR #36 · #45 · #61

Основний maintainer усього механізму cascade reuse / fingerprint / trajectory offset. Від виправлення нульового потрапляння в кеш — до усунення повторного виконання старих кроків і вибуху мультимодального контексту Opus 4.7. Три заходи на тій самій технічній лінії, кожен — точно у ціль.

youfak
@youfak A+
PR #26

Повний набір Docker-адаптацій без залежностей: Dockerfile / docker-compose.yml / постійне зберігання DATA_DIR / виправлення CRLF pipefail / резервний перезапуск LS. Перевів проєкт зі «звичайного pm2» на «docker compose up».

motto1
@motto1 A
PR #20

Реверс-інжиніринг реального ланцюжка автентифікації Auth1, який використовує сайт Windsurf — відновлення 4-крокового процесу, пакетний імпорт і читання з буфера обміну. Закрив прогалину, що залишилася відколи шлях через Firebase перестав бути основним.

smeinecke
@smeinecke A
PR #43

Повна інтернаціоналізація Dashboard — 14 комітів замінили кожен жорстко закодований китайський рядок на виклик I18n.t(), плюс check-i18n.js для запобігання прогалинам. Перетворив напівготовий переклад на справжнє двомовне перемикання.

abwuge
@abwuge B+
PR #58

З першим внеском розв'язав deadlock розгортання. Дві причини нескінченного Restart усіх контейнерів після docker-compose (відсутня nginx zone + забутий import у config.js), хірургічно закриті в +3 / -2 рядках.

dd373156
@dd373156 B+
PR #1

Перший зовнішній учасник. MODEL_TIER_ACCESS.pro був знімком (snapshot), зафіксованим під час завантаження модуля — динамічно злиті з хмари claude-opus-4-7-* ніколи не потрапляли в Pro-список. Виправив одним рядком getter. Відтворення у три curl-запити написане на рівні підручника.

colin1112a
@colin1112a B+
PR #13

Першопроходець ранніх рев'ю коду — один PR охопив 15 багів безпеки, конкурентності та керування ресурсами: екранування XSS, пул grpc HTTP/2, ліміт фрейму 16 МБ, varint BigInt. Хоча PR не було злито напряму, напрямки виявилися правильними і пізніше реалізовані окремо.

Хочете потрапити до цього списку? Створіть тикет в Issues або одразу беріться за справу в Pull requests — раді кожному внеску.