[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1670":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":43,"readmeContent":44,"aiSummary":45,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":46,"discoverSource":47},1670,"WindsurfPoolAPI","guanxiaol\u002FWindsurfPoolAPI","guanxiaol","Multi-account pool proxy for Windsurf — 113+ models (Claude\u002FGPT\u002FGemini\u002FGrok\u002FKimi) via OpenAI & Anthropic APIs, image upload, Cursor & Claude Code native \u002F 企业级 Windsurf 多账号池化 API 代理","https:\u002F\u002Fguanxiaol.github.io\u002FWindsurfPoolAPI\u002F",null,"JavaScript",248,61,2,0,44,49.78,"MIT License",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"ai-proxy","anthropic","anthropic-api","api","claude","claude-code","codeium","cursor","gemini","gpt","language-server","llm-proxy","multi-account","multimodal","nodejs","openai","openai-api","pool","proxy","windsurf","2026-06-12 04:00:10","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-%3E%3D20-339933?style=flat-square&logo=node.js&logoColor=white\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue?style=flat-square\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FModels-113%2B-blueviolet?style=flat-square\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FZero_Dependencies-yes-success?style=flat-square\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fv2.0.4-Latest-orange?style=flat-square\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fguanxiaol\u002FWindsurfPoolAPI?style=flat-square&color=yellow\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">WindsurfPoolAPI\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cb>Enterprise-grade multi-account pool proxy for Windsurf AI platform.\u003C\u002Fb>\u003Cbr\u002F>\n  Expose 113+ models (Claude \u002F GPT \u002F Gemini \u002F DeepSeek \u002F Grok \u002F Qwen \u002F Kimi \u002F GLM) via standard OpenAI & Anthropic APIs.\u003Cbr\u002F>\n  \u003Csub>企业级 Windsurf 多账号池化 API 代理 —— 113+ 模型，OpenAI \u002F Anthropic 双协议兼容，Cursor \u002F Claude Code 原生支持\u003C\u002Fsub>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#-quick-start--快速开始\">Quick Start\u003C\u002Fa> ·\n  \u003Ca href=\"#-features--核心特性\">Features\u003C\u002Fa> ·\n  \u003Ca href=\"#-dashboard--管理后台\">Dashboard\u003C\u002Fa> ·\n  \u003Ca href=\"#-api-reference--接口文档\">API Reference\u003C\u002Fa> ·\n  \u003Ca href=\"#-deployment--部署指南\">Deployment\u003C\u002Fa> ·\n  \u003Ca href=\"#-faq--常见问题\">FAQ\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## ⚠️ Disclaimer \u002F 声明\n\nThis project is for **personal learning, research, and self-hosting only**. Commercial use, resale, paid deployment, or repackaging as a service without written authorization is **strictly prohibited**.\n\n本项目仅供**个人学习、研究、自用**。未经作者书面授权，禁止任何商业用途、付费代部署、中转转售或包装成服务对外销售。\n\n---\n\n## ✨ Features \u002F 核心特性\n\n| Feature | Description |\n| :--- | :--- |\n| **Dual Protocol** | `\u002Fv1\u002Fchat\u002Fcompletions` (OpenAI) + `\u002Fv1\u002Fmessages` (Anthropic native) |\n| **113+ Models** | Claude Opus 4.7 · GPT-5.4 · Gemini 3.1 · DeepSeek R1 · Grok 3 · Qwen 3 · Kimi K2.5 · GLM-5.1 and more |\n| **Multi-Account Pool** | Capacity-based load balancing, automatic failover, per-model rate-limit isolation |\n| **Token & Credit Analytics** | Per-API × per-model aggregation down to individual request level |\n| **Admin Dashboard** | Full-featured SPA: account management, proxy config, real-time logs, usage charts |\n| **Batch Operations** | Select multiple accounts, enable\u002Fdisable in one click |\n| **OAuth Login** | Google \u002F GitHub Firebase OAuth + manual token refresh |\n| **Dynamic Stall Detection** | Input-length-aware timeout (30s–90s) prevents false positives on large contexts |\n| **Persistent State** | All settings, account status, tokens survive restarts |\n| **Image Upload** | Multimodal support — send images via `image_url` blocks (base64 or URL) |\n| **Tool Calling** | `\u003Ctool_call>` protocol compatible — works with Cursor, Aider, and other AI coding tools |\n| **Cursor Compatible** | 80+ model name aliases including Cursor-friendly names without \"claude\" keyword |\n| **Streaming SSE** | OpenAI format with `stream_options.include_usage` support |\n| **Zero Dependencies** | Pure Node.js built-in modules, nothing to install |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>中文特性列表\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **双协议兼容** — OpenAI + Anthropic 原生端点，无需任何中间件\n- **113+ 模型** — 启动时自动拉取 Windsurf 最新 catalog，实时更新\n- **多账号池** — 按剩余容量均衡分配，自动故障转移，per-model 限速隔离\n- **Token + Credit 精细统计** — 按 API × 模型分层聚合，精确到单次请求\n- **Dashboard 管理后台** — 账号管理、代理配置、实时日志、使用图表、封禁侦测\n- **批量操作** — 一键多选账号批量启用\u002F停用\n- **OAuth 登录** — 支持 Google\u002FGitHub Firebase OAuth 登录\n- **动态超时检测** — 根据输入长度自适应超时阈值（30s~90s），大上下文不误判\n- **全持久化** — 所有设置、账号状态、Token 均持久化存储，重启不丢失\n- **零依赖** — 纯 Node.js 内置模块，开箱即用\n\n\u003C\u002Fdetails>\n\n---\n\n## 🚀 Quick Start \u002F 快速开始\n\n### Prerequisites \u002F 前置条件\n\n- **Node.js ≥ 20**\n- **Windsurf Language Server** binary (`language_server_linux_x64` or `language_server_darwin_arm64`)\n- At least one Windsurf account (Free tier supports limited models)\n\n### Install & Run \u002F 安装启动\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fguanxiaol\u002FWindsurfPoolAPI.git\ncd WindsurfPoolAPI\n\n# Place Language Server binary \u002F 放置 Language Server 二进制\nsudo mkdir -p \u002Fopt\u002Fwindsurf\nsudo cp \u002Fpath\u002Fto\u002Flanguage_server_linux_x64 \u002Fopt\u002Fwindsurf\u002F\nsudo chmod +x \u002Fopt\u002Fwindsurf\u002Flanguage_server_linux_x64\n\n# Optional: configure \u002F 可选配置\ncp .env.example .env    # Edit API_KEY, DASHBOARD_PASSWORD, etc.\n\n# Start \u002F 启动\nnode src\u002Findex.js\n```\n\n> **macOS** — Run `bash scripts\u002Finstall-macos.sh` for auto-start on login.\n>\n> **Windows** — Run `scripts\\install-windows.bat` for guided installation.\n\nDashboard: `http:\u002F\u002Flocalhost:3003\u002Fdashboard`\n\n### Docker\n\n```bash\ndocker compose up -d --build\n```\n\nMount the LS binary at `\u002Fopt\u002Fwindsurf\u002F` on the host before starting.\n\n---\n\n## 🔑 Account Management \u002F 账号管理\n\n> ⚠️ **Always use Token login!** \u002F **必须使用 Token 方式登录！**\n>\n> Windsurf has a known bug where email\u002Fpassword login may route requests to the wrong account.\n>\n> Windsurf 官方存在 bug：邮箱\u002F密码登录可能导致请求路由到错误账号。\n>\n> **Get your token** \u002F **获取 Token**：[https:\u002F\u002Fwindsurf.com\u002Feditor\u002Fshow-auth-token?workflow=](https:\u002F\u002Fwindsurf.com\u002Feditor\u002Fshow-auth-token?workflow=)\n\n```bash\n# ✅ Add account via Token (recommended \u002F 推荐)\ncurl -X POST http:\u002F\u002Flocalhost:3003\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"token\": \"your-windsurf-token\"}'\n\n# Batch add \u002F 批量添加\ncurl -X POST http:\u002F\u002Flocalhost:3003\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"accounts\": [{\"token\": \"t1\"}, {\"token\": \"t2\"}]}'\n\n# List accounts \u002F 列出账号\ncurl http:\u002F\u002Flocalhost:3003\u002Fauth\u002Faccounts\n\n# Remove \u002F 删除\ncurl -X DELETE http:\u002F\u002Flocalhost:3003\u002Fauth\u002Faccounts\u002F{id}\n```\n\n---\n\n## 📡 API Reference \u002F 接口文档\n\n### OpenAI Compatible \u002F OpenAI 兼容\n\n```bash\ncurl http:\u002F\u002Flocalhost:3003\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer sk-your-api-key\" \\\n  -d '{\n    \"model\": \"gpt-4o-mini\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}],\n    \"stream\": false\n  }'\n```\n\n### Anthropic Compatible \u002F Anthropic 兼容\n\n```bash\ncurl http:\u002F\u002Flocalhost:3003\u002Fv1\u002Fmessages \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"x-api-key: sk-your-api-key\" \\\n  -d '{\n    \"model\": \"claude-sonnet-4.6\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]\n  }'\n```\n\n### Environment Variables \u002F 环境变量\n\n| Variable | Default | Description |\n| :--- | :--- | :--- |\n| `PORT` | `3003` | HTTP server port |\n| `API_KEY` | _(empty)_ | Auth key for `\u002Fv1\u002F*` endpoints. Empty = open access |\n| `DASHBOARD_PASSWORD` | _(empty)_ | Dashboard admin password |\n| `DEFAULT_MODEL` | `claude-4.5-sonnet-thinking` | Default model when none specified |\n| `MAX_TOKENS` | `8192` | Default max output tokens |\n| `LOG_LEVEL` | `info` | `debug` \u002F `info` \u002F `warn` \u002F `error` |\n| `LS_BINARY_PATH` | `\u002Fopt\u002Fwindsurf\u002Flanguage_server_linux_x64` | Language Server path |\n| `LS_PORT` | `42100` | Language Server gRPC port |\n\n### Dashboard API\n\nAll endpoints require `X-Dashboard-Password` header.\n\n| Method | Path | Description |\n| :--- | :--- | :--- |\n| `GET` | `\u002Fdashboard\u002Fapi\u002Foverview` | System overview |\n| `GET` | `\u002Fdashboard\u002Fapi\u002Faccounts` | List all accounts |\n| `POST` | `\u002Fdashboard\u002Fapi\u002Faccounts\u002Fbatch-status` | Batch enable\u002Fdisable accounts |\n| `POST` | `\u002Fdashboard\u002Fapi\u002Foauth-login` | OAuth login (Google\u002FGitHub) |\n| `POST` | `\u002Fdashboard\u002Fapi\u002Faccounts\u002F:id\u002Frefresh-token` | Refresh Firebase token |\n| `POST` | `\u002Fdashboard\u002Fapi\u002Faccounts\u002F:id\u002Frate-limit` | Check account capacity |\n| `GET` | `\u002Fdashboard\u002Fapi\u002Fusage` | Full usage statistics |\n| `GET` | `\u002Fdashboard\u002Fapi\u002Fusage\u002Fexport` | Export stats as JSON |\n| `POST` | `\u002Fdashboard\u002Fapi\u002Fusage\u002Fimport` | Import stats (auto-dedup) |\n| `GET` | `\u002Fdashboard\u002Fapi\u002Flogs\u002Fstream` | Real-time SSE log stream |\n\n---\n\n## 🖥 Dashboard \u002F 管理后台\n\nAccess at `http:\u002F\u002Flocalhost:3003\u002Fdashboard`\n\n| Panel | Description |\n| :--- | :--- |\n| **Overview** | Runtime stats, account pool health, success rate |\n| **Login** | Windsurf token\u002Femail login, OAuth |\n| **Accounts** | Add\u002Fremove, batch enable\u002Fdisable, per-account proxy, quota display |\n| **Models** | Global allow\u002Fblocklist, per-account model restrictions |\n| **Proxy** | Global + per-account HTTP\u002FSOCKS5 proxy |\n| **Logs** | Real-time SSE log stream with level filtering |\n| **Analytics** | Token\u002FCredit charts, 14-day trends, 24h distribution, request details |\n| **Detection** | Error pattern monitoring, account health |\n| **Experimental** | Cascade session reuse, model identity masking, preflight rate-limit |\n\n### Screenshots \u002F 界面预览\n\n\u003Cp align=\"center\">\n  \u003Cb>Account Pool — Multi-account quota monitoring \u002F 多账号额度监控\u003C\u002Fb>\u003Cbr\u002F>\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Faccounts.png\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cb>Analytics — Token & Credit usage charts \u002F 统计分析面板\u003C\u002Fb>\u003Cbr\u002F>\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fanalytics.png\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cb>Model Stats — Per-model request breakdown \u002F 模型使用统计\u003C\u002Fb>\u003Cbr\u002F>\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fmodels.png\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## 🤖 Supported Models \u002F 支持的模型\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Claude (Anthropic)\u003C\u002Fb>\u003C\u002Fsummary>\n\n`claude-3.5-sonnet` · `claude-3.7-sonnet[-thinking]` · `claude-4-sonnet[-thinking]` · `claude-4-opus[-thinking]` ·\n`claude-4.1-opus[-thinking]` · `claude-4.5-sonnet[-thinking]` · `claude-4.5-haiku` · `claude-4.5-opus[-thinking]` ·\n`claude-sonnet-4.6[-thinking][-1m]` · `claude-opus-4.6[-thinking]` · `claude-opus-4.7-{low,medium,high,xhigh,max}`\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>GPT (OpenAI)\u003C\u002Fb>\u003C\u002Fsummary>\n\n`gpt-4o` · `gpt-4o-mini` · `gpt-4.1[-mini\u002Fnano]` · `gpt-5[-mini]` · `gpt-5.2[-low\u002Fmedium\u002Fhigh]` ·\n`gpt-5.4[-low\u002Fmedium\u002Fhigh\u002Fxhigh]` · `gpt-5.3-codex` · `o3[-mini\u002Fhigh\u002Fpro]` · `o4-mini`\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Gemini (Google)\u003C\u002Fb>\u003C\u002Fsummary>\n\n`gemini-2.5-pro` · `gemini-2.5-flash` · `gemini-3.0-pro` · `gemini-3.0-flash` · `gemini-3.1-pro[-low\u002Fhigh]`\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Others \u002F 其他\u003C\u002Fb>\u003C\u002Fsummary>\n\n`deepseek-v3` · `deepseek-r1` · `grok-3[-mini]` · `grok-code-fast-1` · `qwen-3` · `qwen-3-coder` ·\n`kimi-k2` · `kimi-k2.5` · `swe-1.5[-thinking]` · `swe-1.6-fast` · `arena-fast` · `arena-smart`\n\n\u003C\u002Fdetails>\n\n> Model catalog is auto-synced from Windsurf cloud on startup. Free accounts: `gpt-4o-mini` and `gemini-2.5-flash` only.\n>\n> 启动时自动从 Windsurf 云端拉取最新模型列表。免费账号仅可用 `gpt-4o-mini` 和 `gemini-2.5-flash`。\n\n---\n\n## 🚢 Deployment \u002F 部署指南\n\n### PM2 (Recommended \u002F 推荐)\n\n```bash\nnpm install -g pm2\npm2 start src\u002Findex.js --name windsurfpool --cwd \u002Fpath\u002Fto\u002FWindsurfPoolAPI\npm2 save && pm2 startup\n```\n\n### systemd (Linux)\n\n```ini\n# \u002Fetc\u002Fsystemd\u002Fsystem\u002Fwindsurfpool.service\n[Unit]\nDescription=WindsurfPoolAPI\nAfter=network.target\n\n[Service]\nType=simple\nUser=windsurf\nWorkingDirectory=\u002Fopt\u002FWindsurfPoolAPI\nExecStart=\u002Fusr\u002Fbin\u002Fnode src\u002Findex.js\nRestart=on-failure\nRestartSec=5\nEnvironment=PORT=3003\n\n[Install]\nWantedBy=multi-user.target\n```\n\n```bash\nsudo systemctl enable --now windsurfpool\n```\n\n### macOS (launchd)\n\n```bash\nbash scripts\u002Finstall-macos.sh\n```\n\n### Firewall \u002F 防火墙\n\n```bash\n# Ubuntu\nsudo ufw allow 3003\u002Ftcp\n\n# CentOS\nsudo firewall-cmd --add-port=3003\u002Ftcp --permanent && sudo firewall-cmd --reload\n```\n\n> Cloud servers: remember to open port 3003 in your security group.\n>\n> 云服务器记得在安全组中开放 3003 端口。\n\n---\n\n## 🏗 Architecture \u002F 架构\n\n```text\nClient (OpenAI SDK \u002F Anthropic SDK \u002F curl \u002F Cursor \u002F Aider)\n   │\n   ▼\nWindsurfPoolAPI  (Node.js HTTP, :3003)\n   ├── \u002Fv1\u002Fchat\u002Fcompletions    (OpenAI format)\n   ├── \u002Fv1\u002Fmessages            (Anthropic format)\n   ├── \u002Fdashboard\u002Fapi\u002F*        (Admin API)\n   └── \u002Fdashboard              (Admin SPA)\n   │\n   ▼\nLanguage Server Pool  (gRPC-over-HTTP\u002F2, :42100+)\n   │\n   ▼\nWindsurf Cloud  (server.self-serve.windsurf.com)\n```\n\nSee `ARCHITECTURE.md` for module-level details.\n\n---\n\n## ❓ FAQ \u002F 常见问题\n\n**Q: `LS binary not found` on startup?**\nA: Ensure the binary exists at `\u002Fopt\u002Fwindsurf\u002Flanguage_server_linux_x64` (or set `LS_BINARY_PATH`).\n\n**Q: `No accounts available`?**\nA: Add at least one account via Dashboard or `POST \u002Fauth\u002Flogin`.\n\n**Q: `permission_denied` for all accounts?**\nA: Free accounts only support `gpt-4o-mini` and `gemini-2.5-flash`. Other models require Windsurf Pro.\n\n**Q: How to migrate stats between servers?**\nA: Export: `GET \u002Fdashboard\u002Fapi\u002Fusage\u002Fexport` → Import: `POST \u002Fdashboard\u002Fapi\u002Fusage\u002Fimport` (auto-dedup).\n\n**Q: How to update models?**\nA: Models auto-sync on startup. Restart the service to refresh.\n\n---\n\n## 🤝 Contributing\n\nSee `CONTRIBUTING.md`. Issues and PRs are welcome.\n\n---\n\n## 🙏 Acknowledgements \u002F 致谢\n\nThis project is built upon [dwgx\u002FWindsurfAPI](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI). Special thanks to [@dwgx](https:\u002F\u002Fgithub.com\u002Fdwgx) for the foundational work and open-source contribution.\n\n本项目基于 [dwgx\u002FWindsurfAPI](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI) 的初始版本开发，感谢原作者 [@dwgx](https:\u002F\u002Fgithub.com\u002Fdwgx) 的开创性工作和开源贡献。\n\n---\n\n## 📄 License\n\n[MIT](LICENSE)\n","WindsurfPoolAPI 是一个企业级的多账号池化 API 代理，用于 Windsurf AI 平台。它通过标准的 OpenAI 和 Anthropic API 接口，支持超过113种模型（如Claude、GPT、Gemini等），并提供图像上传和Cursor及Claude Code原生支持等功能。该代理具备双协议兼容性、基于容量的负载均衡与自动故障转移机制、每模型速率限制隔离等技术特点。此外，还提供了详细的令牌与信用分析、全功能管理后台、批量操作、OAuth登录、动态延迟检测、持久化状态保存等特性。适用于需要高效管理和调用多种AI模型的企业和个人开发者场景。","2026-06-06 02:46:06","CREATED_QUERY"]