WindsurfAPI: A Reverse Proxy That Recasts Windsurf Models as OpenAI, Anthropic, and Gemini Endpoints
Turn Windsurf / Devin Desktop's 100+ AI models (Claude, GPT, Gemini, DeepSeek, Kimi, GLM, SWE) into OpenAI-, Anthropic- & Gemini-compatible APIs. Zero-dependency self-hosted reverse proxy for Claude Code, Cline & Cursor. 把 Windsurf/Devin 云端 100+ 模型变成三套兼容 API。
At a glance
- What is it?
- WindsurfAPI is a zero-dependency Node.js service that translates Windsurf and Devin Desktop's 100+ hosted models into three standard API shapes. It targets developers who want to point Claude Code, Cline, or Cursor at those models without paying per-token fees, but it carries licensing and stability caveats.
- Who is it for?
- Adopt WindsurfAPI if you already have a Windsurf or Devin Desktop subscription and want to route Claude Code, Cline, or Cursor through those models without paying per-token fees, and if you accept the project's unusual licensing stance and the risk of breaking when upstream changes. Do not use it if you need a stable, vendor-supported API gateway or if you plan commercial redistribution without following the author's stated conditions.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Problem It Solves and Who It Is For
WindsurfAPI addresses a specific mismatch: the Windsurf and Devin Desktop clients expose over 100 hosted AI models, but only through their own proprietary interface. Developers who want to use those models inside tools like Claude Code, Cline, or Cursor normally cannot, because those clients speak OpenAI, Anthropic, or Gemini protocols. WindsurfAPI is a self-hosted HTTP service that translates requests between those three standard API shapes and Windsurf's internal protocol. The intended user is an individual developer or small team who already has a Windsurf or Devin subscription and wants to reuse those models in other coding agents. The README explicitly frames it as a way to connect Claude Code, Cline, and Cursor directly to the Windsurf cloud. It is not aimed at enterprises needing formal support or SLAs. The project is written in JavaScript with zero npm runtime dependencies, which means no install step beyond pulling the repository and running Node.
The Translation Mechanism: Protocol, Account Pool, and Identity Stripping
The architecture, as described in the README diagram, has three layers. First, an HTTP server on port 3003 exposes several endpoints: /v1/chat/completions and /v1/completions for OpenAI compatibility, /v1/responses for the newer OpenAI Responses API, /v1/messages for Anthropic compatibility, and /v1beta/models/* for Gemini. Second, a protocol translation layer converts incoming requests into Windsurf's internal gRPC protocol. That gRPC traffic goes to a local Language Server, which is a Windsurf binary, and that binary communicates over HTTPS with the Windsurf cloud at server.self-serve.windsurf.com. There is also an optional direct HTTPS path to Devin cloud via a DEVIN_CONNECT route. Third, an account pool handles rotation, rate-limit isolation, and failover across multiple Windsurf accounts. Before returning a response, the proxy strips upstream Windsurf identity markers so the model claims to be, for example, 'Claude Opus 4.6 developed by Anthropic.' This identity neutralization is a deliberate design choice to make responses look native to the client. The flow for a tool like Claude Code is that the client sends messages and tool definitions to /v1/messages, WindsurfAPI packages them as a Cascade request, sends them to the cloud, receives tool_use blocks, and returns them as Anthropic SSE. The client then executes file operations locally; the model never touches files directly.
Getting It Running: Commands and Configuration
The README promises a five-minute setup, though it does not list the exact commands in the provided excerpt. What is clear is that you run a Node.js service on port 3003. The repository has a docs folder with an ENV-SWITCHES.md file that describes environment switches, and the mermaid diagram references a DEVIN_CONNECT path for Devin cloud. For clients, the README shows that Claude Code, Cline, and Cursor connect by pointing their Anthropic-compatible base URL to /v1/messages on the local service. OpenAI SDK users would point to /v1/chat/completions, and Gemini SDK users to /v1beta/models/*. The service requires a valid Windsurf or Devin Desktop account, and the account pool suggests you can configure multiple accounts for rotation. The actual configuration keys are not shown in the material, so a user must consult the docs folder. The zero-dependency claim means no npm install is needed for runtime, which lowers the barrier for a quick local test.
Limitations and Failure Modes
The most obvious limitation is that this is a reverse-engineered proxy over an undocumented internal protocol. The README does not hide this; it uses the keyword 'Windsurf reverse engineering' in its tag list. That means any change on Windsurf's side can break the gRPC handshake or the cloud endpoint, and the project's rapid release cadence (three versions within a week in early September 2026) suggests constant patching. A second limitation is the non-streaming constraint on the legacy OpenAI completions endpoint: POST /v1/completions is explicitly non-streaming, and the prompt is wrapped as a single user turn. If you need streaming on that old endpoint, you must use the chat endpoint instead. Third, the identity stripping is cosmetic. The model may claim to be Claude Opus, but it is still running on Windsurf's infrastructure, so behavior, rate limits, and content policies are those of Windsurf, not Anthropic. Finally, the README contains a personal licensing declaration that forbids commercial use, resale, or hosting as a service unless the user has starred and followed the repository. That is not legally binding under MIT, but it signals the author's intent and creates real ambiguity for anyone planning to deploy this beyond personal use.
Maintenance and Upgrade Cost
The project shows signs of high maintenance activity: 1311 commits, 191 releases, and a release history with three versions in one week. The README even links to a visual history ledger that breaks down contributions and rework. That frequency suggests the author is actively fixing breakages, but it also means you cannot treat this as a set-and-forget service. Every upstream Windsurf update may require you to pull the latest release. The zero-dependency design reduces upgrade friction because there is no node_modules to reconcile, but you still need to restart the service and verify that your client's model names still map correctly. The docs folder and the ENV-SWITCHES file imply that configuration changes are common. If you self-host, budget time to track releases and test your primary client after each update. The MIT license on the code gives you freedom to modify, but the author's personal restrictions complicate any plan to redistribute or run it as a public service.
A Real Alternative: Direct Vendor APIs or a General-Purpose Gateway
The alternative is not another reverse proxy for Windsurf; it is to use the official APIs from Anthropic, OpenAI, or Google directly. Those vendors offer native OpenAI, Anthropic, and Gemini endpoints with documented contracts, formal support, and no risk of breaking due to reverse engineering. The trade-off is cost: you pay per token, whereas WindsurfAPI lets you use a subscription you already have. A second alternative is a general-purpose API gateway like LiteLLM, which also exposes multiple model providers behind a unified OpenAI-compatible interface. LiteLLM does not translate to Windsurf's internal protocol; it talks to official provider APIs. So the difference is fundamental: WindsurfAPI bridges a proprietary client protocol, while LiteLLM aggregates official APIs. If you want stability and legal clarity, choose the official route. If you want to exploit an existing Windsurf subscription and accept the fragility, WindsurfAPI is the only tool in this niche.
Who Should Adopt It, Who Should Not, and What to Verify First
Adopt WindsurfAPI if you are an individual developer or a small team with an active Windsurf or Devin subscription, and you want to use those models inside Claude Code, Cline, or Cursor without paying extra per-token costs. You should also be comfortable with the project's unofficial nature and willing to monitor releases. Do not adopt it if you need a production-grade, vendor-supported API endpoint, or if your organization has compliance requirements that forbid routing data through a third-party reverse proxy. Before deploying, verify three things: first, that your Windsurf account credentials can be used with the account pool without violating the Windsurf terms of service, since the README does not address this. Second, that the specific model names you plan to use (for example, Claude 4.5 or GPT-5.2) are present in the current release's model list, because those names change. Third, that the local Language Server binary is available on your operating system, since the gRPC layer depends on it. Also check the docs/ENV-SWITCHES.md file for any environment variables you must set for Devin connectivity or account rotation. The project's own release notes and the visual history ledger are good places to see recent breakages and fixes before you commit.
Editorial conclusion
Adopt WindsurfAPI if you already have a Windsurf or Devin Desktop subscription and want to route Claude Code, Cline, or Cursor through those models without paying per-token fees, and if you accept the project's unusual licensing stance and the risk of breaking when upstream changes. Do not use it if you need a stable, vendor-supported API gateway or if you plan commercial redistribution without following the author's stated conditions. Before deploying, verify the current state of the account pool logic, the exact model identifiers for your client, and whether the latest release still matches the documented gRPC flow, since the project updates frequently and the README warns about reverse-engineering fragility.
Community notes