Written & drawn bycreaml4tt3© 2026

Home/Blogs/9Router คืออะไร? รวม Claude Code, Codex และ AI ฟรีไว้ endpoint เดียว ให้โค้ดต่อได้ไม่สะดุด

9Router คืออะไร? รวม Claude Code, Codex และ AI ฟรีไว้ endpoint เดียว ให้โค้ดต่อได้ไม่สะดุด

Personal16 Oct 2026 07:557 days ago
9Router คืออะไร? รวม Claude Code, Codex และ AI ฟรีไว้ endpoint เดียว ให้โค้ดต่อได้ไม่สะดุด

In short

ใช้ 9Router ทำ local proxy ให้ Claude Code, Codex และ Cursor สลับไปใช้ provider สำรองอัตโนมัติเมื่อโควตาหมด พร้อมวิธีติดตั้ง ตั้งค่า และเรื่องความปลอดภัยที่ต้องรู้

On this page

12 sections
  1. 019Router คืออะไร
  2. 02ทำไม AI Router ถึงสำคัญ
  3. 03สิ่งที่ต้องเตรียม
  4. 04วิธีติดตั้งเบื้องต้น
    1. ติดตั้งผ่าน npm
    2. รันด้วย Docker
    3. เชื่อม Provider ตัวแรก
  5. 05ตัวอย่างการทำงาน
    1. สร้าง Combo สำรองอัตโนมัติ
    2. ทดสอบด้วย curl
  6. 06ใช้กับเครื่องมือยอดนิยม
    1. Claude Code
    2. Codex CLI
    3. Cursor
    4. Cline, Continue และ RooCode
  7. 07ใช้ในทีมและองค์กร
  8. 08Security: ตั้งค่าอะไรบ้างก่อนใช้จริง
    1. เปลี่ยนค่า default ที่เป็นที่รู้กันทั่วไป
    2. อย่าเปิดพอร์ต 20128 ออกอินเทอร์เน็ตตรงๆ
    3. ระวัง request log
    4. ดูแล DATA_DIR และไฟล์ config ของเครื่องมือ
  9. 09ข้อควรรู้เรื่อง Free Tier และเงื่อนไขการใช้งาน
    1. Free tier มีเพดานและเปลี่ยนบ่อย
    2. เงื่อนไขการใช้งาน (ToS) ของ provider
  10. 10Best Practices
  11. 11FAQ
    1. 9Router ฟรีไหม
    2. ข้อมูลและโค้ดของเราถูกส่งไปที่ 9router.com ไหม
    3. ใช้ 9Router แล้วผิด ToS ไหม
    4. Cursor ใช้กับ localhost ได้ไหม
    5. พอร์ต 20128 ถูกใช้อยู่แล้ว ทำอย่างไร
    6. ต่างจากการใช้ OpenRouter หรือ LiteLLM อย่างไร
  12. 12สรุป

ถ้าคุณใช้ Claude Code หรือ Codex ทุกวัน น่าจะเคยเจอโมเมนต์นี้: กำลังแก้บั๊กอยู่ดีๆ แล้ว

rate limit ขึ้น

หรือโควตา 5 ชั่วโมงหมด งานค้างกลางทาง ต้องรอ หรือไม่ก็ต้องไปเปลี่ยน API key กับ base URL เองทีละเครื่องมือ

9Router

แก้ปัญหานี้ด้วยการเป็น 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 จริง:

แผนภาพ flow ของ 9Router จาก CLI tools ผ่าน localhost:20128 ไปยัง 3 tier คือ Subscription, Cheap และ Free พร้อมลูกศร fallback

สิ่งที่ต้องเตรียม

  • 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

วิธีที่เร็วที่สุด:

1
npm install -g 9router
2
9router

รันแล้ว dashboard จะเปิดที่ http://localhost:20128 ส่วน URL ที่จะใช้บ่อยมีสองตัว:

1
Dashboard: http://localhost:20128/dashboard
2
OpenAI-compatible API: http://localhost:20128/v1

เวอร์ชันบน npm อาจใหม่กว่าที่เห็นใน GitHub Releases ดูเวอร์ชันล่าสุดได้จาก npm โดยตรง ไม่ต้องยึดเลขเวอร์ชันในบทความไหน

รันด้วย Docker

ถ้าอยากให้ข้อมูลอยู่ที่ volume แยก และอัปเดตง่าย ใช้ image ทางการ (มีทั้ง amd64 และ arm64):

1
docker 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 \
6
decolua/9router:latest

สังเกตว่าผมใส่

127.0.0.1:

หน้าพอร์ต ตัวอย่างใน README ใช้ -p 20128:20128 ซึ่ง Docker จะเปิดพอร์ตให้ทุก network interface ถ้าเครื่องคุณอยู่ใน network ที่คนอื่นเข้าถึงได้ ให้ bind แค่ localhost ไว้ก่อน (รายละเอียดในหัวข้อ Security)

คำสั่งที่ใช้บ่อย:

1
docker logs -f 9router # ดู log
2
docker restart 9router # รีสตาร์ต
3
docker 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. 1.

    เปิด Dashboard →

    Providers
  2. 2.

    เลือก provider ที่มีอยู่ เช่น Claude Code (login ผ่าน OAuth), GLM (ใส่ API key) หรือ Kiro / OpenCode Free ถ้าอยากเริ่มจาก free tier

  3. 3.

    คัดลอก

    API key ของ 9Router

    จาก dashboard ไว้ใช้กับเครื่องมือ (คนละตัวกับ key ของ provider)

แล้วตั้งค่าเครื่องมือด้วยสามค่านี้:

1
Endpoint: http://localhost:20128/v1
2
API Key: <คัดลอกจาก dashboard>
3
Model: 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:

1
Combo: "maximize-claude"
2
1. cc/claude-opus-4-7 ใช้ subscription ที่จ่ายอยู่แล้วก่อน
3
2. glm/glm-5.1 ตัวสำรองราคาถูก
4
3. 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
# ดูรายชื่อโมเดลที่ใช้ได้
2
curl http://localhost:20128/v1/models \
3
-H "Authorization: Bearer $ROUTER_KEY"
4
5
# ลองถามจริงผ่าน combo
6
curl 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 แนะนำ:

1
export ANTHROPIC_BASE_URL="http://localhost:20128/v1"
2
export ANTHROPIC_AUTH_TOKEN="$ROUTER_KEY"
3
claude

Codex CLI

Dashboard จะเขียนลงไฟล์ ~/.codex/config.toml แบบนี้:

1
model = "maximize-claude"
2
model_provider = "9router"
3
4
[model_providers.9router]
5
name = "9Router"
6
base_url = "http://localhost:20128/v1"
7
wire_api = "responses"
8
http_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 ตรงๆ:

1
Cursor Settings → Models → Advanced
2
OpenAI API Base URL: http://localhost:20128/v1
3
OpenAI API Key: <API key ของ 9Router>
4
Model: 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 อยู่แล้ว ตั้งแค่สามค่า:

1
Provider: OpenAI Compatible
2
Base URL: http://localhost:20128/v1
3
API Key: <API key ของ 9Router>
4
Model: 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 ใช้ขั้นตอนประมาณนี้:

1
git clone https://github.com/decolua/9router.git
2
cd 9router
3
npm install
4
npm run build
5
6
export NODE_ENV=production
7
export PORT=20128
8
export DATA_DIR=/var/lib/9router
9
export JWT_SECRET="<สุ่มค่ายาว เช่นจาก openssl rand -hex 32>"
10
export INITIAL_PASSWORD="<รหัสผ่านที่แข็งแรง>"
11
export API_KEY_SECRET="<สุ่มค่ายาว>"
12
export MACHINE_ID_SALT="<สุ่มค่ายาว>"
13
export REQUIRE_API_KEY=true
14
export AUTH_COOKIE_SECURE=true
15
16
pm2 start npm --name 9router -- start
17
pm2 save
18
pm2 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

สร้างค่าสุ่มได้ด้วย:

1
openssl 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 ถูกใช้อยู่แล้ว ทำอย่างไร

