diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..b6cd76b --- /dev/null +++ b/README.en.md @@ -0,0 +1,1444 @@ +
+ 9Router Dashboard + + # 9Router - FREE AI Router & Token Saver + + **Never stop coding. Save 20-40% tokens with RTK + auto-fallback to FREE & cheap AI models.** + + **Connect All AI Code Tools (Claude Code, Cursor, Antigravity, Copilot, Codex, Gemini, OpenCode, Cline, OpenClaw...) to 40+ AI Providers & 100+ Models.** + + [![npm](https://img.shields.io/npm/v/9router.svg)](https://www.npmjs.com/package/9router) + [![Downloads](https://img.shields.io/npm/dm/9router.svg)](https://www.npmjs.com/package/9router) + [![Docker Pulls](https://img.shields.io/docker/pulls/decolua/9router.svg?logo=docker&label=Docker%20pulls)](https://hub.docker.com/r/decolua/9router) + [![GHCR](https://img.shields.io/badge/GHCR-decolua%2F9router-blue?logo=github)](https://github.com/decolua/9router/pkgs/container/9router) + [![License](https://img.shields.io/npm/l/9router.svg)](https://github.com/decolua/9router/blob/main/LICENSE) + +decolua%2F9router | Trendshift + +[๐Ÿš€ Quick Start](#-quick-start) โ€ข [๐Ÿ’ก Features](#-key-features) โ€ข [๐Ÿ“– Setup](#-setup-guide) โ€ข [๐ŸŒ Website](https://9router.com) + +[๐Ÿ‡ป๐Ÿ‡ณ Tiแบฟng Viแป‡t](./i18n/README.vi.md) โ€ข [๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡](./i18n/README.zh-CN.md) โ€ข [๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž](./i18n/README.ja-JP.md) โ€ข [๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน](./i18n/README.ru.md) + +
+ +--- + +## ๐Ÿค” Why 9Router? + +**Stop wasting money, tokens and hitting limits:** + +- โŒ Subscription quota expires unused every month +- โŒ Rate limits stop you mid-coding +- โŒ Tool outputs (git diff, grep, ls...) burn tokens fast +- โŒ Expensive APIs ($20-50/month per provider) +- โŒ Manual switching between providers + +**9Router solves this:** + +- โœ… **RTK Token Saver** - Auto-compress tool_result content, save 20-40% tokens per request +- โœ… **Maximize subscriptions** - Track quota, use every bit before reset +- โœ… **Auto fallback** - Subscription โ†’ Cheap โ†’ Free, zero downtime +- โœ… **Multi-account** - Round-robin between accounts per provider +- โœ… **Universal** - Works with Claude Code, Codex, Cursor, Cline, any CLI tool + +--- + +## ๐Ÿ”„ How It Works + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Your CLI โ”‚ (Claude Code, Codex, OpenClaw, Cursor, Cline...) +โ”‚ Tool โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ http://localhost:20128/v1 + โ†“ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ 9Router (Smart Router) โ”‚ +โ”‚ โ€ข RTK Token Saver (cut tool_result tokens) โ”‚ +โ”‚ โ€ข Format translation (OpenAI โ†” Claude) โ”‚ +โ”‚ โ€ข Quota tracking โ”‚ +โ”‚ โ€ข Auto token refresh โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ”œโ”€โ†’ [Tier 1: SUBSCRIPTION] Claude Code, Codex, GitHub Copilot + โ”‚ โ†“ quota exhausted + โ”œโ”€โ†’ [Tier 2: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M) + โ”‚ โ†“ budget limit + โ””โ”€โ†’ [Tier 3: FREE] Kiro, OpenCode Free, Vertex ($300 credits) + +Result: Never stop coding, minimal cost + 20-40% token savings via RTK +``` + +--- + +## โšก Quick Start + +**1. Install globally:** + +```bash +npm install -g 9router +9router +``` + +๐ŸŽ‰ Dashboard opens at `http://localhost:20128` + +**2. Connect a FREE provider (no signup needed):** + +Dashboard โ†’ Providers โ†’ Connect **Kiro AI** (free Claude unlimited) or **OpenCode Free** (no auth) โ†’ Done! + +**3. Use in your CLI tool:** + +``` +Claude Code/Codex/OpenClaw/Cursor/Cline Settings: + Endpoint: http://localhost:20128/v1 + API Key: [copy from dashboard] + Model: kr/claude-sonnet-4.5 +``` + +**That's it!** Start coding with FREE AI models. + +**Alternative: run from source (this repository):** + +This repository package is private (`9router-app`), so source/Docker execution is the expected local development path. + +```bash +cp .env.example .env +npm install +PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev +``` + +Production mode: + +```bash +npm run build +PORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start +``` + +Default URLs: + +- Dashboard: `http://localhost:20128/dashboard` +- OpenAI-compatible API: `http://localhost:20128/v1` + +--- + +## Video Guides + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Tiแบฟt kiแป‡m chi phรญ LLM vแป›i 9Router +
+ ๐Ÿ‡ป๐Ÿ‡ณ Tiแบฟng Viแป‡t
+ Tiแบฟt kiแป‡m chi phรญ LLM cho OpenClaw vแป›i 9Router
by Mรฌ AI
+
+ + 9Router + Claude Code FREE Unlimited Setup +
+ ๐Ÿ‡ต๐Ÿ‡ฐ ุงุฑุฏูˆ / เคนเคฟเคจเฅเคฆเฅ€
+ 9Router + Claude Code FREE Unlimited Setup
by Build AI With Hamid
+
+ + 9Router Setup Tutorial +
+ ๐Ÿ‡บ๐Ÿ‡ธ English
+ 9Router + Claude Code FREE Setup
by Build AI With Hamid
+
+ + 9Router Setup Tutorial +
+ ๐Ÿ‡บ๐Ÿ‡ธ English
+ 9Router + Claude Code FREE Setup
by Build AI With Hamid
+
+ + Claude Code FREE Forever +
+ ๐Ÿ‡บ๐Ÿ‡ธ English
+ Claude Code FREE Forever โ€” Unlimited Models
by Build AI With Hamid
+
+ + Claude CLI Free Setup +
+ ๐Ÿ‡บ๐Ÿ‡ธ English
+ Claude CLI Free Setup with 9Router ๐Ÿš€
by CodeVerse Soban
+
+ + Cร i ฤ‘แบทt OpenClaw Free A-Z +
+ ๐Ÿ‡ป๐Ÿ‡ณ Tiแบฟng Viแป‡t
+ Cร i ฤแบทt OpenClaw Free Tแปซ A-Z + 9Router
by Mai Gia
+
+ + FREE OpenClaw with Claude Opus +
+ ๐Ÿ‡บ๐Ÿ‡ธ English
+ FREE OpenClaw + Claude Opus 4.6
by Build AI With Hamid
+
+ + Claude CLI Free Setup +
+ ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesia
+ Koding 24 Jam Anti Rate Limit! Hemat Token AI 65% | Tutorial Quick Setup 9Router ๐Ÿš€
by Krisswuh
+
+ + Cara Deploy 9Router di Hugging Face GRATIS Non-Stop! | Alternatif VPS RAM 16GB +
+ ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesia
+ Cara Deploy 9Router di Hugging Face GRATIS Non-Stop! | Alternatif VPS RAM 16GB
by Krisswuh
+
+ +
+ +> ๐ŸŽฌ **Made a video about 9Router?** Submit a [Pull Request](https://github.com/decolua/9router/pulls) adding your video to this section โ€” we'll merge it! + +--- + +## ๐Ÿ› ๏ธ Supported CLI Tools + +9Router works seamlessly with all major AI coding tools: + +
+ + + + + + + + + + + + + + + + + +
+ Claude Code
+ Claude-Code +
+ OpenClaw
+ OpenClaw +
+ Codex
+ Codex +
+ OpenCode
+ OpenCode +
+ Cursor
+ Cursor +
+ Antigravity
+ Antigravity +
+ Cline
+ Cline +
+ Continue
+ Continue +
+ Droid
+ Droid +
+ Roo
+ Roo +
+ Copilot
+ Copilot +
+ Kilo Code
+ Kilo Code +
+
+ +--- + +## ๐ŸŒ Supported Providers + +### ๐Ÿ” OAuth Providers + +
+ + + + + + + + + +
+ Claude Code
+ Claude-Code +
+ Antigravity
+ Antigravity +
+ Codex
+ Codex +
+ GitHub
+ GitHub +
+ Cursor
+ Cursor +
+ Kimchi
+ Kimchi +
+
+ +### ๐Ÿ†“ Free Providers + +
+ + + + + + +
+ Kiro
+ Kiro AI
+ Claude 4.5 + GLM-5 + MiniMax
Unlimited FREE
+
+ OpenCode Free
+ OpenCode Free
+ No auth โ€ข Auto-fetch models
Unlimited FREE
+
+ Vertex AI
+ Vertex AI
+ Gemini 3 Pro + GLM-5 + DeepSeek
$300 credits free
+
+
+ +> **Note:** iFlow, Qwen and Gemini CLI free tiers were discontinued in 2026. Use Kiro / OpenCode Free / Vertex instead. + +### ๐Ÿ”‘ API Key Providers (40+) + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ OpenRouter
+ OpenRouter +
+ GLM
+ GLM +
+ Kimi
+ Kimi +
+ MiniMax
+ MiniMax +
+ OpenAI
+ OpenAI +
+ Anthropic
+ Anthropic +
+ Gemini
+ Gemini +
+ DeepSeek
+ DeepSeek +
+ Groq
+ Groq +
+ xAI
+ xAI +
+ Mistral
+ Mistral +
+ Perplexity
+ Perplexity +
+ Together
+ Together AI +
+ Fireworks
+ Fireworks +
+ Cerebras
+ Cerebras +
+ Cohere
+ Cohere +
+ NVIDIA
+ NVIDIA +
+ SiliconFlow
+ SiliconFlow +
+

...and 20+ more providers including Nebius, Chutes, Hyperbolic, and custom OpenAI/Anthropic compatible endpoints

+
+ +--- + +## ๐Ÿ’ก Key Features + +| Feature | What It Does | Why It Matters | +| --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------- | +| ๐Ÿš€ **RTK Token Saver** ([RTK](https://github.com/rtk-ai/rtk) โญ40K) | Compress tool outputs (`git diff`, `grep`, `ls`, `tree`...) before sending to LLM | Save **20-40% input tokens** per request | +| ๐Ÿง  **Headroom Token Saver** ([Headroom](https://github.com/chopratejas/headroom)) | Optional external `/v1/compress` proxy before provider routing | Save more context tokens without changing clients | +| ๐Ÿชจ **Caveman Mode** ([Caveman](https://github.com/JuliusBrussee/caveman) โญ52K) | Inject caveman-speak prompt โ†’ LLM replies terse, technical substance preserved | Save **up to 65% output tokens** | +| ๐Ÿด **Ponytail** ([Ponytail](https://github.com/DietrichGebert/ponytail)) | Inject "lazy senior dev" prompt โ†’ LLM writes minimal, YAGNI-first code (Lite/Full/Ultra) | **Fewer output tokens, less refactoring** | +| ๐ŸŽฏ **Smart 3-Tier Fallback** | Auto-route: Subscription โ†’ Cheap โ†’ Free | Never stop coding, zero downtime | +| ๐Ÿ“Š **Real-Time Quota Tracking** | Live token count + reset countdown | Maximize subscription value | +| ๐Ÿ”„ **Format Translation** | OpenAI โ†” Claude โ†” Gemini โ†” Cursor โ†” Kiro โ†” Vertex | Works with any CLI tool | +| ๐Ÿ‘ฅ **Multi-Account Support** | Multiple accounts per provider | Load balancing + redundancy | +| ๐Ÿ”„ **Auto Token Refresh** | OAuth tokens refresh automatically | No manual re-login needed | +| ๐ŸŽจ **Custom Combos** | Create unlimited model combinations | Tailor fallback to your needs | +| ๐Ÿ“ **Request Logging** | Debug mode with full request/response logs | Troubleshoot issues easily | +| ๐Ÿ’พ **Cloud Sync** | Sync config across devices | Same setup everywhere | +| ๐Ÿ“Š **Usage Analytics** | Track tokens, cost, trends over time | Optimize spending | +| ๐ŸŒ **Deploy Anywhere** | Localhost, VPS, Docker, Cloudflare Workers | Flexible deployment options | + +
+๐Ÿ“– Feature Details + +### ๐Ÿš€ RTK Token Saver + +Tool outputs (`git diff`, `grep`, `find`, `ls`, `tree`, log dumps...) often eat 30-50% of your prompt budget. RTK detects them and applies smart, lossless compression **before** the request hits the LLM: + +- **Filters:** `git-diff`, `git-status`, `grep`, `find`, `ls`, `tree`, `dedup-log`, `smart-truncate`, `read-numbered`, `search-list` +- **Auto-detect:** No config needed โ€” RTK peeks the first 1KB of each `tool_result` and picks the right filter. +- **Safe by design:** If a filter fails, throws, or makes output bigger, RTK silently keeps the original text. Errors never break your request. +- **Universal:** Works across all formats (OpenAI, Claude, Gemini, Cursor, Kiro, OpenAI Responses) because it runs **before** any format translation. +- **Default ON:** Toggle anytime in Dashboard โ†’ Endpoint settings. + +``` +Without RTK: 47K tokens sent to LLM +With RTK: 28K tokens sent to LLM (40% saved ยท same context ยท same answer) +``` + +### ๐Ÿง  Headroom Token Saver + +Headroom is optional and runs separately. 9Router calls Headroom's local `/v1/compress` endpoint, then keeps normal routing, fallback, auth, and usage tracking: + +``` +Client โ†’ 9Router โ†’ Headroom /v1/compress โ†’ 9Router โ†’ provider +``` + +Local setup: + +```bash +pip install "headroom-ai[proxy]" +headroom proxy --port 8787 +``` + +Enable in Dashboard โ†’ Endpoint โ†’ Token Saver โ†’ Headroom. Default URL: `http://localhost:8787`. + +Docker examples: + +```bash +# Headroom service in same Docker network +http://headroom:8787 + +# Headroom running on host machine +http://host.docker.internal:8787 +``` + +If Headroom is down or returns an error, 9Router fails open and sends the original request. + +### ๐Ÿด Ponytail (Lazy Senior Dev) + +Ponytail injects a _"lazy senior dev"_ system prompt into every request, biasing the LLM toward minimal, YAGNI-first code โ€” deletion over addition, stdlib over new deps, one-liners over abstractions. Adapted from [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail). + +- **Lite** โ€” Build what's asked, name the lazier alternative. +- **Full** โ€” YAGNI ladder enforced: stdlib โ†’ native โ†’ existing deps โ†’ one-liner โ†’ minimal code. +- **Ultra** โ€” YAGNI extremist: deletion first, ship the one-liner, challenge the rest of the requirement in the same response. + +``` +Without Ponytail: verbose code, extra abstractions, "just in case" scaffolding +With Ponytail: shortest working diff, no unrequested abstractions, fewer tokens +``` + +Never trades away: input validation, error handling that prevents data loss, security, accessibility, or anything explicitly requested. Enable in Dashboard โ†’ Endpoint โ†’ Ponytail. Stacks with Caveman (output terseness) and RTK (input compression). + +### ๐ŸŽฏ Smart 3-Tier Fallback + +Create combos with automatic fallback: + +``` +Combo: "my-coding-stack" + 1. cc/claude-opus-4-6 (your subscription) + 2. glm/glm-4.7 (cheap backup, $0.6/1M) + 3. if/kimi-k2-thinking (free fallback) + +โ†’ Auto switches when quota runs out or errors occur +``` + +### ๐Ÿ“Š Real-Time Quota Tracking + +- Token consumption per provider +- Reset countdown (5-hour, daily, weekly) +- Cost estimation for paid tiers +- Monthly spending reports + +### ๐Ÿ”„ Format Translation + +Seamless translation between formats: + +- **OpenAI** โ†” **Claude** โ†” **Gemini** โ†” **Cursor** โ†” **Kiro** โ†” **Vertex** โ†” **Antigravity** โ†” **Ollama** โ†” **OpenAI Responses** +- Your CLI tool sends OpenAI format โ†’ 9Router translates โ†’ Provider receives native format +- Works with any tool that supports custom OpenAI endpoints + +### ๐Ÿ‘ฅ Multi-Account Support + +- Add multiple accounts per provider +- Auto round-robin or priority-based routing +- Fallback to next account when one hits quota + +### ๐Ÿ”„ Auto Token Refresh + +- OAuth tokens automatically refresh before expiration +- No manual re-authentication needed +- Seamless experience across all providers + +### ๐ŸŽจ Custom Combos + +- Create unlimited model combinations +- Mix subscription, cheap, and free tiers +- Name your combos for easy access +- Share combos across devices with Cloud Sync + +### ๐Ÿ“ Request Logging + +- Enable debug mode for full request/response logs +- Track API calls, headers, and payloads +- Troubleshoot integration issues +- Export logs for analysis + +### ๐Ÿ’พ Cloud Sync + +- Sync providers, combos, and settings across devices +- Automatic background sync +- Secure encrypted storage +- Access your setup from anywhere + +#### Cloud Runtime Notes + +- Prefer server-side cloud variables in production: + - `BASE_URL` (internal callback URL used by sync scheduler) + - `CLOUD_URL` (cloud sync endpoint base) +- `NEXT_PUBLIC_BASE_URL` and `NEXT_PUBLIC_CLOUD_URL` are still supported for compatibility/UI, but server runtime now prioritizes `BASE_URL`/`CLOUD_URL`. +- Cloud sync requests now use timeout + fail-fast behavior to avoid UI hanging when cloud DNS/network is unavailable. + +### ๐Ÿ“Š Usage Analytics + +- Track token usage per provider and model +- Cost estimation and spending trends +- Monthly reports and insights +- Optimize your AI spending + +> **๐Ÿ’ก IMPORTANT - Understanding Dashboard Costs:** +> +> The "cost" displayed in Usage Analytics is **for tracking and comparison purposes only**. +> 9Router itself **never charges** you anything. You only pay providers directly (if using paid services). +> +> **Example:** If your dashboard shows "$290 total cost" while using iFlow models, this represents +> what you would have paid using paid APIs directly. Your actual cost = **$0** (iFlow is free unlimited). +> +> Think of it as a "savings tracker" showing how much you're saving by using free models or +> routing through 9Router! + +### ๐ŸŒ Deploy Anywhere + +- ๐Ÿ’ป **Localhost** - Default, works offline +- โ˜๏ธ **VPS/Cloud** - Share across devices +- ๐Ÿณ **Docker** - One-command deployment +- ๐Ÿš€ **Cloudflare Workers** - Global edge network + +
+ +--- + +## ๐Ÿ’ฐ Pricing at a Glance + +| Tier | Provider | Cost | Quota Reset | Best For | +| ------------------- | --------------------- | ------------ | ---------------- | --------------------------------------- | +| **๐Ÿš€ TOKEN SAVER** | **RTK (built-in)** | **FREE** | Always on | **Save 20-40% tokens on EVERY request** | +| **๐Ÿ’ณ SUBSCRIPTION** | Claude Code (Pro/Max) | $20-200/mo | 5h + weekly | Already subscribed | +| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users | +| | GitHub Copilot | $10-19/mo | Monthly | GitHub users | +| | Cursor IDE | $20/mo | Monthly | Cursor users | +| **๐Ÿ’ฐ CHEAP** | GLM-5.1 / GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup | +| | MiniMax M2.7 | $0.2/1M | 5-hour rolling | Cheapest option | +| | Kimi K2.5 | $9/mo flat | 10M tokens/mo | Predictable cost | +| **๐Ÿ†“ FREE** | Kiro AI | $0 | Unlimited | Claude 4.5 + GLM-5 + MiniMax free | +| | OpenCode Free | $0 | Unlimited | No auth, auto-fetch models | +| | Vertex AI | $300 credits | New GCP accounts | Gemini 3 Pro + DeepSeek + GLM-5 | + +**๐Ÿ’ก Pro Tip:** RTK + Kiro AI + OpenCode Free combo = **$0 cost + 20-40% token savings**! + +--- + +### ๐Ÿ“Š Understanding 9Router Costs & Billing + +**9Router Billing Reality:** + +โœ… **9Router software = FREE forever** (open source, never charges) +โœ… **Dashboard "costs" = Display/tracking only** (not actual bills) +โœ… **You pay providers directly** (subscriptions or API fees) +โœ… **FREE providers stay FREE** (iFlow, Kiro, Qwen = $0 unlimited) +โŒ **9Router never sends invoices** or charges your card + +**How Cost Display Works:** + +The dashboard shows **estimated costs** as if you were using paid APIs directly. This is **not billing** - it's a comparison tool to show your savings. + +**Example Scenario:** + +``` +Dashboard Display: +โ€ข Total Requests: 1,662 +โ€ข Total Tokens: 47M +โ€ข Display Cost: $290 + +Reality Check: +โ€ข Provider: iFlow (FREE unlimited) +โ€ข Actual Payment: $0.00 +โ€ข What $290 Means: Amount you SAVED by using free models! +``` + +**Payment Rules:** + +- **Subscription providers** (Claude Code, Codex): Pay them directly via their websites +- **Cheap providers** (GLM, MiniMax): Pay them directly, 9Router just routes +- **FREE providers** (iFlow, Kiro, Qwen): Genuinely free forever, no hidden charges +- **9Router**: Never charges anything, ever + +--- + +## ๐ŸŽฏ Use Cases + +### Case 1: "I have Claude Pro subscription" + +**Problem:** Quota expires unused, rate limits during heavy coding + +**Solution:** + +``` +Combo: "maximize-claude" + 1. cc/claude-opus-4-7 (use subscription fully) + 2. glm/glm-5.1 (cheap backup when quota out) + 3. kr/claude-sonnet-4.5 (free emergency fallback) + +Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total +vs. $20 + hitting limits = frustration +``` + +### Case 2: "I want zero cost" + +**Problem:** Can't afford subscriptions, need reliable AI coding + +**Solution:** + +``` +Combo: "free-forever" + 1. kr/claude-sonnet-4.5 (Claude 4.5 free unlimited) + 2. kr/glm-5 (GLM-5 free via Kiro) + 3. oc/ (OpenCode Free, no auth) + +Monthly cost: $0 +Quality: Production-ready models + RTK saves 20-40% tokens +``` + +### Case 3: "I need 24/7 coding, no interruptions" + +**Problem:** Deadlines, can't afford downtime + +**Solution:** + +``` +Combo: "always-on" + 1. cc/claude-opus-4-7 (best quality) + 2. cx/gpt-5.5 (second subscription) + 3. glm/glm-5.1 (cheap, resets daily) + 4. minimax/MiniMax-M2.7 (cheapest, 5h reset) + 5. kr/claude-sonnet-4.5 (free unlimited) + +Result: 5 layers of fallback = zero downtime +Monthly cost: $20-200 (subscriptions) + $10-20 (backup) +``` + +### Case 4: "I want FREE AI in OpenClaw" + +**Problem:** Need AI assistant in messaging apps (WhatsApp, Telegram, Slack...), completely free + +**Solution:** + +``` +Combo: "openclaw-free" + 1. kr/claude-sonnet-4.5 (Claude 4.5 free) + 2. kr/glm-5 (GLM-5 free) + 3. kr/MiniMax-M2.5 (MiniMax free) + +Monthly cost: $0 +Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal... +``` + +--- + +## โ“ Frequently Asked Questions + +
+๐Ÿ“Š Why does my dashboard show high costs? + +The dashboard tracks your token usage and displays **estimated costs** as if you were using paid APIs directly. This is **not actual billing** - it's a reference to show how much you're saving by using free models or existing subscriptions through 9Router. + +**Example:** + +- **Dashboard shows:** "$290 total cost" +- **Reality:** You're using iFlow (FREE unlimited) +- **Your actual cost:** **$0.00** +- **What $290 means:** Amount you **saved** by using free models instead of paid APIs! + +The cost display is a "savings tracker" to help you understand your usage patterns and optimization opportunities. + +
+ +
+๐Ÿ’ณ Will I be charged by 9Router? + +**No.** 9Router is free, open-source software that runs on your own computer. It never charges you anything. + +**You only pay:** + +- โœ… **Subscription providers** (Claude Code $20/mo, Codex $20-200/mo) โ†’ Pay them directly on their websites +- โœ… **Cheap providers** (GLM, MiniMax) โ†’ Pay them directly, 9Router just routes your requests +- โŒ **9Router itself** โ†’ **Never charges anything, ever** + +9Router is a local proxy/router. It doesn't have your credit card, can't send invoices, and has no billing system. It's completely free software. + +
+ +
+๐Ÿ†“ Are FREE providers really unlimited? + +**Yes!** The current FREE providers (Kiro, OpenCode Free, Vertex) are genuinely free with **no hidden charges**. + +These are free services offered by those respective companies: + +- **Kiro AI**: Free unlimited Claude 4.5 + GLM-5 + MiniMax via AWS Builder ID / Google / GitHub OAuth +- **OpenCode Free**: No-auth passthrough proxy, models auto-fetched from `opencode.ai/zen/v1/models` +- **Vertex AI**: $300 free credits for new Google Cloud accounts (90 days) + +9Router just routes your requests to them - there's no "catch" or future billing. They're truly free services, and 9Router makes them easy to use with fallback support. + +**Discontinued free tiers (no longer recommended):** + +- โŒ **iFlow**: Was free unlimited, now changed to paid (2026) +- โŒ **Qwen Code**: Free OAuth tier discontinued by Alibaba on 2026-04-15 +- โŒ **Gemini CLI**: Still works, but using it with non-CLI tools (Claude, Codex, Cursor...) may result in account bans โ€” only use if you stick to Gemini CLI itself + +
+ +
+๐Ÿ’ฐ How do I minimize my actual AI costs? + +**Free-First Strategy:** + +1. **Start with 100% free combo:** + + ``` + 1. gc/gemini-3-flash (180K/month free from Google) + 2. if/kimi-k2-thinking (unlimited free from iFlow) + 3. qw/qwen3-coder-plus (unlimited free from Qwen) + ``` + + **Cost: $0/month** + +2. **Add cheap backup** only if you need it: + + ``` + 4. glm/glm-4.7 ($0.6/1M tokens) + ``` + + **Additional cost: Only pay for what you actually use** + +3. **Use subscription providers last:** + - Only if you already have them + - 9Router helps maximize their value through quota tracking + +**Result:** Most users can operate at $0/month using only free tiers! + +
+ +
+๐Ÿ“ˆ What if my usage suddenly spikes? + +9Router's smart fallback prevents surprise charges: + +**Scenario:** You're on a coding sprint and blow through your quotas + +**Without 9Router:** + +- โŒ Hit rate limit โ†’ Work stops โ†’ Frustration +- โŒ Or: Accidentally rack up huge API bills + +**With 9Router:** + +- โœ… Subscription hits limit โ†’ Auto-fallback to cheap tier +- โœ… Cheap tier gets expensive โ†’ Auto-fallback to free tier +- โœ… Never stop coding โ†’ Predictable costs + +**You're in control:** Set spending limits per provider in dashboard, and 9Router respects them. + +
+ +--- + +## ๐Ÿ“– Setup Guide + +
+๐Ÿ” Subscription Providers (Maximize Value) + +### Claude Code (Pro/Max) + +```bash +Dashboard โ†’ Providers โ†’ Connect Claude Code +โ†’ OAuth login โ†’ Auto token refresh +โ†’ 5-hour + weekly quota tracking + +Models: + cc/claude-opus-4-7 + cc/claude-opus-4-6 + cc/claude-sonnet-4-6 + cc/claude-haiku-4-5-20251001 +``` + +**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. 9Router tracks quota per model! + +### OpenAI Codex (Plus/Pro) + +```bash +Dashboard โ†’ Providers โ†’ Connect Codex +โ†’ OAuth login (port 1455) +โ†’ 5-hour + weekly reset + +Models: + cx/gpt-5.5 + cx/gpt-5.4 + cx/gpt-5.3-codex + cx/gpt-5.2-codex +``` + +### GitHub Copilot + +```bash +Dashboard โ†’ Providers โ†’ Connect GitHub +โ†’ OAuth via GitHub +โ†’ Monthly reset (1st of month) + +Models: + gh/gpt-5.4 + gh/claude-opus-4.7 + gh/claude-sonnet-4.6 + gh/gemini-3.1-pro-preview + gh/grok-code-fast-1 +``` + +### Cursor IDE + +```bash +Dashboard โ†’ Providers โ†’ Connect Cursor +โ†’ OAuth login +โ†’ Monthly subscription + +Models: + cu/claude-4.6-opus-max + cu/claude-4.5-sonnet-thinking + cu/gpt-5.3-codex +``` + +
+ +
+๐Ÿ’ฐ Cheap Providers (Backup) + +### GLM-5.1 / GLM-4.7 (Daily reset, $0.6/1M) + +1. Sign up: [Zhipu AI](https://open.bigmodel.cn/) +2. Get API key from Coding Plan +3. Dashboard โ†’ Add API Key: + - Provider: `glm` + - API Key: `your-key` + +**Use:** `glm/glm-5.1`, `glm/glm-5`, `glm/glm-4.7` + +**Pro Tip:** Coding Plan offers 3ร— quota at 1/7 cost! Reset daily 10:00 AM. + +### MiniMax M2.7 (5h reset, $0.20/1M) + +1. Sign up: [MiniMax](https://www.minimax.io/) +2. Get API key +3. Dashboard โ†’ Add API Key + +**Use:** `minimax/MiniMax-M2.7`, `minimax/MiniMax-M2.5` + +**Pro Tip:** Cheapest option for long context (1M tokens)! + +### Kimi K2.5 ($9/month flat) + +1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/) +2. Get API key +3. Dashboard โ†’ Add API Key + +**Use:** `kimi/kimi-k2.5`, `kimi/kimi-k2.5-thinking` + +**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost! + +
+ +
+๐Ÿ†“ FREE Providers (Recommended) + +### Kiro AI (Claude 4.5 + GLM-5 + MiniMax FREE) + +```bash +Dashboard โ†’ Connect Kiro +โ†’ AWS Builder ID, AWS IAM Identity Center, Google, or GitHub +โ†’ Unlimited usage + +Models: + kr/claude-sonnet-4.5 + kr/claude-haiku-4.5 + kr/glm-5 + kr/MiniMax-M2.5 + kr/qwen3-coder-next + kr/deepseek-3.2 +``` + +**Pro Tip:** Best free option for Claude. No API key, no payment, fully unlimited. + +### OpenCode Free (No auth, auto-fetch models) + +```bash +Dashboard โ†’ Connect OpenCode Free +โ†’ No login required (passthrough proxy) +โ†’ Models auto-fetched from opencode.ai/zen/v1/models +``` + +**Pro Tip:** Fastest setup. Just connect and start coding. + +### Vertex AI ($300 free credits for new GCP accounts) + +```bash +Dashboard โ†’ Connect Vertex AI +โ†’ Upload Google Cloud Service Account JSON +โ†’ Enable Vertex AI API in your GCP project + +Models: + vertex/gemini-3.1-pro-preview + vertex/gemini-3-flash-preview + vertex/gemini-2.5-flash + +Vertex Partner (Anthropic / DeepSeek / GLM / Qwen via Vertex): + vertex-partner/glm-5-maas + vertex-partner/deepseek-v3.2-maas + vertex-partner/qwen3-next-80b-a3b-thinking-maas +``` + +**Pro Tip:** New Google Cloud accounts get $300 credits free for 90 days. Plenty for daily coding. + +
+ +
+๐ŸŽจ Create Combos + +### Example 1: Maximize Subscription โ†’ Cheap Backup + +``` +Dashboard โ†’ Combos โ†’ Create New + +Name: premium-coding +Models: + 1. cc/claude-opus-4-7 (Subscription primary) + 2. glm/glm-5.1 (Cheap backup, $0.6/1M) + 3. minimax/MiniMax-M2.7 (Cheapest fallback, $0.20/1M) + +Use in CLI: premium-coding + +Monthly cost example (100M tokens): + 80M via Claude (subscription): $0 extra + 15M via GLM: $9 + 5M via MiniMax: $1 + Total: $10 + your subscription +``` + +### Example 2: Free-Only (Zero Cost) + +``` +Name: free-combo +Models: + 1. kr/claude-sonnet-4.5 (Claude 4.5 free unlimited) + 2. kr/glm-5 (GLM-5 free via Kiro) + 3. vertex/gemini-3.1-pro-preview ($300 free credits) + +Cost: $0 forever (+ 20-40% token savings via RTK)! +``` + +
+ +
+๐Ÿ”ง CLI Integration + +### Cursor IDE + +``` +Settings โ†’ Models โ†’ Advanced: + OpenAI API Base URL: http://localhost:20128/v1 + OpenAI API Key: [from 9router dashboard] + Model: cc/claude-opus-4-7 +``` + +Or use combo: `premium-coding` + +### Claude Code + +Edit `~/.claude/config.json`: + +```json +{ + "anthropic_api_base": "http://localhost:20128/v1", + "anthropic_api_key": "your-9router-api-key" +} +``` + +### Codex CLI + +```bash +export OPENAI_BASE_URL="http://localhost:20128" +export OPENAI_API_KEY="your-9router-api-key" + +codex "your prompt" +``` + +### OpenClaw + +**Option 1 โ€” Dashboard (recommended):** + +``` +Dashboard โ†’ CLI Tools โ†’ OpenClaw โ†’ Select Model โ†’ Apply +``` + +**Option 2 โ€” Manual:** Edit `~/.openclaw/openclaw.json`: + +```json +{ + "agents": { + "defaults": { + "model": { + "primary": "9router/kr/claude-sonnet-4.5" + } + } + }, + "models": { + "providers": { + "9router": { + "baseUrl": "http://127.0.0.1:20128/v1", + "apiKey": "sk_9router", + "api": "openai-completions", + "models": [ + { + "id": "kr/claude-sonnet-4.5", + "name": "Claude Sonnet 4.5 (Kiro Free)" + } + ] + } + } + } +} +``` + +> **Note:** OpenClaw only works with local 9Router. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues. + +### Cline / Continue / RooCode + +``` +Provider: OpenAI Compatible +Base URL: http://localhost:20128/v1 +API Key: [from dashboard] +Model: cc/claude-opus-4-7 +``` + +
+ +
+๐Ÿš€ Deployment + +### VPS Deployment + +```bash +# Clone and install +git clone https://github.com/decolua/9router.git +cd 9router +npm install +npm run build + +# Configure +export JWT_SECRET="your-secure-secret-change-this" +export INITIAL_PASSWORD="your-password" +export DATA_DIR="/var/lib/9router" +export PORT="20128" +export HOSTNAME="0.0.0.0" +export NODE_ENV="production" +export NEXT_PUBLIC_BASE_URL="http://localhost:20128" +export NEXT_PUBLIC_CLOUD_URL="https://9router.com" +export API_KEY_SECRET="endpoint-proxy-api-key-secret" +export MACHINE_ID_SALT="endpoint-proxy-salt" + +# Start +npm run start + +# Or use PM2 +npm install -g pm2 +pm2 start npm --name 9router -- start +pm2 save +pm2 startup +``` + +### Docker + +Published images (multi-platform `linux/amd64` + `linux/arm64`): + +- Docker Hub: [`decolua/9router`](https://hub.docker.com/r/decolua/9router) +- GHCR: [`ghcr.io/decolua/9router`](https://github.com/decolua/9router/pkgs/container/9router) + +**Quick start (use published image):** + +```bash +docker run -d \ + --name 9router \ + -p 20128:20128 \ + -v "$HOME/.9router:/app/data" \ + -e DATA_DIR=/app/data \ + decolua/9router:latest +``` + +โ†’ Open http://localhost:20128 + +**Build from source (dev):** + +```bash +git clone https://github.com/decolua/9router.git +cd 9router/app +docker build -t 9router . +docker run -d --name 9router -p 20128:20128 \ + -v "$HOME/.9router:/app/data" -e DATA_DIR=/app/data 9router +``` + +**Container defaults:** + +- `PORT=20128` +- `HOSTNAME=0.0.0.0` + +**Useful commands:** + +```bash +docker logs -f 9router +docker restart 9router +docker stop 9router && docker rm 9router +docker pull decolua/9router:latest # update to latest +``` + +**Data persistence:** `$HOME/.9router/db/data.sqlite` on host โ†” `/app/data/db/data.sqlite` in container. + +### Environment Variables + +| Variable | Default | Description | +| ---------------------------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------- | +| `JWT_SECRET` | Auto-generated (`~/.9router/jwt-secret`) | JWT signing secret for dashboard auth cookie (override to share across instances) | +| `INITIAL_PASSWORD` | `123456` | First login password when no saved hash exists | +| `DATA_DIR` | `~/.9router` | Main app data location (SQLite at `$DATA_DIR/db/data.sqlite`) | +| `PORT` | framework default | Service port (`20128` in examples) | +| `HOSTNAME` | framework default | Bind host (Docker defaults to `0.0.0.0`) | +| `NODE_ENV` | runtime default | Set `production` for deploy | +| `BASE_URL` | `http://localhost:20128` | Server-side internal base URL used by cloud sync jobs | +| `CLOUD_URL` | `https://9router.com` | Server-side cloud sync endpoint base URL | +| `NEXT_PUBLIC_BASE_URL` | `http://localhost:3000` | Backward-compatible/public base URL (prefer `BASE_URL` for server runtime) | +| `NEXT_PUBLIC_CLOUD_URL` | `https://9router.com` | Backward-compatible/public cloud URL (prefer `CLOUD_URL` for server runtime) | +| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | HMAC secret for generated API keys | +| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | Salt for stable machine ID hashing | +| `ENABLE_REQUEST_LOGS` | `false` | Enables request/response logs under `logs/` | +| `AUTH_COOKIE_SECURE` | `false` | Force `Secure` auth cookie (set `true` behind HTTPS reverse proxy) | +| `REQUIRE_API_KEY` | `false` | Enforce Bearer API key on `/v1/*` routes (recommended for internet-exposed deploys) | +| `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`, `NO_PROXY` | empty | Optional outbound proxy for upstream provider calls | +| `SEARXNG_URL` | `http://localhost:8888/search` | Endpoint for the built-in unauthenticated SearXNG web-search provider | + +Notes: + +- Lowercase proxy variables are also supported: `http_proxy`, `https_proxy`, `all_proxy`, `no_proxy`. +- `.env` is not baked into Docker image (`.dockerignore`); inject runtime config with `--env-file` or `-e`. +- On Windows, `APPDATA` can be used for local storage path resolution. +- `INSTANCE_NAME` appears in older docs/env templates, but is currently not used at runtime. + +### Runtime Files and Storage + +- Main app state: `${DATA_DIR}/db/data.sqlite` (SQLite โ€” providers, combos, aliases, keys, settings, usage history) +- Auto backups: `${DATA_DIR}/db/backups/` +- Optional request/translator logs: `/logs/...` when `ENABLE_REQUEST_LOGS=true` +- Both `${DATA_DIR}` and `~/.9router` resolve to the same location in a Docker container โ€” the symlink `/root/.9router -> /app/data` is created at build time. + +
+ +--- + +## ๐Ÿ“Š Available Models + +
+View all available models + +**Claude Code (`cc/`)** - Pro/Max: + +- `cc/claude-opus-4-7` +- `cc/claude-opus-4-6` +- `cc/claude-sonnet-4-6` +- `cc/claude-sonnet-4-5-20250929` +- `cc/claude-haiku-4-5-20251001` + +**Codex (`cx/`)** - Plus/Pro: + +- `cx/gpt-5.5` +- `cx/gpt-5.4` +- `cx/gpt-5.3-codex` +- `cx/gpt-5.2-codex` +- `cx/gpt-5.1-codex-max` + +**GitHub Copilot (`gh/`)**: + +- `gh/gpt-5.4` +- `gh/claude-opus-4.7` +- `gh/claude-sonnet-4.6` +- `gh/gemini-3.1-pro-preview` +- `gh/grok-code-fast-1` + +**Cursor (`cu/`)** - Subscription: + +- `cu/claude-4.6-opus-max` +- `cu/claude-4.5-sonnet-thinking` +- `cu/gpt-5.3-codex` +- `cu/kimi-k2.5` + +**GLM (`glm/`)** - $0.6/1M: + +- `glm/glm-5.1` +- `glm/glm-5` +- `glm/glm-4.7` + +**MiniMax (`minimax/`)** - $0.2/1M: + +- `minimax/MiniMax-M2.7` +- `minimax/MiniMax-M2.5` + +**Kimi (`kimi/`)** - $9/mo flat: + +- `kimi/kimi-k2.5` +- `kimi/kimi-k2.5-thinking` + +**Kiro (`kr/`)** - FREE unlimited: + +- `kr/claude-sonnet-4.5` +- `kr/claude-haiku-4.5` +- `kr/glm-5` +- `kr/MiniMax-M2.5` +- `kr/qwen3-coder-next` +- `kr/deepseek-3.2` + +**OpenCode Free (`oc/`)** - FREE no-auth: + +- Auto-fetched from `opencode.ai/zen/v1/models` + +**Vertex AI (`vertex/`)** - $300 free credits: + +- `vertex/gemini-3.1-pro-preview` +- `vertex/gemini-3-flash-preview` +- `vertex/gemini-2.5-flash` +- `vertex-partner/glm-5-maas` +- `vertex-partner/deepseek-v3.2-maas` + +
+ +--- + +## ๐Ÿ› Troubleshooting + +**"Language model did not provide messages"** + +- Provider quota exhausted โ†’ Check dashboard quota tracker +- Solution: Use combo fallback or switch to cheaper tier + +**Rate limiting** + +- Subscription quota out โ†’ Fallback to GLM/MiniMax +- Add combo: `cc/claude-opus-4-7 โ†’ glm/glm-5.1 โ†’ kr/claude-sonnet-4.5` + +**OAuth token expired** + +- Auto-refreshed by 9Router +- If issues persist: Dashboard โ†’ Provider โ†’ Reconnect + +**High costs** + +- Enable RTK in Dashboard โ†’ Endpoint settings (default ON, saves 20-40% tokens) +- Check usage stats in Dashboard +- Switch primary model to GLM/MiniMax +- Use free tier (Kiro, OpenCode Free, Vertex) for non-critical tasks + +**Dashboard opens on wrong port** + +- Set `PORT=20128` and `NEXT_PUBLIC_BASE_URL=http://localhost:20128` + +**First login not working** + +- Check `INITIAL_PASSWORD` in `.env` +- If unset, fallback password is `123456` + +**No request logs under `logs/`** + +- Set `ENABLE_REQUEST_LOGS=true` + +--- + +## ๐Ÿ› ๏ธ Tech Stack + +- **Runtime**: Node.js 20+ +- **Framework**: Next.js 16 +- **UI**: React 19 + Tailwind CSS 4 +- **Database**: SQLite (better-sqlite3 / node:sqlite / sql.js fallback) +- **Streaming**: Server-Sent Events (SSE) +- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + +--- + +## ๐Ÿ“ API Reference + +### Chat Completions + +```bash +POST http://localhost:20128/v1/chat/completions +Authorization: Bearer your-api-key +Content-Type: application/json + +{ + "model": "cc/claude-opus-4-6", + "messages": [ + {"role": "user", "content": "Write a function to..."} + ], + "stream": true +} +``` + +### List Models + +```bash +GET http://localhost:20128/v1/models +Authorization: Bearer your-api-key + +โ†’ Returns all models + combos in OpenAI format +``` + +## ๐Ÿ“ง Support + +- **Website**: [9router.com](https://9router.com) +- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router) +- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues) + +--- + +## ๐Ÿ‘ฅ Contributors + +Thanks to all contributors who helped make 9Router better! + +[![Contributors](https://contrib.rocks/image?repo=decolua/9router&max=150&columns=15&anon=1&v=20260309)](https://github.com/decolua/9router/graphs/contributors) + +--- + +## ๐Ÿ“Š Star Chart + +[![Star Chart](https://starchart.cc/decolua/9router.svg?variant=adaptive)](https://starchart.cc/decolua/9router) + +## ๐Ÿ”€ Forks + +**[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** โ€” A full-featured TypeScript fork of 9Router. Adds 36+ providers, 4-tier auto-fallback, multi-modal APIs (images, embeddings, audio, TTS), circuit breaker, semantic cache, LLM evaluations, and a polished dashboard. 368+ unit tests. Available via npm and Docker. + +--- + +## ๐Ÿ™ Acknowledgments + +Built on the shoulders of giants: + +- **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** โ€” original Go implementation that inspired this JavaScript port. +- **[RTK](https://github.com/rtk-ai/rtk)** ![Stars](https://img.shields.io/github/stars/rtk-ai/rtk?style=flat&color=yellow) โ€” Rust token-saver. 9Router ports its compression pipeline to JS โ†’ **โˆ’20-40% input tokens** on every request. +- **[Caveman](https://github.com/JuliusBrussee/caveman)** ![Stars](https://img.shields.io/github/stars/JuliusBrussee/caveman?style=flat&color=yellow) by **[@JuliusBrussee](https://github.com/JuliusBrussee)** โ€” viral _"why use many token when few token do trick"_. 9Router adapts its prompt โ†’ **โˆ’65% output tokens**. +- **[Ponytail](https://github.com/DietrichGebert/ponytail)** ![Stars](https://img.shields.io/github/stars/DietrichGebert/ponytail?style=flat&color=yellow) by **[@DietrichGebert](https://github.com/DietrichGebert)** โ€” _"lazy senior dev"_ skill. 9Router injects its YAGNI-first ladder โ†’ **fewer tokens, less code, shorter diffs**. + +Huge thanks to these authors โ€” without their work, 9Router's token-saving features wouldn't exist. โญ them on GitHub! + +--- + +## ๐Ÿ“„ License + +MIT License - see [LICENSE](LICENSE) for details. + +--- + +
+ Built with โค๏ธ for developers who code 24/7 +