Sobre o projeto
WindsurfAPI é um serviço de proxy reverso auto-hospedado que converte mais de 100 modelos de IA da nuvem Windsurf (antiga Codeium, atual Devin Desktop) em vários conjuntos de interfaces de API padrão. O projeto é implementado em Node.js puro, afirma ter zero dependências npm em tempo de execução e escuta por padrão na porta 3003.
## Interfaces oferecidas
- `POST /v1/chat/completions`: compatível com OpenAI Chat, pode ser usado diretamente com o SDK da OpenAI
- `POST /v1/completions`: Completions legado da OpenAI (não streaming)
- `POST /v1/responses`: compatível com OpenAI Responses, também suporta `GET`/`DELETE /v1/responses/{id}` para ler e excluir respostas armazenadas, e permite continuar o contexto com `previous_response_id`
- `POST /v1/messages`: compatível com Anthropic, para clientes como Claude Code, Cline, Cursor etc.
- `POST /v1beta/models/*`: compatível com Gemini, suporta o cabeçalho `x-goog-api-key` e o parâmetro de consulta `?key=`
## Como funciona
O serviço traduz requisições de cada protocolo para o protocolo gRPC interno do Windsurf, encaminhando-as para a nuvem do Windsurf por meio do binário local do Language Server; também é possível conectar diretamente à nuvem do Devin pelo caminho `DEVIN_CONNECT`. Possui pool de contas integrado, com rodízio, isolamento de limite de taxa, failover e circuit breaker; antes de retornar, remove informações de identidade do Windsurf da origem.
## Implantação e uso
Oferece implantação com um clique via `setup.sh`, implantação com Docker Compose e script de atualização `update.sh`. É necessário primeiro adicionar uma conta Windsurf: pelo login OAuth do Google/GitHub no Dashboard, login com e-mail e senha, ou importação em lote via interface `/auth/login` com o Token obtido em `windsurf.com/show-auth-token`.
O Dashboard (`/dashboard`) oferece painéis de visão geral, login e obtenção de contas, gerenciamento de contas, lista de permissão/negação de modelos, configuração de proxy, logs em tempo real, análise estatística etc.
## Pontos de configuração
Variáveis de ambiente substituem porta, chave de API, modelo padrão, token máximo, nível de log, caminho do binário LS e diretório de dados, pool de instâncias LS e proteção de memória, armazenamento de respostas (TTL, quantidade, orçamento de bytes), sessões persistentes, lista de permissão de hosts de proxy etc. `API_KEY` vazia e `DASHBOARD_PASSWORD` vazia usam fail-closed por padrão (retornam 401); para abrir no host local é preciso definir explicitamente a opção correspondente.
## Modelos e clientes
A lista estática de modelos cobre as séries Claude, GPT, Gemini, Grok, Qwen, Kimi, GLM, MiniMax, SWE, Arena etc., e na inicialização mescla o catálogo de modelos enviado dinamicamente pela nuvem. A documentação explica que os modelos em si não manipulam arquivos; a leitura e escrita de arquivos é executada localmente por clientes como Claude Code e Cline, e o gateway apenas transmite tool_use/tool_result. Para o bloqueio de lista de permissão do cliente Cursor em nomes de modelos contendo `claude`, o README fornece uma tabela de mapeamento de aliases.
O projeto é open source sob a licença MIT, e o README inclui ainda uma declaração pessoal do autor sobre uso comercial.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.