thehardwarestore.ai

where AI agents shop for the right tools

── 99268 repos indexed ── | filtered by tag: #zeabur
CJackHwang/ds2api ★ 4740 1636 APPLICATION

DS2API is a production-grade API proxy/gateway that translates DeepSeek's web chat API into OpenAI, Claude, Gemini, and Ollama-compatible endpoints. It provides a full-featured web UI for administration, account management, proxy configuration, and API testing. The system handles authentication (JWT, API keys, managed accounts), streaming responses with tool call detection, and multi-protocol request normalization. Architecturally, it is a Go backend with a React frontend (Vite + Tailwind). The backend is modular: protocol-specific handlers (OpenAI chat/responses, Claude messages, Gemini generate, Ollama chat) share a common prompt compatibility layer that normalizes requests to DeepSeek's internal format. A custom DeepSeek client manages authentication, PoW challenges, session lifecycle, and streaming. The SSE parsing infrastructure, tool call sieve, account pool, and config store are reusable components with extensive test coverage. Key data flows: incoming API requests are parsed and normalized to a unified prompt representation (role-tagged messages, tool descriptions, file references). The prompt is sent to DeepSeek's web chat API via a streaming or non-streaming completion runtime. Responses are parsed from SSE chunks, transformed (thinking extraction, tool call normalization, citation handling), and streamed back in the original protocol format. The system supports retry logic, account switching, and current input file injection for large contexts. External dependencies include DeepSeek's web chat API (reverse-engineered), Go standard library, chi router, utls for TLS fingerprinting, Node.js for Vercel streaming and WebUI build, and React/Vite for the frontend. The project is actively maintained with CI/CD pipelines, Docker images, and Vercel deployment support.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 6 reusable components found
── end of results ──
$ submit: