ถ้าคุณใช้ Claude Code หรือ Codex ทุกวัน น่าจะเคยเจอโมเมนต์นี้: กำลังแก้บั๊กอยู่ดีๆ แล้ว
rate limit ขึ้นหรือโควตา 5 ชั่วโมงหมด งานค้างกลางทาง ต้องรอ หรือไม่ก็ต้องไปเปลี่ยน API key กับ base URL เองทีละเครื่องมือ
แก้ปัญหานี้ด้วยการเป็น proxy ตัวเล็กๆ ที่รันบนเครื่องเรา ให้ทุกเครื่องมือยิงมาที่ endpoint เดียว แล้ว 9Router จะเลือก provider ให้ พอตัวแรกใช้ไม่ได้ก็ไปตัวถัดไปเอง
บทความนี้พาไปตั้งแต่ติดตั้ง เชื่อมกับ Claude Code, Codex และ Cursor ไปจนถึงเรื่องที่หลายคนข้าม คือ
ความปลอดภัยและ
เงื่อนไขของ free tierที่ไม่ได้ฟรีไม่จำกัดอย่างที่บางคนพูดกัน
9Router คืออะไร
9Router เป็นโปรเจกต์ open source (MIT license) ที่ทำหน้าที่เป็น
AI routerแบบ OpenAI-compatible รันบนเครื่องเราที่พอร์ต 20128 ตัวโปรเจกต์ได้แรงบันดาลใจจาก CLIProxyAPI ที่เขียนด้วย Go แล้วพอร์ตมาเป็น JavaScript
สิ่งที่มันทำจริงๆ มีประมาณนี้:
✅
รวมหลาย provider ไว้ endpoint เดียวทั้งแบบ subscription (Claude Code, Codex, GitHub Copilot), แบบจ่ายตามใช้ราคาถูก (GLM, MiniMax, Kimi) และแบบมี free tier (Kiro, OpenCode Free, Vertex)
✅
Combo + Fallbackจัดลำดับโมเดลไว้ ถ้าตัวแรกโควตาหมดหรือ error ก็ไปตัวถัดไปอัตโนมัติ
✅
แปลง format ให้เองระหว่าง OpenAI, Claude, Gemini, Responses API และอื่นๆ เครื่องมือไหนพูดภาษาอะไรก็ต่อได้
✅
ติดตามโควตาดูรอบ reset แบบ 5 ชั่วโมง รายวัน และรายสัปดาห์ได้จาก dashboard
✅
RTK Token Saverเปิดไว้เป็นค่าเริ่มต้น บีบอัด tool result อย่าง git diff, grep, ls หรือ tree ก่อนส่งให้โมเดล README อ้างว่าช่วยประหยัด token ได้ 20-40% ต่อ request และถ้าบีบอัดไม่สำเร็จจะส่งของเดิมไปแทน
✅
Dashboardสำหรับจัดการ provider, API key, combo และดู usage
ส่วนที่ต้องเข้าใจให้ถูก:
❌ 9Router
ไม่ได้ให้โมเดลฟรีเองมันแค่ส่งต่อ request ไปยัง provider ที่เราเชื่อมไว้ ฟรีหรือไม่ฟรีขึ้นกับ provider นั้น
❌ ตัวเลข "cost" ใน dashboard เป็น
ค่าประมาณเท่านั้น 9Router ไม่ได้เก็บเงินเรา บิลจริงมาจาก provider
ทำไม AI Router ถึงสำคัญ
ถ้าใช้เครื่องมือเดียว provider เดียว อาจยังไม่รู้สึกว่าจำเป็น แต่พอใช้ AI เขียนโค้ดจริงจัง ปัญหาพวกนี้จะเริ่มโผล่:
- โควตาหมดกลางงาน
โดยเฉพาะ subscription ที่มีรอบ 5 ชั่วโมง
- ตั้งค่ากระจัดกระจาย
Claude Code ใช้ config แบบหนึ่ง Codex อีกแบบ Cursor อีกแบบ จะเปลี่ยน provider ทีต้องแก้หลายที่
- ค่าใช้จ่ายบานปลาย
ถ้าทุกงานไปลงโมเดลแพงสุด ทั้งที่งานง่ายๆ ใช้โมเดลถูกกว่าก็พอ
- มองไม่เห็นภาพรวม
ไม่รู้ว่าเครื่องมือไหนกิน token ไปเท่าไร
AI router ย้ายการตัดสินใจเหล่านี้มาไว้ที่เดียว เครื่องมือทุกตัวชี้มาที่ router แล้วเราเปลี่ยน logic ข้างหลังได้โดยไม่ต้องแตะ config ของแต่ละเครื่องมือ
Flow จริง:

