Observed since 20 Oct, 21:41 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Unofficial CLI tool for checking 9Router model availability
Unofficial CLI tool untuk mengecek ketersediaan dan kesehatan model AI pada server 9Router.
9Router Check adalah tool command-line yang membantu Anda memantau ketersediaan dan kesehatan model AI melalui server 9Router. Tool ini terhubung ke instance 9Router Anda, menemukan semua model yang tersedia, dan menguji masing-masing model untuk memberikan informasi status secara real-time.
| Komponen | Versi Minimum |
|---|---|
| Node.js | >= 18.0.0 |
| npm | >= 9.0.0 |
| Server 9Router | Berjalan dan dapat diakses |
npm install -g 9router-check
Setelah install, Anda bisa langsung menjalankan dari terminal mana saja:
9router-check
npx 9router-check
# Clone repository
git clone https://github.com/Adiwijaya11/9router-check-model.git
cd 9router-check-model
# Install dependencies
npm install
# Build project
npm run build
# Jalankan
npm start
| Variable | Wajib | Default | Keterangan |
|---|---|---|---|
NINE_ROUTER_BASE_URL | Tidak | http://localhost:20128/v1 | Base URL API 9Router |
NINE_ROUTER_API_KEY | Ya | — | API key 9Router Anda |
Opsi 1: File .env
Buat file .env di root project:
NINE_ROUTER_BASE_URL=http://localhost:20128/v1
NINE_ROUTER_API_KEY=your-api-key-here
Opsi 2: Environment Variable di Terminal
Linux / macOS:
export NINE_ROUTER_BASE_URL=http://localhost:20128/v1
export NINE_ROUTER_API_KEY=your-api-key-here
Windows (PowerShell):
$env:NINE_ROUTER_BASE_URL="http://localhost:20128/v1"
$env:NINE_ROUTER_API_KEY="your-api-key-here"
Opsi 3: Prompt Interaktif
Jika NINE_ROUTER_API_KEY tidak diset, tool akan meminta Anda memasukkan API key saat dijalankan.
# Pengecekan dasar
9router-check
# Dengan concurrency 5
9router-check --concurrency 5
# Output sebagai JSON
9router-check --json
# Output sebagai CSV
9router-check --csv
# Filter berdasarkan provider
9router-check --provider cc
# Kombinasi opsi
9router-check --concurrency 5 --json --provider cc
| Opsi | Short | Default | Keterangan |
|---|---|---|---|
--help | -h | — | Tampilkan pesan bantuan |
--version | -v | — | Tampilkan versi |
--base-url <url> | -b | http://localhost:20128/v1 | Base URL 9Router |
--concurrency <n> | -c | 3 | Maksimal request bersamaan |
--provider <name> | -p | — | Filter berdasarkan provider |
--json | — | false | Output sebagai JSON |
--csv | — | false | Output sebagai CSV |
$ 9router-check
╔══════════════════════════════════════════════════════════╗
║ 9Router Model Checker v0.1.0 ║
╚══════════════════════════════════════════════════════════╝
Base URL: http://localhost:20128/v1
API Key: ***abcd
Fetching models...
Cek model dari provider: cc (5 model)
✓ claude-opus-4-5-20251101 HIDUP 1.21s
✓ claude-sonnet-4-20250514 HIDUP 0.95s
✗ claude-haiku-4-20251001 MATI 0.50s
Cek model dari provider: gemini (3 model)
✓ gemini-pro HIDUP 0.80s
⚠ gemini-flash LIMIT 2.10s
──────────────────────────────────────────────────
Total Model : 8
Hidup : 3
Mati : 1
Limit : 1
Timeout : 0
Auth Error : 0
Provider Error: 0
Invalid : 0
Unknown : 0
──────────────────────────────────────────────────
$ 9router-check --json
{
"summary": {
"total": 8,
"active": 3,
"unavailable": 1,
"rateLimited": 1,
"timeout": 0,
"authError": 0,
"providerError": 0,
"invalidResponse": 0,
"unknownError": 0
},
"providers": [
{
"name": "cc",
"models": [
{
"id": "claude-opus-4-5-20251101",
"status": "ACTIVE",
"latencyMs": 1210
}
]
}
]
}
$ 9router-check --csv
provider,model,status,latencyMs,error
cc,claude-opus-4-5-20251101,ACTIVE,1210,
cc,claude-sonnet-4-20250514,ACTIVE,950,
cc,claude-haiku-4-20251001,UNAVAILABLE,500,Model not found
Menampilkan hasil pengecekan secara visual dengan warna:
Output terstruktur yang cocok untuk:
Output tabular yang cocok untuk:
| Status | Simbol | Keterangan |
|---|---|---|
ACTIVE | ✓ | Model berfungsi normal dan dapat digunakan |
UNAVAILABLE | ✗ | Model tidak ditemukan atau tidak tersedia |
RATE_LIMITED | ⚠ | Rate limit exceeded (429) — terlalu banyak request |
AUTH_ERROR | ✗ | Authentication gagal (401/403) — API key salah/expired |
PROVIDER_ERROR | ✗ | Provider server error (5xx) — masalah di sisi provider |
TIMEOUT | ⚠ | Request timeout — model terlalu lambat merespons |
INVALID_RESPONSE | ✗ | Response tidak valid — format response salah |
UNKNOWN_ERROR | ? | Error tidak dikenali — perlu investigasi lebih lanjut |
9router-check-model/
│
├── src/
│ ├── index.ts # CLI entry point
│ ├── config/
│ │ └── config.ts # Configuration management
│ ├── router/
│ │ ├── client.ts # 9Router API client
│ │ └── models.ts # Model discovery
│ ├── tester/
│ │ ├── model-tester.ts # Model health checker
│ │ ├── concurrency.ts # Concurrency controller
│ │ └── retry.ts # Retry logic
│ ├── classifier/
│ │ └── error-classifier.ts # Error classification
│ ├── output/
│ │ ├── terminal.ts # Terminal output
│ │ ├── json.ts # JSON output
│ │ └── csv.ts # CSV output
│ └── types/
│ └── index.ts # Type definitions
│
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md
git clone https://github.com/Adiwijaya11/9router-check-model.git
cd 9router-check-model
npm install
| Perintah | Keterangan |
|---|---|
npm run dev | Jalankan dalam mode development dengan ts-node |
npm run build | Compile TypeScript ke JavaScript |
npm start | Jalankan hasil compile |
npm test | Jalankan semua test |
npm test
Test terletak di samping file source dengan ekstensi .test.ts.
Penyebab: API key tidak diset atau tidak valid.
Solusi:
export NINE_ROUTER_API_KEY=your-api-key-here
Penyebab: Server 9Router tidak berjalan atau Base URL salah.
Solusi:
curl http://localhost:20128/v1/modelsPenyebab: API key salah atau expired.
Solusi:
Penyebab: Server 9Router lambat atau concurrency terlalu tinggi.
Solusi:
# Kurangi concurrency
9router-check --concurrency 1
ISC License — lihat file LICENSE untuk detail lengkap.
⚠️ Ini adalah tool unofficial dan tidak berafiliasi dengan atau didukung oleh 9Router. Gunakan dengan risiko Anda sendiri.
Download counts and popularity will appear here as the collector receives them.
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:41 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d205775ec730540bd6f2b200e4c5b9207d3a4ee562d1c15e662452f7e38fabd5