mirror of
https://github.com/decolua/9router.git
synced 2026-05-08 12:01:28 +00:00
156 lines
5.4 KiB
Markdown
156 lines
5.4 KiB
Markdown
# 🚀 9ROUTER
|
|
|
|
[](https://www.npmjs.com/package/9router)
|
|
[](https://github.com/yourusername/9router/blob/main/LICENSE)
|
|
|
|
AI endpoint proxy with web dashboard - A JavaScript port of [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
|
|
|
|

|
|
|
|
## 📖 Introduction
|
|
|
|
**9Router** is a powerful AI API proxy server that provides unified access to multiple AI providers through a single endpoint. It features automatic format translation, intelligent fallback routing, OAuth authentication, and a modern web dashboard for easy management.
|
|
|
|
**Key Highlights:**
|
|
- **JavaScript Port**: Converted from [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) (Go) to JavaScript/Node.js for better accessibility and easier deployment
|
|
- **Universal CLI Support**: Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, AmpCode, and other CLI tools
|
|
- **Cross-Platform**: Runs on Windows, Linux, and macOS
|
|
- **Easy Deployment**: Simple installation via npx, or deploy to VPS
|
|
|
|
## ✨ Features
|
|
|
|
### Core Features
|
|
- **🔄 Multi-Provider Support**: Unified endpoint for 15+ AI providers (Claude, OpenAI, Gemini, GitHub Copilot, Qwen, iFlow, DeepSeek, Kimi, MiniMax, GLM, etc.)
|
|
- **🔐 OAuth & API Key Authentication**: Supports both OAuth2 flow and API key authentication
|
|
- **🎯 Format Translation**: Automatic request/response translation between OpenAI, Claude, Gemini, Codex, and Ollama formats
|
|
- **🌐 Web Dashboard**: Beautiful React-based dashboard for managing providers, combos, API keys, and settings
|
|
- **📊 Usage Tracking**: Real-time monitoring and analytics for all API requests
|
|
|
|
### Advanced Features
|
|
- **🎲 Combo System**: Create model combos with automatic fallback support
|
|
- **♻️ Intelligent Fallback**: Automatic account rotation when rate limits or errors occur
|
|
- **⚡ Response Caching**: Optimized caching for Claude Code (1-hour cache vs default 5 minutes)
|
|
- **🔧 Model Aliases**: Create custom model aliases for easier management
|
|
- **🔍 WebSearch Hook**: Model-based web search integration for Claude Code CLI
|
|
- **☁️ Cloud Deployment**: Deploy to Cloud for Cursor IDE integration with global edge performance
|
|
|
|
### Format Support
|
|
- **OpenAI Format**: Standard OpenAI Chat Completions API
|
|
- **Claude Format**: Anthropic Messages API
|
|
- **Gemini Format**: Google Generative AI API
|
|
- **OpenAI Responses API**: Codex CLI format
|
|
- **Ollama Format**: Compatible with Ollama-based tools
|
|
|
|
### CLI Integration
|
|
- Works with: Claude Code, OpenAI Codex, Cline, RooCode, AmpCode, Cursor, and more
|
|
- Seamless integration with popular AI coding assistants
|
|
- WebSearch hook for enhanced Claude Code capabilities
|
|
|
|
## 📦 Install
|
|
|
|
```bash
|
|
# Run directly with npx (recommended)
|
|
npx 9router
|
|
|
|
# Or install globally
|
|
npm install -g 9router
|
|
9router
|
|
```
|
|
|
|
## 🚀 Quick Start
|
|
|
|
```bash
|
|
9router # Start server with default settings
|
|
9router --port 8080 # Custom port
|
|
9router --no-browser # Don't open browser
|
|
9router --skip-update # Skip auto-update check
|
|
9router --help # Show help
|
|
```
|
|
|
|
**Dashboard**: `http://localhost:20128/dashboard`
|
|
|
|
## 💾 Data Location
|
|
|
|
User data stored at:
|
|
- macOS/Linux: `~/.9router/db.json`
|
|
- Windows: `%APPDATA%/9router/db.json`
|
|
|
|
## 🛠️ Development
|
|
|
|
### Setup
|
|
```bash
|
|
# Clone repository
|
|
git clone https://github.com/yourusername/9router.git
|
|
cd 9router
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start development server
|
|
npm run dev
|
|
```
|
|
|
|
### Project Structure
|
|
```
|
|
9router/
|
|
├── bin/ # CLI entry point
|
|
│ ├── cli.js # Main CLI script
|
|
│ └── hooks/ # CLI hooks (WebSearch)
|
|
├── src/
|
|
│ ├── app/ # Next.js app (dashboard & API routes)
|
|
│ ├── lib/ # Core libraries (DB, OAuth, etc.)
|
|
│ ├── shared/ # Shared components & utilities
|
|
│ └── sse/ # SSE streaming handlers
|
|
├── open-sse/ # Core proxy engine (translator, handlers)
|
|
│ ├── translator/ # Format translators
|
|
│ ├── handlers/ # Request handlers
|
|
│ ├── services/ # Core services
|
|
│ └── config/ # Provider configurations
|
|
└── public/ # Static assets
|
|
```
|
|
|
|
## 📤 Build & Publish
|
|
|
|
```bash
|
|
# Build standalone binary
|
|
npm run build:standalone
|
|
|
|
# Test locally
|
|
npm link
|
|
9router --help
|
|
|
|
# Publish to npm
|
|
npm login
|
|
npm publish
|
|
```
|
|
|
|
## 🧰 Tech Stack
|
|
|
|
| Layer | Technology |
|
|
|-------|------------|
|
|
| **Runtime** | Node.js 20+ / Bun |
|
|
| **Framework** | Next.js 15 |
|
|
| **Dashboard** | React 19 + Tailwind CSS 4 |
|
|
| **Database** | LowDB (JSON file-based) |
|
|
| **CLI** | Node.js CLI with auto-update |
|
|
| **Streaming** | Server-Sent Events (SSE) |
|
|
| **Auth** | OAuth 2.0 (PKCE) + API Keys |
|
|
| **Deployment** | Standalone / VPS |
|
|
| **State Management** | Zustand |
|
|
|
|
### Core Libraries
|
|
- **lowdb**: Lightweight JSON database
|
|
- **undici**: High-performance HTTP client
|
|
- **uuid**: Unique identifier generation
|
|
- **open**: Cross-platform browser launcher
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
Special thanks to:
|
|
|
|
- **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**: The original Go implementation that inspired this project. 9Router is a JavaScript port with enhanced features and web dashboard.
|
|
|
|
## 📄 License
|
|
|
|
MIT License - see [LICENSE](LICENSE) for details.
|