krouter

Login

Router OpenAI-compatible — multi-provider & multi-key
Server Config
Terisi otomatis sesuai host saat ini. Ganti kalau dipakai dari domain lain.
Arahkan SEMUA request upstream (codex & openai-compatible) lewat proxy (Cloudflare WARP / residential). Default aktif.
SOCKS5 / HTTP proxy untuk outbound. Kosongkan = pakai default socks5://127.0.0.1:40000.
Proxy KHUSUS fitur Daily Claim / Cek Credit CodeBuddy CN (tiap key pakai koneksi baru). Tidak dipakai untuk traffic chat. Kosongkan = langsung dari IP server.
Jeda minimum antar request ke provider yang sama. OFF = throttle dimatikan total (interval global & per-provider diabaikan semua).
Jeda minimum antar request ke setiap provider (default bila provider tidak set sendiri). Mis. 30 = max ~33 request/detik per provider. 0 = tanpa jeda.
Jumlah request pertama yang boleh langsung jalan tanpa nunggu jeda (default 5).
Kalau attempt pertama belum mengirim token setelah ambang waktu, tembak attempt kedua ke key lain dan pakai yang duluan — yang kalah dibatalkan. Memotong tail TTFT (diukur: p90 16,6s → 4,6s untuk hedge penuh), tapi attempt yang kalah tetap memakai kuota prefill key. Default OFF. Hanya berlaku untuk request streaming & attempt pertama.
0 = ambil dari persentil TTFT terukur per (provider, model) di Tab Perf. Isi angka untuk ambang tetap.
Pagar biaya: hedge dilewati kalau rasio/konkurensi sudah penuh, payload lebih besar dari batas, provider baru kena 429, atau key aktif < 2.
Batas maksimum waktu tunggu token pertama (default 20 detik). Jika terlampaui, otomatis fallback ke provider berikutnya (pada mode combo fallback). Jika semua provider gagal, kembalikan 502 "Server sedang tidak stabil". 0 = nonaktifkan.
Client Endpoint

Gunakan ini di aplikasi yang mendukung OpenAI API:

Contoh request: curl {base}/v1/chat/completions -H "Authorization: Bearer <key>" -d '{"model":"provider1","messages":[...]}'
Backup & Restore

Export semua config, providers, API keys (termasuk usage & status), dan combos ke satu file JSON. Request logs tidak ikut.

Import MENGGANTI seluruh providers, API keys, combos, dan config saat ini dengan isi file backup. Password login tidak berubah.
Custom Request Rules

Rule dicocokkan ke model dan isi request sebelum dikirim ke upstream. Contoh rule untuk gpt-6-astra + phrase Generate an SVG of a pelican:

