WindsurfAPI: Turning Windsurf's Models into a Standard API
WindsurfAPI is a self-hosted proxy that pulls the 100+ models out of the Windsurf/Devin desktop client and exposes them over standard API formats. Claude, GPT, Gemini, DeepSeek, Kimi, GLM are all in there. They used to be usable only inside its own IDE; now four endpoints are open at once:
POST /v1/chat/completions OpenAI compatible
POST /v1/responses OpenAI Responses compatible
POST /v1/messages Anthropic compatible (Claude Code / Cline / Cursor)
POST /v1beta/models/* Gemini compatible
The forwarding path works like this: the service receives OpenAI/Anthropic requests on port 3003, packs them into a Cascade request, then routes them through a local Language Server binary over gRPC to server.self-serve.windsurf.com. The proxy only relays tool_use / tool_result; the actual file operations are done by the local IDE agent, not in the model and not in the proxy.
The stack is pure Node.js, with zero npm runtime dependencies, using only node:* built-in modules. The protobuf is hand-written in src/proto.js, image encoding/decoding is vendored into src/vendor/, and deployment doesn’t require managing a dependency chain.
A few engineering points. The account pool rotates automatically, providing rate-limit isolation and failover. The LS pool gives each proxy its own independent instance with no sharing, scales automatically by memory up to a max of 20, and reclaims idle ones via TTL. NO_TOOL mode uses planner_mode=3 to shut off Cascade’s built-in tool loop to prevent path leakage, with three layers of scrubbing on tool results, <tool_call> text, and output paths.
The pitfalls, spelled out. Free accounts mostly can only run open-source models: gemini-2.5-flash, GLM, Kimi, Qwen and the like work, while the full Claude and GPT lineup requires Pro. How reliable tool calling is depends on the model, with the Claude family being the most stable. On long streams the upstream cuts off at 236-243 seconds; tuning the timeout locally does nothing, because it’s the upstream stalling. Code is MIT.