[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11686":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},11686,"AIClient2API","justlovemaki\u002FAIClient2API","justlovemaki","Simulates Gemini CLI, Antigravity, Codex, Grok, and Kiro client requests, compatible with the OpenAI API. It supports thousands of Gemini model requests per day and offers free use of the built-in Claude model in Kiro. Easily connect to any client via the API, making AI development more efficient!",null,"https:\u002F\u002Fgithub.com\u002Fjustlovemaki\u002FAIClient2API","JavaScript",8205,1286,32,9,0,50,121,476,150,40.33,false,"main",[25,26],"aicoding","free","2026-06-12 02:02:33","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"src\u002Fimg\u002Flogo-mid.webp\" alt=\"logo\"  style=\"width: 128px; height: 128px;margin-bottom: 3px;\">\n\n# AIClient2API（A2）🚀\n\n**A powerful proxy that can unify the requests of various client-only large model APIs (Gemini CLI, Antigravity, Codex, Grok, Kiro ...), simulate requests, and encapsulate them into a local OpenAI-compatible interface.**\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable align=\"center\">\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth align=\"center\">Docker Downloads > 100k\u003C\u002Fth>\n      \u003Cth align=\"center\">Ranked #2 on Trendshift\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Cimg src=\"https:\u002F\u002Fdocker-card.justlikemaki.workers.dev\u002Fjustlikemaki\u002Faiclient-2-api?layout=compact&theme=github\" alt=\"AIClient2API\" style=\"width: 100%; max-width: 520px; height: 320px;object-fit: contain;\" \u002F>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F15832\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F15832\" alt=\"justlovemaki%2FAIClient-2-API | Trendshift\" style=\"width: 360px; height: 120px;\"\u002F>\u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n[![DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fjustlovemaki\u002FAIClient-2-API)\n[![License: GPL v3](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPLv3-blue.svg)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0)\n[![Node.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-≥20.0.0-green.svg)](https:\u002F\u002Fnodejs.org\u002F)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocker-≥20.0.0-blue.svg)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fjustlikemaki\u002Faiclient-2-api)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fjustlovemaki\u002FAIClient-2-API.svg?style=flat&label=Star)](https:\u002F\u002Fgithub.com\u002Fjustlovemaki\u002FAIClient-2-API\u002Fstargazers)\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fjustlovemaki\u002FAIClient-2-API.svg)](https:\u002F\u002Fgithub.com\u002Fjustlovemaki\u002FAIClient-2-API\u002Fissues)\n\n[**🔧 OpenClaw Config**](.\u002Fdocs\u002FOPENCLAW_CONFIG_GUIDE.md) | [中文](.\u002FREADME-ZH.md) | [**👉 English**](.\u002FREADME.md) | [日本語](.\u002FREADME-JA.md) | [**📚 Documentation**](https:\u002F\u002Faiproxy.justlikemaki.vip\u002Fen\u002F)\n\n\u003C\u002Fdiv>\n\n---\n\n\n## 💎 Sponsors\n\n*Sponsors are listed in chronological order; all are recommended for registration and use.*\n\n\u003Ctable width=\"100%\">\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fwww.packyapi.com\u002Fregister?aff=AIClient2API\">\n        \u003Cimg src=\"static\u002Fpackycode.png\" alt=\"PackyCode Sponsor\" width=\"180\">\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      PackyCode is a reliable and efficient API relay service provider, offering relay services for Claude Code, Codex, Gemini, and more. PackyCode provides special discounts for our software users: \u003Ca href=\"https:\u002F\u002Fwww.packyapi.com\u002Fregister?aff=AIClient2API\">register using this link\u003C\u002Fa> and enter the \u003Cstrong>AIClient2API\u003C\u002Fstrong> promo code during recharge to get \u003Cstrong>10% off\u003C\u002Fstrong>.\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fvisioncoder.com\">\n        \u003Cimg src=\"static\u002Fvisioncoder.png\" alt=\"VisionCoder Sponsor\" width=\"180\">\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      Thanks to VisionCoder for supporting this project. VisionCoder Developer Platform is a reliable and efficient API relay service provider, offering access to mainstream AI models such as Claude Code, Codex, and Gemini. It helps developers and teams integrate AI capabilities more easily and improve productivity. VisionCoder is also offering our users a limited-time \u003Ca href=\"https:\u002F\u002Fvisioncoder.com\">Token Plan\u003C\u002Fa> promotion: \u003Cstrong>buy 1 month and get 1 month free\u003C\u002Fstrong>.\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fwww.aicodemirror.com\u002Fregister?invitecode=5BUE62\">\n        \u003Cimg src=\"static\u002Faicodemirror.jpg\" alt=\"AICodeMirror Sponsor\" width=\"180\">\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      Thanks to AICodeMirror for sponsoring this project! AICodeMirror provides official high-stability relay services for Claude Code \u002F Codex \u002F Gemini CLI, with enterprise-grade concurrency, fast invoicing, and 24\u002F7 dedicated technical support. Claude Code \u002F Codex \u002F Gemini official channels at 38% \u002F 2% \u002F 9% of original price, with extra discounts on top-ups! AICodeMirror offers special benefits for AIClient2API users: \u003Ca href=\"https:\u002F\u002Fwww.aicodemirror.com\u002Fregister?invitecode=5BUE62\">register via this link\u003C\u002Fa> to enjoy \u003Cstrong>20% off\u003C\u002Fstrong> your first top-up, and enterprise customers can get up to 25% off!\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\n\u003C!--\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fpoixe.com\u002Fi\u002Febmvga\">\n        \u003Cimg src=\"static\u002Fpoixeai.png\" alt=\"Poixe AI Sponsor\" width=\"180\">\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      Poixe AI provides reliable LLM API services. You can leverage the platform's API endpoints to seamlessly build AI-powered products. Additionally, you can become a vendor by providing AI API resources to the platform and earn revenue. \u003Ca href=\"https:\u002F\u002Fpoixe.com\u002Fi\u002Febmvga\">Register through the exclusive AIClient2API referral link\u003C\u002Fa> and receive a bonus of \u003Cstrong>$5 USD\u003C\u002Fstrong> on your first top-up.\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n-->\n\u003C!--\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fwww.lingtrue.com\u002Fregister?aff=MP34\">\n        \u003Cimg src=\"static\u002Flingtrueapi.png\" alt=\"LingtrueAPI Sponsor\" width=\"180\">\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      Thanks to LingtrueAPI for its sponsorship of this project! LingtrueAPI is a global large-model API intermediary service platform that offers API calling services for various models such as Claude opus 4.6, GPT 5.4, and Gemini 3.1 pro. It is committed to enabling users to connect to global AI capabilities at low cost and with high stability, maximizing production efficiency. LingtrueAPI provides special discounts for users of this software: \u003Ca href=\"https:\u002F\u002Fwww.lingtrue.com\u002Fregister?aff=MP34\">register using this link\u003C\u002Fa> and enter the \u003Cstrong>LingtrueAPI\u003C\u002Fstrong> promo code when making the first recharge to enjoy a \u003Cstrong>10% discount\u003C\u002Fstrong>.\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n-->\n  \u003Ctr>\n    \u003Ctd width=\"25%\" align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"static\u002Fwechat.png\" alt=\"Sponsor Contact\" width=\"150\">\n    \u003C\u002Ftd>\n    \u003Ctd width=\"75%\" align=\"left\" valign=\"middle\">\n      \u003Cstrong>Become a Sponsor\u003C\u002Fstrong>\u003Cbr>\n      If you would like to sponsor this project, please scan the WeChat QR code on the left (Please state your intent: \u003Cstrong>Sponsorship\u003C\u002Fstrong>).\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## 🚀 Overview\n\n`AIClient2API` is an API proxy service that breaks through client limitations, converting free large models originally restricted to client use only (such as Gemini, Antigravity, Codex, Grok, Kiro) into standard OpenAI-compatible interfaces that can be called by any application. Built on Node.js, it supports intelligent conversion between OpenAI, Claude, and Gemini protocols, enabling tools like Cherry-Studio, NextChat, and Cline to freely use advanced models such as Claude Opus and Gemini Pro at scale. The project adopts a modular architecture based on strategy and adapter patterns, with built-in account pool management, intelligent polling, automatic failover, and health check mechanisms, ensuring 99.9% service availability.\n\n> [!NOTE]\n> **🎉 Important Milestone**\n>\n> - Thanks to Ruan Yifeng for the recommendation in [Weekly Issue 359](https:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2025\u002F08\u002Fweekly-issue-359.html)\n>\n> **📅 Version Update Log**\n> \n> \u003Cdetails>\n> \u003Csummary>Click to expand detailed version history\u003C\u002Fsummary>\n> \n> - **2026.05.04 (v3.0.0)** - **Milestone Update: Deep AI Integration & Self-Discovery Architecture**. Added automated Skill guides and remote `\u002Fapi\u002Fhelp`, `\u002Fapi\u002Fexample` endpoints, enabling AI agents to seamlessly understand and operate 50+ full API endpoints; achieved full unification of CLI and REST API output results with enhanced structured JSON support.\n> - **2026.04.29** - Comprehensive support for OpenAI standard Image Generation (`\u002Fv1\u002Fimages\u002Fgenerations`) and Image Editing (`\u002Fv1\u002Fimages\u002Fedits`) interfaces. Supports automatic conversion from OpenAI format to native image generation protocols of various models, fully compatible with provider pool polling and retry mechanisms, significantly improving the stability of multimodal creation.\n> - **2026.03.02** - Added Grok protocol support, supporting access to xAI Grok series models (Grok) via Cookie\u002FSSO, supporting multimodal input, image\u002Fvideo generation, automatic token refresh and streaming output\n> - **2026.01.26** - Added Codex protocol support: supports OpenAI Codex OAuth authorization access\n> - **2026.01.25** - Enhanced AI Monitor plugin: supports monitoring request parameters and responses before and after AI protocol conversion. Optimized log management: unified log format, visual configuration\n> - **2026.01.15** - Optimized provider pool manager: added async refresh queue mechanism, buffer queue deduplication, global concurrency control, node warmup and automatic expiry detection\n> > - **2026.01.03** - Added theme switching functionality and optimized provider pool initialization, removed the fallback strategy of using provider default configuration\n> - **2025.12.30** - Added main process management and automatic update functionality\n> - **2025.12.25** - Unified configuration management: All configs centralized to `configs\u002F` directory. Docker users need to update mount path to `-v \"local_path:\u002Fapp\u002Fconfigs\"`\n> - **2025.12.11** - Automatically built Docker images are now available on Docker Hub: [justlikemaki\u002Faiclient-2-api](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fjustlikemaki\u002Faiclient-2-api)\n> - **2025.11.30** - Added Antigravity protocol support, enabling access to Gemini Pro, Claude Sonnet, and other models via Google internal interfaces\n> - **2025.11.11** - Added Web UI management console, supporting real-time configuration management and health status monitoring\n> - **2025.11.06** - Added support for Gemini Preview, enhanced model compatibility and performance optimization\n> - **2025.10.18** - Kiro open registration, new accounts get 500 credits, full support for Claude Sonnet\n> - **2025.08.29** - Released account pool management feature, supporting multi-account polling, intelligent failover, and automatic degradation strategies\n>   - Configuration: Add `PROVIDER_POOLS_FILE_PATH` parameter in `configs\u002Fconfig.json`\n>   - Reference configuration: [provider_pools.json](.\u002Fconfigs\u002Fprovider_pools.json.example)\n> - **History Developed**\n>   - Support Gemini CLI, Kiro and other client2API\n>   - OpenAI, Claude, Gemini three-protocol mutual conversion, automatic intelligent switching\n> \u003C\u002Fdetails>\n\n---\n\n## 💡 Core Advantages\n\n### 🤖 AI-First, Agent Interaction Support\n\n> **AI-First Design**: This project natively supports efficient interaction with mainstream AI Agents such as OpenClaw, Hermes, and Claude Code.\n>\n> **💡 Quick Command**: You can tell the AI this sentence directly, and it will automatically master all usage of this project:\n>\n> - **Remote Deployment**:\n>   ```text\n>   Please load and learn the Skill in https:\u002F\u002Fraw.githubusercontent.com\u002Fjustlovemaki\u002FAIClient2API\u002Fmain\u002Fdocs\u002Fskills\u002Faiclient-cli-usage.md (Service Address: your actual domain or IP, Login Password: your actual password) to master all usage of AIClient2API.\n>   ```\n> - **Local Mode**:\n>   If you are running the AI agent directly in your local environment, just send:\n>   ```text\n>   Please load and learn the Skill in docs\u002Fskills\u002Faiclient-cli-usage.md to help me start, configure, and manage the AIClient2API service locally.\n>   ```\n\n### 🎯 Unified Access, One-Stop Management\n*   **Multi-Model Unified Interface**: Through standard OpenAI-compatible protocol, configure once to access mainstream large models including Gemini, Claude, Grok, Codex, Kimi, MiniMax\n*   **Flexible Switching Mechanism**: Path routing, support dynamic model switching via startup parameters or environment variables to meet different scenario requirements\n*   **Zero-Cost Migration**: Fully compatible with OpenAI API specifications, tools like Cherry-Studio, NextChat, Cline can be used without modification\n*   **Multi-Protocol Intelligent Conversion**: Support intelligent conversion between OpenAI, Claude, and Gemini protocols for cross-protocol model invocation\n\n### 🚀 Break Through Limitations, Improve Efficiency\n*   **Bypass Official Restrictions**: Utilize OAuth authorization mechanism to effectively break through rate and quota limits of services like Gemini, Antigravity\n*   **TLS Fingerprint Bypass**: Built-in TLS Sidecar (Go uTLS) to simulate browser features, effectively bypassing Cloudflare 403 blocks for services like Grok\n*   **Free Advanced Models**: Use Claude Opus for free via Kiro API mode, reducing usage costs\n*   **Intelligent Account Pool Scheduling**: Support multi-account polling, automatic failover, and configuration degradation, ensuring 99.9% service availability\n\n### 🛡️ Secure and Controllable, Data Transparent\n*   **Full-Chain Log Recording**: Capture all request and response data, supporting auditing and debugging\n*   **Private Dataset Construction**: Quickly build proprietary training datasets based on log data\n*   **System Prompt Management**: Support override and append modes, achieving perfect combination of unified base instructions and personalized extensions\n\n### 🔧 Developer-Friendly, Easy to Extend\n*   **Web UI Management Console**: Real-time configuration management, health status monitoring, API testing and log viewing\n*   **Modular Architecture**: Based on strategy and adapter patterns, adding new model providers requires only 3 steps\n*   **Complete Test Coverage**: Integration and unit test coverage 90%+, ensuring code quality\n*   **Containerized Deployment**: Provides Docker support, one-click deployment, cross-platform operation\n\n---\n\n## 📑 Quick Navigation\n\n- [💡 Core Advantages](#-core-advantages)\n- [🚀 Quick Start](#-quick-start)\n  - [🐳 Docker Deployment](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fjustlikemaki\u002Faiclient-2-api)\n  - [📋 Core Features](#-core-features)\n- [🔐 Authorization Configuration Guide](#-authorization-configuration-guide)\n- [📁 Authorization File Storage Paths](#-authorization-file-storage-paths)\n- [⚙️ Advanced Configuration](#advanced-configuration)\n- [❓ FAQ](#-faq)\n- [📄 Open Source License](#-open-source-license)\n- [🙏 Acknowledgements](#-acknowledgements)\n- [⚠️ Disclaimer](#️-disclaimer)\n\n---\n\n## 🔧 Usage Instructions\n\n### 🚀 Quick Start\n\nThe most recommended way to use AIClient2API is to start it through an automated script and configure it visually directly in the **Web UI console**.\n\n#### 🐳 Docker Quick Start (Recommended)\n\n```bash\ndocker run -d -p 3000:3000 -p 8085-8086:8085-8086 -p 1455:1455 -p 19876-19880:19876-19880 --restart=always -v \"your_path\u002Fconfigs:\u002Fapp\u002Fconfigs\" -v \"your_path\u002Fplugins:\u002Fapp\u002Fsrc\u002Fplugins-user\" --name aiclient2api justlikemaki\u002Faiclient-2-api\n```\n\n**Parameter Description**:\n- `-d`: Run container in background\n- `-p 3000:3000 ...`: Port mapping. 3000 is for Web UI, others are for OAuth callbacks (Gemini: 8085, Antigravity: 8086, Codex: 1455, Kiro: 19876-19880)\n- `--restart=always`: Container auto-restart policy\n- `-v \"your_path\u002Fconfigs:\u002Fapp\u002Fconfigs\"`: Mount configuration directory (replace \"your_path\" with actual path, e.g., `\u002Fhome\u002Fuser\u002Faiclient2api`)\n- `-v \"your_path\u002Fplugins:\u002Fapp\u002Fsrc\u002Fplugins-user\"`: Mount user plugins directory\n- `--name aiclient2api`: Container name\n\n#### 🐳 Docker Compose Deployment\n\nYou can also use Docker Compose for deployment. First, navigate to the `docker` directory:\n\n```bash\ncd docker\nmkdir -p configs\ndocker compose up -d\n```\n\nTo build from source instead of using the pre-built image, edit `docker-compose.yml`:\n1. Comment out the `image: justlikemaki\u002Faiclient-2-api:latest` line\n2. Uncomment the `build:` section\n3. Run `docker compose up -d --build`\n\n#### 1. Run the startup script\n*   **Linux\u002FmacOS**: `chmod +x install-and-run.sh && .\u002Finstall-and-run.sh`\n*   **Windows**: Double-click `install-and-run.bat`\n\n> **💡 Manual installation and startup (supports custom parameters):**\n> ```bash\n> npm install\n> # Default startup\n> npm start\n> # Show help information\n> npm run help\n> # Show API calling examples\n> npm run example:api\n> # Backend-only mode (disable frontend management UI)\n> npm start -- --no-ui\n> ```\n\n#### 2. Access the console\nAfter the server starts, open your browser and visit:\n👉 [**http:\u002F\u002Flocalhost:3000**](http:\u002F\u002Flocalhost:3000)\n\n> **Default Password**: `admin123` (can be changed in the console or by modifying the `pwd` file after login)\n\n#### 3. Visual Configuration (Recommended)\nGo to the **\"Configuration\"** page, you can:\n*   ✅ Fill in the API Key for each provider or upload OAuth credential files\n*   ✅ Switch default model providers in real-time\n*   ✅ Monitor health status and real-time request logs\n\n#### 4. Local Environment Preparation (Non-Docker Users)s\nIf you are running directly on your local machine (via script or Node.js) and need to bypass TLS detection for services like Grok, please ensure:\n*   ✅ **Install Go Language**: Go to the [official Go website](https:\u002F\u002Fgo.dev\u002F) to download and install (1.20+).\n*   ✅ **Manually Compile Sidecar**: Execute the following command to compile the TLS proxy component:\n    ```bash\n    cd tls-sidecar && go build -o tls-sidecar && cd ..\n    ```\n    *Note: If this binary file is not compiled, the TLS Sidecar feature will fail to start as it cannot find the executable.*\n\n#### Script Execution Example\n```\n========================================\n  AI Client 2 API Quick Install Script\n========================================\n\n[Check] Checking if Node.js is installed...\n✅ Node.js is installed, version: v20.10.0\n✅ Found package.json file\n✅ node_modules directory already exists\n✅ Project file check completed\n\n========================================\n  Starting AI Client 2 API Server...\n========================================\n\n🌐 Server will start on http:\u002F\u002Flocalhost:3000\n📖 Visit http:\u002F\u002Flocalhost:3000 to view management interface\n⏹️  Press Ctrl+C to stop server\n```\n\n> **💡 Tip**: The script will automatically install dependencies and start the server. If you encounter any issues, the script provides clear error messages and suggested solutions.\n\n---\n\n### 📋 Core Features\n\n#### Web UI Management Console\n\n![Web UI](src\u002Fimg\u002Fen.png)\n\nA functional Web management interface, including:\n\n**📊 Dashboard**: System overview, interactive routing examples, client configuration guide\n\n**⚙️ Configuration**: Real-time parameter modification, supporting all providers (Gemini, Antigravity, OpenAI, Claude, Kiro), including advanced settings and file uploads\n\n**🔗 Provider Pools**: Monitor active connections, provider health statistics, enable\u002Fdisable management\n\n**📁 Config Files**: Centralized OAuth credential management, supporting search filtering and file operations\n\n**📜 Real-time Logs**: Real-time display of system and request logs, with management controls\n\n**🔐 Login Verification**: Default password `admin123`, can be modified via `pwd` file\n\nAccess: `http:\u002F\u002Flocalhost:3000` → Login → Sidebar navigation → Take effect immediately\n\n#### Multimodal Input Capabilities\nSupports various input types such as images and documents, providing you with a richer interaction experience and more powerful application scenarios.\n\n#### Latest Model Support\nSeamlessly support the following latest large models, just configure the corresponding endpoint in Web UI or [`configs\u002Fconfig.json`](.\u002Fconfigs\u002Fconfig.json):\n*   **Grok** - xAI's flagship models, now supported via Grok Cookie\u002FSSO, supporting thinking models, image generation, and video generation\n*   **Claude Opus** - Anthropic's strongest model ever, now supported via Kiro, Antigravity\n*   **Gemini Pro** - Google's next-generation architecture preview, now supported via Gemini, Antigravity\n*   **Kimi \u002F MiniMax** - Synchronized support for top domestic flagship models, now supported via custom OpenAI, Claude\n\n---\n\n### 🔐 Authorization Configuration Guide\n\n\u003Cdetails>\n\u003Csummary>Click to expand detailed authorization configuration steps for each provider\u003C\u002Fsummary>\n\n> **💡 Tip**: For the best experience, it is recommended to manage authorization visually through the **Web UI console**.\n\n#### 🌐 Web UI Quick Authorization (Recommended)\nIn the Web UI management interface, you can complete authorization configuration rapidly:\n1. **Generate Authorization**: On the **\"Provider Pools\"** page or **\"Configuration\"** page, click the **\"Generate Authorization\"** button in the upper right corner of the corresponding provider (e.g., Gemini).\n2. **Scan\u002FLogin**: An authorization dialog will pop up, you can click **\"Open in Browser\"** for login verification. For Gemini and Antigravity, complete the Google account authorization.\n3. **Auto-Save**: After successful authorization, the system will automatically obtain credentials and save them to the corresponding directory in `configs\u002F`. You can see the newly generated credentials on the **\"Config Files\"** page.\n4. **Visual Management**: You can upload or delete credentials at any time in the Web UI, or use the **\"Quick Associate\"** function to bind existing credential files to providers with one click.\n\n#### Gemini CLI OAuth Configuration\n1. **Obtain OAuth Credentials**: Visit [Google Cloud Console](https:\u002F\u002Fconsole.cloud.google.com\u002F) to create a project and enable Gemini API\n2. **Project Configuration**: You may need to provide a valid Google Cloud project ID, which can be specified via the startup parameter `--project-id`\n3. **Ensure Project ID**: When configuring in the Web UI, ensure the project ID entered matches the project ID displayed in the Google Cloud Console and Gemini CLI.\n\n#### Antigravity OAuth Configuration\n1. **Personal Account**: Personal accounts require separate authorization, application channels have been closed.\n2. **Pro Member**: Antigravity is temporarily open to Pro members, you need to purchase a Pro membership first.\n3. **Organization Account**: Organization accounts require separate authorization, contact the administrator to obtain authorization.\n\n#### Kiro API Configuration\n1. **Environment Preparation**: [Download and install Kiro client](https:\u002F\u002Fkiro.dev\u002Fpricing\u002F)\n2. **Complete Authorization**: Log in to your account in the client to generate `kiro-auth-token.json` credential file\n3. **Best Practice**: Recommended to use with **Claude Code** for optimal experience\n4. **Important Notice**: Kiro service usage policy has been updated, please visit the official website for the latest usage restrictions and terms\n\n#### Kiro Extended Thinking (Claude Models)\nAIClient2API supports Kiro extended thinking when using Claude-compatible requests (`\u002Fv1\u002Fmessages`) or OpenAI-compatible requests (`\u002Fv1\u002Fchat\u002Fcompletions`) routed to `claude-kiro-oauth`.\n\n**Claude-compatible (`\u002Fv1\u002Fmessages`)**:\n```bash\ncurl http:\u002F\u002Flocalhost:3000\u002Fclaude-kiro-oauth\u002Fv1\u002Fmessages \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer your-api-key\" \\\n  -d '{\n    \"model\": \"claude-sonnet-4-5\",\n    \"max_tokens\": 1024,\n    \"thinking\": { \"type\": \"enabled\", \"budget_tokens\": 10000 },\n    \"messages\": [{ \"role\": \"user\", \"content\": \"Solve this step by step.\" }]\n  }'\n```\n\n**OpenAI-compatible (`\u002Fv1\u002Fchat\u002Fcompletions`)**:\n```bash\ncurl http:\u002F\u002Flocalhost:3000\u002Fclaude-kiro-oauth\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer your-api-key\" \\\n  -d '{\n    \"model\": \"claude-sonnet-4-5\",\n    \"messages\": [{ \"role\": \"user\", \"content\": \"Solve this step by step.\" }],\n    \"extra_body\": {\n      \"anthropic\": {\n        \"thinking\": { \"type\": \"enabled\", \"budget_tokens\": 10000 }\n      }\n    }\n  }'\n```\n\n**Adaptive mode**:\n- Claude: `\"thinking\": { \"type\": \"adaptive\", \"effort\": \"high\" }`\n- OpenAI: `\"extra_body.anthropic.thinking\": { \"type\": \"adaptive\", \"effort\": \"high\" }`\n\nNotes:\n- `budget_tokens` is clamped to `[1024, 24576]` (default `20000` if omitted\u002Finvalid).\n- Token acquisition\u002Frefresh\u002Fpool rotation is unchanged.\n\n#### Codex OAuth Configuration\n1. **Generate Authorization**: On the Web UI \"Provider Pools\" or \"Configuration\" page, click the \"Generate Authorization\" button for Codex\n2. **Browser Login**: The system opens the OpenAI Codex authorization page to complete OAuth login\n3. **Auto Save**: After successful authorization, the system automatically saves the Codex OAuth credential file\n4. **Callback Port**: Ensure the OAuth callback port `1455` is not occupied\n\n#### Grok Cookie\u002FSSO Configuration\n1. **Obtain SSO Token**: Log in to the [Grok official website](https:\u002F\u002Fgrok.com\u002F), copy the value of `sso` from Application -> Cookies in browser developer tools\n2. **Enter Configuration**: In the Web UI \"Configuration\" page or directly modify the configuration file, enter the token into `GROK_COOKIE_TOKEN`\n3. **Supported Features**:\n   - Chat and Thinking models (Grok Thinking)\n   - Image generation (Grok Imagine)\n   - Video generation (Grok Video)\n4. **Notes**: Ensure `GROK_USER_AGENT` matches the browser used when obtaining the cookie to avoid being blocked\n\n#### Account Pool Management Configuration\n1. **Create Pool Configuration File**: Create a configuration file referencing [provider_pools.json.example](.\u002Fconfigs\u002Fprovider_pools.json.example)\n2. **Configure Pool Parameters**: Set `PROVIDER_POOLS_FILE_PATH` in `configs\u002Fconfig.json` to point to the pool configuration file\n3. **Startup Parameter Configuration**: Use the `--provider-pools-file \u003Cpath>` parameter to specify the pool configuration file path\n4. **Health Check**: The system will automatically perform periodic health checks and avoid using unhealthy providers\n\n\u003C\u002Fdetails>\n\n### 📁 Authorization File Storage Paths\n\n\u003Cdetails>\n\u003Csummary>Click to expand default storage locations for authorization credentials\u003C\u002Fsummary>\n\nDefault storage locations for authorization credential files of each service:\n\n| Service | Default Path | Description |\n|------|---------|------|\n| **Gemini** | `~\u002F.gemini\u002Foauth_creds.json` | OAuth authentication credentials |\n| **Kiro** | `~\u002F.aws\u002Fsso\u002Fcache\u002Fkiro-auth-token.json` | Kiro authentication token |\n| **Antigravity** | `~\u002F.antigravity\u002Foauth_creds.json` | Antigravity OAuth credentials (supports Claude Opus) |\n| **Codex** | `~\u002F.codex\u002Foauth_creds.json` | Codex OAuth credentials |\n\n> **Note**: `~` represents the user home directory (Windows: `C:\\Users\\username`, Linux\u002FmacOS: `\u002Fhome\u002Fusername` or `\u002FUsers\u002Fusername`)\n\n> **Custom Path**: Can specify custom storage location via relevant parameters in configuration file or environment variables\n\n\u003C\u002Fdetails>\n\n---\n\n### Advanced Configuration\n\n\u003Cdetails>\n\u003Csummary>Click to expand proxy configuration, model filtering, and Fallback advanced settings\u003C\u002Fsummary>\n\n#### 1. Proxy Configuration\n\nThis project supports flexible proxy configuration, allowing you to configure a unified proxy for different providers or use provider-specific proxied endpoints.\n\n**Configuration Methods**:\n\n1. **Web UI Configuration** (Recommended): Convenient configuration management\n\n  In the \"Configuration\" page of the Web UI, you can visually configure all proxy options:\n  - **Unified Proxy**: Fill in the proxy address in the \"Proxy Settings\" area and check the providers that need to use the proxy\n  - **Provider Endpoints**: In each provider's configuration area, directly modify the Base URL to a proxied endpoint\n  - **Click \"Save Configuration\"**: Takes effect immediately without restarting the service\n\n2. **Unified Proxy Configuration**: Configure a global proxy and specify which providers use it\n\n   - **Web UI Configuration**: Fill in the proxy address in the \"Proxy Settings\" area of the \"Configuration\" page and check the providers that need to use the proxy\n   - **Configuration File**: Configure in `configs\u002Fconfig.json`\n   ```json\n   {\n     \"PROXY_URL\": \"http:\u002F\u002F127.0.0.1:7890\",\n      \"PROXY_ENABLED_PROVIDERS\": [\n        \"gemini-cli-oauth\",\n        \"gemini-antigravity\",\n        \"claude-kiro-oauth\",\n        \"grok-web\"\n      ]\n    }\n    ```\n\n\n3. **Provider-Specific Proxied Endpoints**: Some providers (like OpenAI, Claude) support configuring proxied API endpoints\n\n   - **Web UI Configuration**: In each provider's configuration area on the \"Configuration\" page, modify the corresponding Base URL\n   - **Configuration File**: Configure in `configs\u002Fconfig.json`\n   ```json\n   {\n     \"OPENAI_BASE_URL\": \"https:\u002F\u002Fyour-proxy-endpoint.com\u002Fv1\",\n     \"CLAUDE_BASE_URL\": \"https:\u002F\u002Fyour-proxy-endpoint.com\"\n   }\n   ```\n\n**Supported Proxy Types**:\n- **HTTP Proxy**: `http:\u002F\u002F127.0.0.1:7890`\n- **HTTPS Proxy**: `https:\u002F\u002F127.0.0.1:7890`\n- **SOCKS5 Proxy**: `socks5:\u002F\u002F127.0.0.1:1080`\n\n**Use Cases**:\n- **Network-Restricted Environments**: Use in network environments where Google, OpenAI, and other services cannot be accessed directly\n- **Hybrid Configuration**: Some providers use unified proxy, others use their own proxied endpoints\n- **Flexible Switching**: Enable\u002Fdisable proxy for specific providers at any time in the Web UI\n\n**Notes**:\n- Proxy configuration priority: Unified proxy configuration > Provider-specific endpoints > Direct connection\n- Ensure the proxy service is stable and available, otherwise it may affect service quality\n- SOCKS5 proxy usually performs better than HTTP proxy\n\n#### 2. Model Filtering Configuration\n\nSupport excluding unsupported models through `notSupportedModels` configuration, the system will automatically skip these providers.\n\n**Configuration**: Add `notSupportedModels` field for providers in `configs\u002Fprovider_pools.json`:\n\n```json\n{\n  \"gemini-cli-oauth\": [\n    {\n      \"uuid\": \"provider-1\",\n      \"notSupportedModels\": [\"gemini-3.0-pro\", \"gemini-3.5-flash\"],\n      \"checkHealth\": true\n    }\n  ]\n}\n```\n\n**How It Works**:\n- When requesting a specific model, the system automatically filters out providers that have configured the model as unsupported\n- Only providers that support the model will be selected to handle the request\n\n**Use Cases**:\n- Some accounts cannot access specific models due to quota or permission restrictions\n- Need to assign different model access permissions to different accounts\n\n#### 3. Cross-Type Fallback Configuration\n\nWhen all accounts under a Provider Type (e.g., `gemini-cli-oauth`) are exhausted due to 429 quota limits or marked as unhealthy, the system can automatically fallback to another compatible Provider Type (e.g., `gemini-antigravity`) instead of returning an error directly.\n\n**Configuration**: Add `providerFallbackChain` configuration in `configs\u002Fconfig.json`:\n\n```json\n{\n  \"providerFallbackChain\": {\n    \"gemini-cli-oauth\": [\"gemini-antigravity\"],\n    \"gemini-antigravity\": [\"gemini-cli-oauth\"],\n    \"claude-kiro-oauth\": [\"claude-custom\"],\n    \"claude-custom\": [\"claude-kiro-oauth\"]\n  }\n}\n```\n\n**How It Works**:\n1. Try to select a healthy account from the primary Provider Type pool\n2. If all accounts in that type are unhealthy or return 429:\n   - Look up the configured fallback types\n   - Check if the fallback type supports the requested model (protocol compatibility check)\n   - Select a healthy account from the fallback type's pool\n3. Supports multi-level degradation chains: `gemini-cli-oauth → gemini-antigravity → openai-custom`\n4. Only returns an error if all fallback types are also unavailable\n\n**Use Cases**:\n- In batch task scenarios, the free RPD quota of a single Provider Type can be easily exhausted in a short time\n- Through cross-type Fallback, you can fully utilize the independent quotas of multiple Providers, improving overall availability and throughput\n\n**Notes**:\n- Fallback only occurs between protocol-compatible types (e.g., between `gemini-*`, between `claude-*`)\n- The system automatically checks if the target Provider Type supports the requested model\n\n#### 4. TLS Sidecar (Bypass 403\u002FCloudflare)\n\nFor services like Grok that strictly validate TLS fingerprints (JA3\u002FJA4), this project integrates a Sidecar proxy based on Go uTLS, which effectively solves 403 Forbidden errors by simulating browser TLS features.\n\n**Configuration Instructions**:\n\n1.  **Compile the Binary**:\n    Since TLS simulation requires Go language support, you need to compile the sidecar first:\n    ```bash\n    cd tls-sidecar\n    go build -o tls-sidecar\n    ```\n    *Windows users, after compiling, ensure the generated `tls-sidecar.exe` is located in the `tls-sidecar\u002F` or the root directory.*\n\n2.  **Enable Configuration**:\n    Enable **TLS Sidecar** in the \"Configuration\" page of the Web UI, or modify `configs\u002Fconfig.json`:\n    ```json\n    {\n      \"TLS_SIDECAR_ENABLED\": true,\n      \"TLS_SIDECAR_PORT\": 9090\n    }\n    ```\n\n3.  **How It Works**:\n    - When enabled, the system automatically starts and manages the Go process.\n    - Requests for specific providers (like Grok) are automatically routed to the Sidecar.\n    - The Sidecar uses the latest Chrome fingerprint for TLS handshakes and supports automatic HTTP\u002F2 negotiation.\n\n**Notes**:\n- Local running requires a Go environment (1.20+).\n- **Docker Users**: The image already includes the pre-compiled binary; just enable it in the configuration, no manual compilation required.\n\n\u003C\u002Fdetails>\n\n---\n\n## ❓ FAQ\n\n\u003Cdetails>\n\u003Csummary>Click to expand FAQ and solutions (port occupation, Docker startup, 429 errors, etc.)\u003C\u002Fsummary>\n\n### 1. OAuth Authorization Failed\n\n**Problem Description**: After clicking \"Generate Authorization\", the browser opens the authorization page but authorization fails or cannot be completed.\n\n**Solutions**:\n- **Check Network Connection**: Ensure you can access Google, Alibaba Cloud, and other services normally\n- **Check Port Occupation**: OAuth callbacks require specific ports (Gemini: 8085, Antigravity: 8086, Codex: 1455, Kiro: 19876-19880), ensure these ports are not occupied\n- **Clear Browser Cache**: Try using incognito mode or clearing browser cache and retry\n- **Check Firewall Settings**: Ensure the firewall allows access to local callback ports\n- **Docker Users**: Ensure all OAuth callback ports are correctly mapped\n\n### 2. Port Already in Use\n\n**Problem Description**: When starting the service, it shows the port is already in use (e.g., `EADDRINUSE`).\n\n**Solutions**:\n```bash\n# Windows - Find the process occupying the port\nnetstat -ano | findstr :3000\n# Then use Task Manager to end the corresponding PID process\n\n# Linux\u002FmacOS - Find and end the process occupying the port\nlsof -i :3000\nkill -9 \u003CPID>\n```\n\nOr modify the port configuration in `configs\u002Fconfig.json` to use a different port.\n\n### 3. Docker Container Won't Start\n\n**Problem Description**: Docker container fails to start or exits immediately.\n\n**Solutions**:\n- **Check Logs**: `docker logs aiclient2api` to view error messages\n- **Check Mount Path**: Ensure the local path in the `-v` parameter exists and has read\u002Fwrite permissions\n- **Check Port Conflicts**: Ensure all mapped ports are not occupied on the host\n- **Re-pull Image**: `docker pull justlikemaki\u002Faiclient-2-api:latest`\n\n### 4. Credential File Not Recognized\n\n**Problem Description**: After uploading or configuring credential files, the system shows it cannot be recognized or format error.\n\n**Solutions**:\n- **Check File Format**: Ensure the credential file is valid JSON format\n- **Check File Path**: Ensure the file path is correct, Docker users need to ensure the file is in the mounted directory\n- **Check File Permissions**: Ensure the service has permission to read the credential file\n- **Regenerate Credentials**: If credentials have expired, try re-authorizing via OAuth\n\n### 5. Request Returns 429 Error\n\n**Problem Description**: API requests frequently return 429 Too Many Requests error.\n\n**Solutions**:\n- **Configure Account Pool**: Add multiple accounts to `provider_pools.json`, enable polling mechanism\n- **Configure Fallback**: Configure `providerFallbackChain` in `config.json` for cross-type degradation\n- **Enable 429 Cooldown**: Set `RATE_LIMIT_COOLDOWN_ENABLED` to `true` and tune `RATE_LIMIT_COOLDOWN_MS` so rate-limited accounts temporarily leave the pool and recover automatically\n- **Reduce Request Frequency**: Appropriately increase request intervals to avoid triggering rate limits\n- **Wait for Quota Reset**: Free quotas usually reset daily or per minute\n\n### 6. Model Unavailable or Returns Error\n\n**Problem Description**: When requesting a specific model, it returns an error or shows the model is unavailable.\n\n**Solutions**:\n- **Check Model Name**: Ensure you're using the correct model name (case-sensitive)\n- **Check Provider Support**: Confirm the currently configured provider supports that model\n- **Check Account Permissions**: Some advanced models may require specific account permissions\n- **Configure Model Filtering**: Use `notSupportedModels` to exclude unsupported models\n\n### 7. Web UI Cannot Be Accessed\n\n**Problem Description**: Browser cannot open `http:\u002F\u002Flocalhost:3000`.\n\n**Solutions**:\n- **Check Service Status**: Confirm the service has started successfully, check terminal output\n- **Check Port Mapping**: Docker users ensure `-p 3000:3000` parameter is correct\n- **Try Other Address**: Try accessing `http:\u002F\u002F127.0.0.1:3000`\n- **Check Firewall**: Ensure the firewall allows access to port 3000\n\n### 8. Streaming Response Interrupted\n\n**Problem Description**: When using streaming output, the response is interrupted midway or incomplete.\n\n**Solutions**:\n- **Check Network Stability**: Ensure network connection is stable\n- **Increase Timeout**: Increase request timeout in client configuration\n- **Check Proxy Settings**: If using a proxy, ensure the proxy supports long connections\n- **Check Service Logs**: Check for error messages\n\n### 9. Configuration Changes Not Taking Effect\n\n**Problem Description**: After modifying configuration in Web UI, service behavior doesn't change.\n\n**Solutions**:\n- **Refresh Page**: Refresh the Web UI page after modification\n- **Check Save Status**: Confirm the configuration was saved successfully (check prompt messages)\n- **Restart Service**: Some configurations may require service restart to take effect\n- **Check Configuration File**: Directly check `configs\u002Fconfig.json` to confirm changes were written\n\n### 10. API Returns 404\n\n**Solutions**:\n- **Check Endpoint Path**: Ensure you're using the correct endpoint path, such as `\u002Fv1\u002Fchat\u002Fcompletions` etc.\n- **Check Client Auto-completion**: Some clients (like Cherry-Studio, NextChat) automatically append paths (like `\u002Fv1\u002Fchat\u002Fcompletions`) after the Base URL, causing path duplication. Check the actual request URL in the console and remove redundant path parts\n- **Check Service Status**: Confirm the service has started normally, visit `http:\u002F\u002Flocalhost:3000` to view Web UI\n- **Check Port Configuration**: Ensure requests are sent to the correct port (default 3000)\n- **View Available Routes**: Check \"Interactive Routing Examples\" on the Web UI dashboard page to see all available endpoints\n\n### 11. Unauthorized: API key is invalid or missing\n\n**Problem Description**: When calling API endpoints, it returns `Unauthorized: API key is invalid or missing.` error.\n\n**Solutions**:\n- **Check API Key Configuration**: Ensure API Key is correctly configured in `configs\u002Fconfig.json` or Web UI\n- **Check Request Header Format**: Ensure the request contains the correct Authorization header format, such as `Authorization: Bearer your-api-key`\n- **Check Service Logs**: View detailed error messages on the \"Real-time Logs\" page in Web UI to locate the specific cause\n\n### 12. No available and healthy providers for type\n\n**Problem Description**: When calling API, it returns `No available and healthy providers for type xxx` error.\n\n**Solutions**:\n- **Check Provider Status**: Check if providers of the corresponding type are in healthy status on the \"Provider Pools\" page in Web UI\n- **Check Credential Validity**: Confirm OAuth credentials have not expired; if expired, regenerate authorization\n- **Check Quota Limits**: Some providers may have reached free quota limits; wait for quota reset or add more accounts\n- **Enable Fallback**: Configure `providerFallbackChain` in `config.json` to automatically switch to backup providers when the primary provider is unavailable\n- **View Detailed Logs**: Check specific health check failure reasons on the \"Real-time Logs\" page in Web UI\n\n### 13. Request Returns 403 Forbidden Error\n\n**Problem Description**: API requests return 403 Forbidden error.\n\n**Solutions**:\n- **Enable TLS Sidecar**: For services like Grok, 403 is often due to TLS fingerprint blocking. Please refer to [Advanced Configuration - TLS Sidecar](#5-tls-sidecar-bypass-403cloudflare) to enable and compile the Sidecar.\n- **Check Node Status**: If you see the node status is normal (health check passed) on the \"Provider Pools\" page in Web UI, you can ignore this error as the system will handle it automatically\n- **Check Account Permissions**: Confirm the account has permission to access the requested model or service\n- **Check API Key Permissions**: Some providers' API Keys may have access scope restrictions; ensure the Key has sufficient permissions\n- **Check Regional Restrictions**: Some services may have regional access restrictions; try using a proxy or VPN\n- **Check Credential Status**: OAuth credentials may have been revoked or expired; try regenerating authorization\n- **Check Request Frequency**: Some providers have strict request frequency limits; reduce request frequency and retry\n- **View Provider Documentation**: Visit the official documentation of the corresponding provider to understand specific access restrictions and requirements\n\n### 14. Why should I enable \"OAuth Token Auto-Refresh\"?\n\n**Problem Description**: Unsure if token auto-refresh is necessary.\n\n**Solution**:\nOAuth tokens (e.g., Gemini, Antigravity, Codex) typically have a limited lifespan (e.g., 1 hour).\n- **With it enabled**: The system automatically checks and refreshes tokens before they expire in the background. This ensures 24\u002F7 stable API service and avoids `401 Unauthorized` or `403 Forbidden` errors due to expired tokens.\n- **Without it**: Once a token expires, the system cannot automatically obtain a new one, causing API requests to fail until you manually re-authorize.\n\n### 15. What is the impact of not enabling \"Preload Model Providers\" on token maintenance?\n\n**Problem Description**: Confusion about the \"Preload Model Providers\" configuration and its relation to token refresh.\n\n**Solution**:\nThe system only performs auto-refresh tasks for providers that are **loaded into the active pool**.\n- **Impact**: If a provider is not checked as a \"Preload Model Provider\" in the configuration, it won't be initialized when the system starts. Since it's not in the pool, the background refresh task will **not** process its token.\n- **Consequence**: If you don't use that provider for a long time, its token will expire silently. When you eventually call it via a specific route, the request will fail due to the expired token.\n- **Recommendation**: Always check providers you intend to use frequently and need to keep active in the \"Preload Model Providers\" list.\n\n\u003C\u002Fdetails>\n\n---\n\n## 📄 Open Source License\n\nThis project follows the [**GNU General Public License v3 (GPLv3)**](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0) license. For details, please check the `LICENSE` file in the root directory.\n\n## 🙏 Acknowledgements\n\nThe development of this project was greatly inspired by the official Google Gemini CLI and referenced part of the code implementation of `gemini-cli.ts` in Cline 3.18.0. Sincere thanks to the Google official team and the Cline development team for their excellent work!\n\n### Contributor List\n\nThanks to all the developers who contributed to the AIClient2API project:\n\n[![Contributors](https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=justlovemaki\u002FAIClient-2-API)](https:\u002F\u002Fgithub.com\u002Fjustlovemaki\u002FAIClient-2-API\u002Fgraphs\u002Fcontributors)\n\n\n### 🌟 Star History\n\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=justlovemaki\u002FAIClient-2-API&type=Timeline)](https:\u002F\u002Fwww.star-history.com\u002F#justlovemaki\u002FAIClient-2-API&Timeline)\n\n---\n\n## ⚠️ Disclaimer\n\n### Usage Risk Warning\nThis project (AIClient2API) is for learning and research purposes only. Users assume all risks when using this project. The author is not responsible for any direct, indirect, or consequential losses resulting from the use of this project.\n\n### Third-Party Service Responsibility Statement\nThis project is an API proxy tool and does not provide any AI model services. All AI model services are provided by their respective third-party providers (such as Google, OpenAI, Anthropic, etc.). Users should comply with the terms of service and policies of each third-party service when accessing them through this project. The author is not responsible for the availability, quality, security, or legality of third-party services.\n\n### Data Privacy Statement\nThis project runs locally and does not collect or upload any user data. However, users should protect their API keys and other sensitive information when using this project. It is recommended that users regularly check and update their API keys and avoid using this project in insecure network environments.\n\n### Legal Compliance Reminder\nUsers should comply with the laws and regulations of their country\u002Fregion when using this project. It is strictly prohibited to use this project for any illegal purposes. Any consequences resulting from users' violation of laws and regulations shall be borne by the users themselves.\n","AIClient2API 是一个强大的代理工具，能够统一各种客户端大型模型 API（如 Gemini CLI、Antigravity、Codex、Grok 和 Kiro）的请求，并将其封装成与 OpenAI API 兼容的本地接口。该项目支持每天数千次 Gemini 模型请求，并免费提供内置的 Claude 模型使用。通过简单的 API 连接，开发人员可以更高效地进行 AI 开发。该工具特别适用于需要跨多个 AI 服务进行集成和测试的场景，简化了不同平台之间的切换过程。基于 JavaScript 构建，易于部署且兼容 Docker 环境。",2,"2026-06-11 03:32:18","trending"]