Format array JSON. Action: reasoning_effort dan temperature. Default semua rule OFF kecuali enabled:true.
Providers
Memuat...
Belum ada provider. Klik Add Provider untuk mulai.
Name Base URL Default Model Key RR Keys Usage Aksi
Klik nama provider untuk membuka halaman detail & kelola API keys.
Provider
Provider Rules
Budget attempt (bukan retry tambahan): 5 = 5 attempt. 0 atau 1 = tanpa retry (sekali tembak). Retry hanya untuk status di Retry Jika Status.
Status HTTP yang memicu retry, pisah koma (mis. 429,502,503). Kosong = 429. Rentang 400–599.
Delay sebelum mencoba key berikutnya setelah gagal yang di-retry. 0 = langsung retry.
Key otomatis Hold jika pemakaian ≥ N M token. 0 = nonaktif.
Key otomatis Blocked setelah N error berturut-turut. 0 = nonaktif.
Hanya error dengan status ini yang dihitung. Kosong = semua 4xx/5xx. 401/403 selalu instant block.
Jumlah key Active minimum yang dijaga. 0 = nonaktif (default). Kalau jumlahnya turun di bawah batas (mis. kena auto-block/hold), key Disabled otomatis dipromosikan jadi Active (urut terlama) sampai kuota terpenuhi. Key Blocked/Hold tidak disentuh.
Request dengan estimasi prompt token di bawah nilai ini tidak memakai provider ini (di-skip di combo, lanjut ke provider lain). 0 = tanpa minimum (default).
Jika prompt_tokens di response upstream < nilai ini, bump ke nilai ini, set cached_tokens=0, recompute total. Berlaku di response ke client + akuntansi internal. 0 = disabled (default). Layer terpisah dari gate Min Prompt Tokens di samping.
Jika completion_tokens di response upstream < nilai ini, bump ke nilai ini + recompute total. 0 = disabled (default).
Jeda minimum antar send ke provider ini (ms). 0 = ikut Throttle Global di Config.
Maksimal request ke provider ini per 1 menit. 0 = unlimited (default). Kalau terlampaui, provider ini di-skip di combo dan request lanjut ke provider berikutnya.
Maksimal token per 1 menit (mis. 1000000 = 1M). 0 = unlimited (default). Cara kerjanya sama dengan RPM.
—
Jendela bergeser (sliding window) 60 detik. Reset saat krouter restart.
Untuk channel yang menolak prompt kanonik client resmi dengan 400 11128 "Illegal API invocation from an unapproved channel" (CodeBuddy). Isi instruksi tidak berubah — hanya bentuk literalnya, seminimal mungkin.
Untuk channel yang menolak request non-stream (contoh: CodeBuddy CN, HTTP 400 "Non-stream chat request is currently not supported"). Permintaan non-stream client tetap dihormati — SSE upstream otomatis digabung jadi JSON.
Mengurangi credit consumption ~67-71% dengan inject include_usage:false dll. ke body request. Default OFF. Isi * untuk semua model, atau daftar model dipisah koma. Efektif untuk model yang billing-nya di-handle CodeBuddy internal (GLM-flash, DeepSeek-flash). Tidak efektif untuk GPT/premium models.
Inject prompt menyuruh model output @ENGGEUS di akhir jawaban. Saat marker terdeteksi di stream, krouter memutus upstream (tidak ada billing) dan mengirim synthetic finish_reason:stop. Marker di-strip dari response client. Default OFF. Efektif untuk provider delivery-based (kimi-k3 di CodeBuddy). Tidak efektif untuk generation-based (Claude Opus).
Fitur lama untuk suppress reasoning saat request dikirim. Default OFF.
Jika cached_tokens > 0, usage ke client dikirim sebagai cached_tokens / divisor. Akuntansi internal router tetap memakai angka asli. Default OFF, divisor default 2.
Key langsung di-Blocked (instan, tanpa menunggu counter error) kalau field tertentu di body JSON response upstream cocok dengan nilai yang ditentukan — berlaku untuk status sukses (200) maupun gagal. Cocok untuk error aplikasi seperti kredit/kuota habis yang tidak selalu disertai status HTTP 4xx/5xx. Key = path JSON dot-notation ke field tersebut (contoh error.data.code untuk body {"error":{"data":{"code":14018}}}). Value dibandingkan SETARA JENIS (number vs number, string vs string) — pilih tipe yang sesuai agar tidak salah cocok/tidak cocok.
Saudara dari Auto-Block, tapi key yang cocok langsung di-set Banned — status permanen yang tidak pernah dipromosikan ulang oleh Min Active API Keys (beda dari Blocked/Hold yang hanya disentuh, sementara Banned benar-benar dikunci sampai diubah manual). Format rule identik dengan Auto-Block (key = JSON path dot-notation, value dibandingkan setara jenis). Pakai ini untuk kondisi yang menandakan key sudah tidak bisa dipakai sama sekali (contoh: akun di-suspend, key dicabut permanen) — bukan sekadar kredit habis.
Suntikkan header IP palsu ke setiap request ke upstream. Nilai IP di-generate random dari range Singapore per attempt (tiap retry dapat IP baru). Aktifkan satu atau beberapa header sekaligus. Default OFF semua.
Info
API Keys
0 key
Akun ChatGPT login via OAuth — token otomatis di-refresh.
0 dipilih
Memuat keys...
Tidak ada API key pada filter ini.
NameKeyStatusUsageErrorsLast UsedBatchBlocked ModelsAksi
Daily Usage Logs
7 hari terakhir —
Pemakaian diagregasi per hari (zona Jakarta, UTC+7) dari counter di memori yang di-flush berkala — bukan dari tabel request logs (tabel itu hanya menyimpan 100 baris terakhir). Requests dihitung per attempt ke upstream (satu request client yang di-retry bisa jadi beberapa attempt).
Memuat usage...
Tanggal Requests Tokens Tokens (M) Errors 4xx 5xx Lain Error Rate Error Terakhir
Proxy List
Ketika aktif, tiap request ke upstream memakai proxy berikutnya dari daftar (berurutan / round-robin). Matikan = langsung ke upstream (tanpa proxy list).
Format: user:password@ip:port atau ip:port. Bisa juga dengan skema http:// / socks5://. Tiap request akan bergantian memakai proxy dari list ini.
Info
  • Round-robin berjalan per request ke upstream (provider openai-compatible & codex).
  • Client proxy di-cache per URL — tidak di-build ulang tiap request.
  • Kalau proxy gagal dibangun / invalid, request di-fallback ke koneksi langsung.
  • Kombinasi dengan Outbound Proxy di tab Config: proxy list menang, kalau list nonaktif/kosong baru pakai proxy tunggal.
Status: —
Combos
Memuat...
Belum ada combo. Klik Add Combo untuk mulai.
Tidak ada combo yang cocok dengan pencarian.
Name Mode Providers Status Aksi
Memuat...
Belum ada request log.
Request ID Date Model Target Provider Combo TTFT Status
Hanya request GAGAL (status ≥ 400). Disimpan 100 terakhir — yang lebih lama otomatis terhapus beserta file body-nya. Body request disimpan UTUH (tidak dipotong), jadi bisa di-replay apa adanya. Klik baris untuk detail + perintah curl simulasi.
Belum ada request gagal.
Request ID Date Status Path Model Target Provider Req Body
Request History
Menampilkan rantai attempt tiap request: provider/model/status untuk setiap percobaan. Final 200 = request berhasil diteruskan ke client sebagai 200. Klik baris untuk melihat detail error per attempt.
Memuat...
Belum ada request history.
Request ID Date Client Model Attempt Chain Attempts Final