เช็กว่าโปรเซสไหนใช้อยู่:

1
lsof -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 ใช้สักสัปดาห์ แล้วค่อยตัดสินใจว่าจะขยายต่อหรือไม่

ลิงก์ที่เกี่ยวข้อง:

  • 9Router บน GitHub
  • เว็บไซต์ 9Router
  • Docker image decolua/9router
#9router#ai-router#ai-proxy#llm-gateway#claude-code#codex#cursor#cline#openai-compatible-api#ai-coding-tools#developer-tools#self-hosted#docker#nodejs#token-saving#model-fallback#rate-limit#open-source#security#เครื่องมือนักพัฒนา#ประหยัด-token#ai-ฟรี#เขียนโค้ดด้วย-ai#ติดตั้ง-9router
Teekayu Poongkawabutr (Pon)
Teekayu Poongkawabutr (Pon)(Creaml4tt3)

Developer ท่านหนึ่งที่ทำงานบ้าง ไม่ทำงานบ้าง ทำงานเป็น dev แต่จบ graphic ชีวิตสับสน website: creaml4tt3.me

Further Reading

Related Blogs

Google Workspace MCP ขึ้น The caller does not have permission? สาเหตุและวิธีแก้ใน Claude Code

Google Workspace MCP ขึ้น The caller does not have permission? สาเหตุและวิธีแก้ใน Claude Code

ต่อ Claude Code กับ MCP ของ Google Drive, Sheets หรือ Slides แล้วขึ้น The caller does not have permission? สาเหตุหลักคือยังไม่ได้สมัคร Developer Preview นี่คือสิ่งที่ต้องมีและขั้นตอนแบบย่อ

23 Oct 20268 hours ago
Husky + lint-staged: ทำให้ Git Commit สะอาดขึ้นแบบอัตโนมัติ

Husky + lint-staged: ทำให้ Git Commit สะอาดขึ้นแบบอัตโนมัติ

ตั้งค่า Git workflow ให้สะอาดและอัตโนมัติด้วย Husky + lint-staged พร้อมสอนติดตั้ง วิธีใช้งาน ข้อดีข้อเสีย และ optional setup สำหรับ formatter/linter อย่าง Prettier และ Biome

10 May 20265 months ago

More Field Notes

Latest Blogs

View all
Google Workspace MCP ขึ้น The caller does not have permission? สาเหตุและวิธีแก้ใน Claude CodePersonal

Google Workspace MCP ขึ้น The caller does not have permission? สาเหตุและวิธีแก้ใน Claude Code

ต่อ Claude Code กับ MCP ของ Google Drive, Sheets หรือ Slides แล้วขึ้น The caller does not have permission? สาเหตุหลักคือยังไม่ได้สมัคร Developer Preview นี่คือสิ่งที่ต้องมีและขั้นตอนแบบย่อ

23 Oct 20268 hours ago
Twintail คืออะไร? สร้าง Persona Skill ซึนเดเระให้ Claude Code กับ Codex และบทเรียนจากการวัดผลจริงPersonal

Twintail คืออะไร? สร้าง Persona Skill ซึนเดเระให้ Claude Code กับ Codex และบทเรียนจากการวัดผลจริง

Twintail คือ skill บุคลิกซึนเดเระแบบโอเพนซอร์สสำหรับ Claude Code และ Codex ติดตั้งคำสั่งเดียว พร้อมบทเรียนจากการทำ eval ว่าทำ persona ยังไงไม่ให้คำตอบแย่ลง

22 Oct 2026a day ago
Next.js SEO Checklist 2026: 12 เทคนิคเพิ่มอันดับ Google สำหรับเว็บไซต์ Next.js

Next.js SEO Checklist 2026: 12 เทคนิคเพิ่มอันดับ Google สำหรับเว็บไซต์ Next.js

รวม Next.js SEO Checklist 2026 ตั้งแต่ Metadata API, Open Graph, Sitemap, Robots.txt, JSON-LD และ Core Web Vitals เพื่อช่วยให้เว็บไซต์ติดอันดับ Google ได้ดีขึ้น

01 Jun 20265 months ago