สิ่งที่ต้องเตรียม
- Node.js 20 ขึ้นไป
ถ้าจะติดตั้งผ่าน npm หรือ
Dockerถ้าอยากแยกออกจากเครื่อง
- บัญชี provider อย่างน้อยหนึ่งตัว
เช่น subscription ที่มีอยู่แล้ว (Claude Pro/Max, ChatGPT ที่ใช้ Codex ได้, GitHub Copilot) หรือ API key ของ provider ราคาถูก หรือบัญชี free tier
- เครื่องมือที่จะใช้
เช่น Claude Code, Codex CLI, Cline หรือ Continue
พอร์ต
20128ว่าง
วิธีติดตั้งเบื้องต้น
ติดตั้งผ่าน npm
วิธีที่เร็วที่สุด:
1npm install -g 9router29router
รันแล้ว dashboard จะเปิดที่ http://localhost:20128 ส่วน URL ที่จะใช้บ่อยมีสองตัว:
1Dashboard: http://localhost:20128/dashboard2OpenAI-compatible API: http://localhost:20128/v1
เวอร์ชันบน npm อาจใหม่กว่าที่เห็นใน GitHub Releases ดูเวอร์ชันล่าสุดได้จาก npm โดยตรง ไม่ต้องยึดเลขเวอร์ชันในบทความไหน
รันด้วย Docker
ถ้าอยากให้ข้อมูลอยู่ที่ volume แยก และอัปเดตง่าย ใช้ image ทางการ (มีทั้ง amd64 และ arm64):
1docker run -d \2--name 9router \3-p 127.0.0.1:20128:20128 \4-v "$HOME/.9router:/app/data" \5-e DATA_DIR=/app/data \6decolua/9router:latest
สังเกตว่าผมใส่
127.0.0.1:หน้าพอร์ต ตัวอย่างใน README ใช้ -p 20128:20128 ซึ่ง Docker จะเปิดพอร์ตให้ทุก network interface ถ้าเครื่องคุณอยู่ใน network ที่คนอื่นเข้าถึงได้ ให้ bind แค่ localhost ไว้ก่อน (รายละเอียดในหัวข้อ Security)
คำสั่งที่ใช้บ่อย:
1docker logs -f 9router # ดู log2docker restart 9router # รีสตาร์ต3docker pull decolua/9router:latest # ดึง image ใหม่ แล้วค่อยลบ container เก่าและรันใหม่
ข้อมูลทั้งหมดอยู่ใน SQLite ที่ $HOME/.9router/db/data.sqlite บนเครื่อง host (ใน container คือ /app/data/db/data.sqlite) ส่วนไฟล์ .env
ไม่ได้ถูก bake เข้า imageถ้าจะตั้งค่า environment ให้ใช้ --env-file หรือ -e
เชื่อม Provider ตัวแรก
- 1.
เปิด Dashboard →
Providers - 2.
เลือก provider ที่มีอยู่ เช่น Claude Code (login ผ่าน OAuth), GLM (ใส่ API key) หรือ Kiro / OpenCode Free ถ้าอยากเริ่มจาก free tier
- 3.
คัดลอก
API key ของ 9Routerจาก dashboard ไว้ใช้กับเครื่องมือ (คนละตัวกับ key ของ provider)
แล้วตั้งค่าเครื่องมือด้วยสามค่านี้:
1Endpoint: http://localhost:20128/v12API Key: <คัดลอกจาก dashboard>3Model: kr/claude-sonnet-4.5
ชื่อโมเดลใน 9Router มี
prefixบอกว่าไปทาง provider ไหน:
Prefix | Provider | ประเภท |
|---|---|---|
cc/ | Claude Code | Subscription |
cx/ | Codex | Subscription |
gh/ | GitHub Copilot | Subscription |
cu/ | Cursor | Subscription |
glm/, minimax/, kimi/ | GLM, MiniMax, Kimi | จ่ายตามใช้ |
kr/ | Kiro | Free tier จำกัด |
oc/ | OpenCode Free | Free (รายชื่อโมเดลเปลี่ยนบ่อย) |
vertex/, vertex-partner/ | Google Vertex AI | เครดิตทดลอง |
ชื่อโมเดลทั้งหมดในบทความนี้เป็น
ตัวอย่างรายชื่อโมเดลของแต่ละ provider เปลี่ยนไปตามเวลา ให้เลือกจากรายการที่ dashboard แสดงจริง
ตัวอย่างการทำงาน
สร้าง Combo สำรองอัตโนมัติ
หัวใจของ 9Router คือ
Comboไปที่ Dashboard →
Combos→
Create Newแล้วเรียงโมเดลตามลำดับที่อยากใช้ เช่นตัวอย่าง "maximize-claude" จาก README:
1Combo: "maximize-claude"21. cc/claude-opus-4-7 ใช้ subscription ที่จ่ายอยู่แล้วก่อน32. glm/glm-5.1 ตัวสำรองราคาถูก43. kr/claude-sonnet-4.5 ตัวสำรองสุดท้ายจาก free tier
จากนั้นในเครื่องมือ ใส่
ชื่อ comboเป็นชื่อโมเดลได้เลย ถ้า Opus โควตาหมด request ถัดไปจะไป GLM เอง โดยที่เราไม่ต้องหยุดงาน
ตัวอย่าง combo เก่าใน README บางตัวยังมี if/ (iFlow) อยู่ ซึ่ง iFlow เลิกให้ใช้ฟรีแล้ว อย่าลอกไปทั้งดุ้น เช็กสถานะ provider ใน README ก่อนเสมอ
นอกจาก combo ยังทำ
multi-accountได้ คือผูกหลายบัญชีของ provider เดียวกัน แล้วให้ 9Router สลับแบบ round-robin หรือตามลำดับความสำคัญ แต่ฟีเจอร์นี้มีประเด็นเรื่องเงื่อนไขการใช้งาน (ดูหัวข้อ Free Tier และ ToS)
ทดสอบด้วย curl
ก่อนไปตั้งค่าเครื่องมือ ลองยิงตรงก่อนว่า router ทำงาน ตั้ง key ไว้ใน environment ของ shell (อย่าแปะลงในคำสั่งตรงๆ เพราะจะไปค้างใน shell history):
1# ดูรายชื่อโมเดลที่ใช้ได้2curl http://localhost:20128/v1/models \3-H "Authorization: Bearer $ROUTER_KEY"45# ลองถามจริงผ่าน combo6curl http://localhost:20128/v1/chat/completions \7-H "Authorization: Bearer $ROUTER_KEY" \8-H "Content-Type: application/json" \9-d '{"model": "maximize-claude", "messages": [{"role": "user", "content": "ping"}]}'
ถ้าได้คำตอบกลับมา ก็พร้อมต่อกับเครื่องมือแล้ว
ใช้กับเครื่องมือยอดนิยม
วิธีที่ง่ายและพลาดน้อยที่สุดคือไปที่ Dashboard →
CLI Toolsเลือกเครื่องมือ แล้วกด
Applyให้ 9Router เขียน config ให้ ด้านล่างคือสิ่งที่มันเขียนจริง (ผมเปิดดูจาก source code ของ dashboard) เผื่ออยากตั้งเองหรือเช็กว่าถูกไหม
Claude Code
Dashboard จะเขียนลงไฟล์ ~/.claude/settings.json ในส่วน env:
1{2"env": {3"ANTHROPIC_BASE_URL": "http://localhost:20128/v1",4"ANTHROPIC_AUTH_TOKEN": "<API key ของ 9Router>",5"ANTHROPIC_DEFAULT_OPUS_MODEL": "maximize-claude",6"ANTHROPIC_DEFAULT_SONNET_MODEL": "kr/claude-sonnet-4.5",7"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm/glm-5.1"8}9}
ชื่อโมเดลสามช่องเป็นตัวอย่าง เลือกตาม combo หรือโมเดลที่คุณเชื่อมไว้ จุดที่คนพลาดบ่อยคือ base URL ต้องลงท้ายด้วย
/v1(dashboard เติมให้เอง) และตัวอย่างใน README ที่ใช้ไฟล์ ~/.claude/config.json ดูจะเป็นวิธีเก่า ให้ยึดตาม dashboard
ถ้าอยากลองชั่วคราวโดยไม่แก้ไฟล์ ใช้ environment variable แบบที่ docs ของ 9Router แนะนำ:
1export ANTHROPIC_BASE_URL="http://localhost:20128/v1"2export ANTHROPIC_AUTH_TOKEN="$ROUTER_KEY"3claude
Codex CLI
Dashboard จะเขียนลงไฟล์ ~/.codex/config.toml แบบนี้:
1model = "maximize-claude"2model_provider = "9router"34[model_providers.9router]5name = "9Router"6base_url = "http://localhost:20128/v1"7wire_api = "responses"8http_headers = { Authorization = "Bearer <API key ของ 9Router>" }
สองจุดที่ควรรู้:
- wire_api = "responses"
คือให้ Codex คุยด้วย Responses API แล้ว 9Router แปลง format ให้ provider ปลายทาง
source code ของ dashboard ระบุว่า custom provider ของ Codex ไม่อ่าน key จาก auth.json จึงใส่ key เป็น header
ตรงๆ ในไฟล์ config.tomlแปลว่าไฟล์นี้มี secret อยู่ด้วย ถ้าคุณ sync dotfiles ขึ้น Git อย่าลืม ignore ไฟล์นี้
Cursor
ตัวอย่างใน README ของ 9Router ตั้งค่า Cursor ชี้มาที่ localhost ตรงๆ:
1Cursor Settings → Models → Advanced2OpenAI API Base URL: http://localhost:20128/v13OpenAI API Key: <API key ของ 9Router>4Model: cc/claude-opus-4-7
แต่ Cursor บางฟีเจอร์หรือบางเวอร์ชันส่ง request ผ่านเซิร์ฟเวอร์ของ Cursor เองก่อน
ถ้าตั้งแบบข้างบนแล้วใช้ไม่ได้ แปลว่า Cursor ต้องการ URL ที่เข้าถึงได้จากภายนอก ทางเลือกคือ:
deploy 9Router บน VPS ที่มีโดเมนและ HTTPS แล้วใช้ https://your-domain.com/v1
ใช้ฟีเจอร์ tunnel ของ 9Router ที่เปิด Cloudflare Tunnel ให้ได้ URL สาธารณะ โดย URL นี้ตั้งผ่านบริการ relay ของบุคคลที่สาม request ของคุณจึงวิ่งผ่านโครงสร้างที่คุณไม่ได้ควบคุม ถ้าเป็นโค้ดที่อ่อนไหว การตั้ง VPS ของตัวเองพร้อม HTTPS จะปลอดภัยกว่า
ทั้งสองทางคือการเปิด 9Router ออกอินเทอร์เน็ต ต้องทำหัวข้อ Security ด้านล่างให้ครบ
ก่อนโดยเฉพาะ REQUIRE_API_KEY
Cline, Continue และ RooCode
เครื่องมือกลุ่มนี้รองรับ provider แบบ OpenAI Compatible อยู่แล้ว ตั้งแค่สามค่า:
1Provider: OpenAI Compatible2Base URL: http://localhost:20128/v13API Key: <API key ของ 9Router>4Model: cc/claude-opus-4-7 (หรือชื่อ combo)
ส่วน OpenClaw ใช้ Dashboard → CLI Tools → OpenClaw → Apply ได้เลย และ docs แนะนำให้ใช้ 127.0.0.1 แทนคำว่า localhost
ใช้ในทีมและองค์กร
9Router ออกแบบมาเป็น
router ประจำตัวนักพัฒนาแต่ละคนเป็นหลัก ถ้าจะใช้ร่วมกันในทีม แนวทางที่สมเหตุสมผลคือ:
- รันหนึ่ง instance ต่อคน
ง่ายที่สุดและปลอดภัยที่สุด แต่ละคนใช้บัญชี provider ของตัวเอง
ถ้าต้องมี
instance กลางให้รันบน VPS หรือเซิร์ฟเวอร์ภายใน ที่เข้าถึงได้ผ่าน
VPN หรือ private networkเท่านั้น และอยู่หลัง reverse proxy ที่มี HTTPS (docs มีตัวอย่าง Nginx + Certbot)
ใช้
API key แยกต่อคนหรือต่อเครื่องมือจะได้ revoke ทีละตัวได้ และดู usage แยกกันได้
เลือกโมเดลแบบ
pay-as-you-go ที่บริษัทเป็นเจ้าของสำหรับงานทีม แทนการเอา subscription ส่วนตัวมาแชร์
การ deploy บน VPS ตาม docs ใช้ขั้นตอนประมาณนี้:
1git clone https://github.com/decolua/9router.git2cd 9router3npm install4npm run build56export NODE_ENV=production7export PORT=201288export DATA_DIR=/var/lib/9router9export JWT_SECRET="<สุ่มค่ายาว เช่นจาก openssl rand -hex 32>"10export INITIAL_PASSWORD="<รหัสผ่านที่แข็งแรง>"11export API_KEY_SECRET="<สุ่มค่ายาว>"12export MACHINE_ID_SALT="<สุ่มค่ายาว>"13export REQUIRE_API_KEY=true14export AUTH_COOKIE_SECURE=true1516pm2 start npm --name 9router -- start17pm2 save18pm2 startup
ข้อควรระวังที่สำคัญที่สุดของการใช้ในทีม:
อย่าเอาบัญชี subscription ส่วนตัว (เช่น Claude Pro/Max หรือ ChatGPT) มาแชร์ให้หลายคนใช้ผ่าน router กลางนี่คือรูปแบบที่มีโอกาสขัดกับเงื่อนไขการใช้งานของ provider มากที่สุด
Security: ตั้งค่าอะไรบ้างก่อนใช้จริง
9Router ถือของสำคัญไว้เยอะ ทั้ง OAuth token ของ subscription, API key ของ provider และ API key ของตัวมันเอง ทั้งหมดอยู่ใน SQLite ใน DATA_DIR (ค่าเริ่มต้นคือ ~/.9router) ใครเข้าถึงเครื่องหรือ dashboard ได้ ก็เท่ากับใช้บัญชี AI ของคุณได้
เปลี่ยนค่า default ที่เป็นที่รู้กันทั่วไป
ค่าเริ่มต้นเหล่านี้เขียนไว้ใน docs สาธารณะ ใครก็รู้ ต้องเปลี่ยนก่อนเปิดใช้นอกเครื่องตัวเอง:
Environment variable | ค่าเริ่มต้น | ควรทำ |
|---|---|---|
INITIAL_PASSWORD | 123456 | ตั้งรหัสผ่านที่แข็งแรง |
API_KEY_SECRET | endpoint-proxy-api-key-secret | สุ่มค่าใหม่ |
MACHINE_ID_SALT | endpoint-proxy-salt | สุ่มค่าใหม่ |
JWT_SECRET | สร้างอัตโนมัติไว้ที่ ~/.9router/jwt-secret | ตั้งเองบน production |
REQUIRE_API_KEY | false | ตั้งเป็น true ถ้าเปิดออก network |
AUTH_COOKIE_SECURE | false | ตั้งเป็น true เมื่ออยู่หลัง HTTPS |
สร้างค่าสุ่มได้ด้วย:
1openssl rand -hex 32
อย่าเปิดพอร์ต 20128 ออกอินเทอร์เน็ตตรงๆ
ใน Docker ตัว 9Router ตั้ง HOSTNAME เป็น 0.0.0.0 คือรับทุก interface ถ้าใช้บนเครื่องตัวเอง ให้ bind พอร์ตแค่ 127.0.0.1 แบบตัวอย่างข้างบน ถ้าต้องเข้าจากที่อื่น ให้ผ่าน VPN หรือ reverse proxy ที่มี HTTPS และเปิด REQUIRE_API_KEY ซึ่ง docs ระบุเองว่า "แนะนำสำหรับ deploy ที่เปิดออกอินเทอร์เน็ต" เพราะถ้าไม่เปิด ใครเข้าถึง /v1 ได้ก็ใช้โควตาคุณได้
ระวัง request log
ENABLE_REQUEST_LOGS ปิดไว้เป็นค่าเริ่มต้น ถ้าเปิดเพื่อ debug มันจะเก็บ request และ response
รวม header และ payloadไว้ในโฟลเดอร์ logs/ ซึ่งอาจมีโค้ดของบริษัทและ token อยู่ในนั้น ใช้เสร็จให้ปิด แล้วลบ log ทิ้ง
ดูแล DATA_DIR และไฟล์ config ของเครื่องมือ
9Router ทำ backup อัตโนมัติไว้ที่ DATA_DIR/db/backups/ แปลว่า secret มีหลายสำเนา ตั้ง permission ของโฟลเดอร์ให้เจ้าของอ่านได้คนเดียว และอย่า sync โฟลเดอร์นี้ขึ้น cloud drive
ไฟล์ ~/.claude/settings.json และ ~/.codex/config.toml ที่ dashboard เขียนให้ มี API key ของ 9Router อยู่ด้วย อย่า commit ขึ้น Git
- Cloud Sync
เป็นฟีเจอร์เสริม README ระบุว่ามัน sync providers, combos และ settings ข้ามเครื่อง ผ่าน cloud endpoint (ค่าเริ่มต้นของ CLOUD_URL คือ https://9router.com) ถ้าไม่จำเป็นก็ไม่ต้องเปิด
ข้อควรรู้เรื่อง Free Tier และเงื่อนไขการใช้งาน
ส่วนนี้สำคัญพอๆ กับวิธีติดตั้ง เพราะคำว่า "ใช้ AI ฟรีไม่จำกัด" ที่เห็นกันบ่อย
ไม่จริงFree tier มีเพดานและเปลี่ยนบ่อย
ข้อมูลจาก README ของ 9Router (ข้อมูล ณ ตุลาคม 2026):
- Kiro
เปลี่ยนเป็นแบบเสียเงินตั้งแต่กันยายน 2025 ตารางใน README ระบุ free tier ไว้ที่ 50 credits ต่อเดือน (บัญชีใหม่ได้ trial 500 credits ใน 30 วันแรก) แต่ขั้นตอนตั้งค่า Kiro ในส่วนอื่นของ README เดียวกันยังเขียนว่า "Unlimited usage" อยู่ เอกสารขัดกันเอง ผมจึงยึดตัวเลข 50 credits และนี่คือเหตุผลที่ไม่ควรเชื่อคำว่า "ไม่จำกัด" ง่ายๆ
- OpenCode Free
รายชื่อโมเดลที่ใช้ได้ขึ้นลงบ่อย
- Vertex AI
บัญชี GCP ใหม่ได้เครดิต $300 ใช้ได้ 90 วัน แต่ตั้งแต่มีนาคม 2026 การเรียกผ่าน Gemini API endpoint ไม่ตัดจากเครดิตนี้แล้ว ต้องใช้ endpoint ของ Vertex AI Studio
- ที่ปิดไปแล้ว:
iFlow เปลี่ยนเป็นเสียเงิน, Qwen Code ปิด free OAuth tier เมื่อ 15 เมษายน 2026 และ Gemini CLI ปิดเมื่อ 18 มิถุนายน 2026
ราคาของ provider แบบจ่ายตามใช้ที่อ้างใน README (เช่น GLM ราว $0.6 ต่อ 1M token และ MiniMax ราว $0.2 ต่อ 1M token) ก็เปลี่ยนได้ ให้เช็กหน้า pricing ของ provider ก่อนตั้ง combo
เงื่อนไขการใช้งาน (ToS) ของ provider
9Router ใช้ OAuth ของ subscription อย่าง Claude Code, Codex, GitHub Copilot และ Cursor เพื่อเรียกโมเดลจาก
นอก client ทางการนอกจากนี้ยังรองรับการผูกหลายบัญชีแล้วสลับใช้แบบ round-robin
สิ่งเหล่านี้
อาจขัดกับเงื่อนไขการใช้งานของ providerและผลที่เป็นไปได้คือบัญชีถูกจำกัดหรือระงับ ก่อนใช้ ให้อ่าน ToS ของแต่ละเจ้าด้วยตัวเอง โดยเฉพาะ:
การใช้ subscription ผ่านเครื่องมือหรือ proxy ที่ไม่ใช่ของ provider
การแชร์บัญชีเดียวให้หลายคนใช้
การเปิดหลายบัญชีเพื่อเลี่ยง rate limit
ถ้าอยากใช้แบบสบายใจ ให้ใช้ API key แบบจ่ายตามใช้เป็นหลัก แล้วใช้ subscription เท่าที่เงื่อนไขอนุญาต
Best Practices
✅
เริ่มจาก combo สั้นๆ2–3 โมเดลก็พอ เรียงจากที่จ่ายอยู่แล้ว ไปถูก ไปฟรี
✅
ให้งานหนักไปโมเดลแรง งานเบาไปโมเดลถูกผ่านตัวแปร ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL และ ANTHROPIC_DEFAULT_HAIKU_MODEL ของ Claude Code
✅
เปิด RTK ไว้มันปลอดภัยเพราะถ้าบีบอัดไม่ได้จะส่งของเดิม ถ้า request ไหนต้องการ output แบบเต็มจริงๆ ส่ง header X-9Router-Token-Saver: off เพื่อปิดเฉพาะครั้งนั้น
✅
ใช้ API key แยกต่อเครื่องมือหลุดตัวไหนก็ revoke เฉพาะตัวนั้น
✅
ดู quota tracker เป็นประจำจะได้รู้ว่า combo ตกไป fallback บ่อยแค่ไหน
✅
อัปเดตสม่ำเสมอprovider เปลี่ยนเงื่อนไขบ่อย 9Router ก็อัปเดตตาม
❌ อย่าเปิดพอร์ตออกอินเทอร์เน็ตโดยไม่มี HTTPS และ REQUIRE_API_KEY
❌ อย่าใช้รหัสผ่าน default 123456
❌ อย่าลอก combo ตัวอย่างเก่าที่อ้างถึง provider ที่ปิดไปแล้ว
FAQ
9Router ฟรีไหม
ตัว 9Router ฟรีและเป็น open source (MIT) แต่โมเดลที่อยู่ข้างหลังไม่ได้ฟรีเสมอ ขึ้นกับ provider ที่คุณเชื่อม free tier ส่วนใหญ่มีเพดานและเปลี่ยนเงื่อนไขบ่อย
ข้อมูลและโค้ดของเราถูกส่งไปที่ 9router.com ไหม
FAQ ของ 9Router ระบุว่าข้อมูลเก็บไว้ในเครื่องที่ ~/.9router (หรือ DATA_DIR ที่ตั้งเอง) ส่วน Cloud Sync ถ้าเปิด จะ sync providers, combos และ settings ผ่าน cloud endpoint ซึ่งค่าเริ่มต้นคือ 9router.com
ที่ต้องจำคือ โค้ดและ prompt ของคุณ
ยังไปถึง provider ปลายทางเสมอ เหมือนใช้เครื่องมือนั้นตรงๆ
ใช้ 9Router แล้วผิด ToS ไหม
ตัว 9Router ไม่ได้ผิดอะไร แต่
วิธีที่เราใช้อาจขัดกับ ToS ของ provider ได้ โดยเฉพาะการใช้ subscription นอก client ทางการ การแชร์บัญชี และการสลับหลายบัญชี อ่านเงื่อนไขของแต่ละเจ้าก่อน
Cursor ใช้กับ localhost ได้ไหม
ตัวอย่างทางการใน README ใช้ http://localhost:20128/v1 ซึ่งควรลองก่อน แต่
ถ้าใช้ไม่ได้ อาจเป็นเพราะ Cursor ส่ง request บางส่วนผ่านเซิร์ฟเวอร์ของตัวเอง กรณีนั้นต้องใช้ URL ที่เข้าถึงได้จากภายนอก เช่น VPS ที่มี HTTPS หรือฟีเจอร์ tunnel ของ 9Router และต้องตั้งค่า security ให้ครบก่อนเปิด ทั้งนี้ URL ของ tunnel ตั้งผ่านบริการ relay ของบุคคลที่สาม request จึงวิ่งผ่านโครงสร้างที่คุณไม่ได้ควบคุม ถ้าเป็นโค้ดที่อ่อนไหว VPS ของตัวเองพร้อม HTTPS เป็นทางที่ปลอดภัยกว่า
พอร์ต 20128 ถูกใช้อยู่แล้ว ทำอย่างไร
เช็กว่าโปรเซสไหนใช้อยู่:
1lsof -i :20128
ถ้าเป็น 9Router ตัวเก่าที่ค้างอยู่ก็ปิดไป หรือเปลี่ยนพอร์ตด้วย environment variable PORT แล้วอย่าลืมแก้ base URL ในเครื่องมือให้ตรงกัน
ต่างจากการใช้ OpenRouter หรือ LiteLLM อย่างไร
ในความเห็นผม 9Router เหมาะกับงาน
AI coding toolsมากกว่า เพราะมันรองรับ OAuth ของ subscription อย่าง Claude Code และ Codex มี combo fallback, quota tracking ตามรอบ reset และ RTK ที่บีบอัด tool result ซึ่งเครื่องมือเขียนโค้ดสร้างออกมาเยอะ ส่วน OpenRouter กับ LiteLLM ผมมองว่าเหมาะกับงานที่ใช้ API key แบบจ่ายตามใช้เป็นหลัก ลองเทียบฟีเจอร์ล่าสุดจากเว็บของแต่ละตัวอีกที
สรุป
9Router เหมาะกับคนที่ใช้ AI เขียนโค้ดหลายตัว หลาย provider และเบื่อการที่งานสะดุดเพราะโควตาหมด
ข้อดี:
✅ endpoint เดียวสำหรับทุกเครื่องมือ
✅ combo fallback ทำให้งานไม่หยุด
✅ RTK ช่วยลด token จาก tool result
✅ open source รันบนเครื่องเราเอง
ข้อควรระวัง:
❌ free tier มีเพดานและเปลี่ยนบ่อย ไม่ได้ฟรีไม่จำกัด
❌ การใช้ subscription ผ่าน proxy และการแชร์บัญชีอาจขัด ToS
❌ ค่า default บางตัวไม่ปลอดภัย ต้องตั้งเองก่อนเปิดออก network
👉 คำแนะนำของผม: เริ่มจากรันบนเครื่องตัวเอง bind แค่ 127.0.0.1 เชื่อม provider ที่มีอยู่แล้วหนึ่งตัวกับตัวสำรองราคาถูกหนึ่งตัว ทำ combo สั้นๆ แล้วต่อกับ Claude Code หรือ Codex ผ่าน CLI Tools ในหน้า dashboard ใช้สักสัปดาห์ แล้วค่อยตัดสินใจว่าจะขยายต่อหรือไม่
ลิงก์ที่เกี่ยวข้อง:



