@harizid/byok
v0.1.0
Published
Bring your own key — arahkan Claude Code, Claude Desktop, Cursor, dan Codex ke gateway API mana pun
Maintainers
Readme
██████╗ ██╗ ██╗ ██████╗ ██╗ ██╗
██╔══██╗╚██╗ ██╔╝██╔═══██╗██║ ██╔╝
██████╔╝ ╚████╔╝ ██║ ██║█████╔╝
██╔══██╗ ╚██╔╝ ██║ ██║██╔═██╗
██████╔╝ ██║ ╚██████╔╝██║ ██╗
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝Bring your own key. Arahkan Claude Code, Claude Desktop, Cursor, dan Codex ke gateway API mana pun — satu perintah, tanpa mengedit file config sendiri.
Masalahnya
Punya API key dari OpenRouter, Groq, Together, gateway kantor, atau proxy sendiri, dan mau dipakai di Claude Code? Kamu harus tahu bahwa:
- Claude Code baca
ANTHROPIC_BASE_URLtanpa/v1— SDK-nya menambahkan sendiri - Codex baca
base_urldengan/v1, danwire_apiharus"responses", bukan"chat" - Claude Desktop butuh
deploymentMode: "3p"di folder first-party, tapi profilnya di folder-3p— daninferenceProviderharus persis string"gateway" - Cursor menyimpan key-nya di dalam SQLite, bukan di file JSON mana pun
Salah satu saja, tidak ada pesan error yang berguna. Claude Code cuma bilang "There's an issue with the selected model" — menunjuk ke satu-satunya hal yang justru tidak salah.
Solusinya
npm install -g @harizid/byokbyokSelesai. Sisanya menu yang mengurus. (Nama paketnya ber-scope, tapi perintah yang kamu
ketik tetap byok.)
██████╗ ██╗ ██╗ ██████╗ ██╗ ██╗
██╔══██╗╚██╗ ██╔╝██╔═══██╗██║ ██╔╝
██████╔╝ ╚████╔╝ ██║ ██║█████╔╝
██╔══██╗ ╚██╔╝ ██║ ██║██╔═██╗
██████╔╝ ██║ ╚██████╔╝██║ ██╗
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
bring your own key — arahkan AI apa pun ke gateway mana pun
openrouter.ai · sk-or-•••••••••x9f2
────────────────────────────────────────────
Mau melakukan apa?
❯ Pasang ke aplikasi
Kembalikan seperti semula
Lihat status
Ganti gateway
Lupakan gateway
Keluar
↑↓ pilih · enter lanjut · esc batalAlurnya: masukkan base URL + API key sekali → pilih aplikasi → pilih model → jalan. Aplikasi kedua dan seterusnya tidak perlu ketik ulang kredensial.
Aplikasi yang didukung
| Aplikasi | Status | Yang ditulis |
|---|:---:|---|
| Claude Code CLI | ✅ | ~/.claude/settings.json — base URL, token, slot Opus/Sonnet/Haiku |
| Claude Desktop | ✅ | claude_desktop_config.json + configLibrary/ di root -3p |
| Codex CLI / Desktop | ✅ | ~/.codex/config.toml + auth.json |
| Cursor | ⚠️ | state.vscdb (SQLite) — belum diuji end-to-end |
Antigravity ikut terarah otomatis lewat adapter Claude Code — panel Claude Code di dalamnya membaca
~/.claude/settings.jsonyang sama. Agen bawaan Antigravity sendiri tidak bisa diarahkan: autentikasinya OAuth Google dan tidak punya slot base URL.Codex Desktop tidak butuh adapter terpisah — dia membaca
~/.codex/yang sama dengan CLI-nya.
Config-mu aman
Ini bagian yang paling banyak dipikirkan saat membangunnya:
- Backup ber-checksum. Sebelum menulis apa pun, setiap file yang akan disentuh dicadangkan beserta sha256-nya. Restore memverifikasi checksum itu dulu — file yang tidak bisa dipertanggungjawabkan tidak akan ditulis balik.
- Merge, bukan replace. Setelan lain milikmu — tema,
mcpServers, preferensi — tidak disentuh. Hanya key yang relevan yang ditambahkan. - Rollback otomatis. Kalau penulisan gagal di tengah jalan, config lama dikembalikan sebelum perintah berhenti.
- File baru ikut dihapus saat restore. Kalau
byokmembuat file yang tadinya belum ada, restore menghapusnya — supaya API key tidak tertinggal di disk. - Jujur saat gagal. Kalau ada file buatan CLI yang tidak bisa dihapus, kamu diberi tahu nama filenya, bukan diklaim bersih.
Semua poin di atas ada test-nya. npm test menjalankan CLI sungguhan sebagai subprocess
terhadap gateway palsu dan HOME palsu, lalu memeriksa file yang benar-benar ditulis.
Detail yang bikin ini tidak sesederhana kelihatannya
Base URL sengaja ditulis dalam dua bentuk berbeda:
Claude Code / Desktop → https://gateway.com (tanpa /v1)
Codex / Cursor → https://gateway.com/v1 (dengan /v1)SDK Anthropic menambahkan /v1/messages sendiri, sedangkan Codex dan Cursor memakai nilai
itu sebagai prefix utuh. Kasih bentuk yang salah dan hasilnya /v1/v1/messages — di-404
gateway sebelum kode model, plan, atau billing mana pun jalan, jadi tidak meninggalkan
jejak apa pun di log. Lihat src/base-url.js.
Yang disimpan di komputermu
~/.byok/
├── config.json base URL + API key (mode 0600)
└── backups/<app>/ cadangan config + manifest checksumLupakan gateway menghapus kredensial tersimpan. Aplikasimu tetap mengarah ke gateway itu sampai kamu memilih Kembalikan seperti semula — dua hal yang berbeda, dan menu-nya mengatakan itu terang-terangan.
Opsi
byok # buka menu
byok --base-url <url> --key <api-key> # simpan gateway tanpa ditanya
byok --help
byok --versionMenaruh API key di argumen membuatnya tercatat di history shell. Untuk sekali pakai lebih
aman lewat menu, atau --key "$(cat key.txt)".
Output yang di-pipe otomatis polos — tanpa warna, tanpa kontrol layar — dan menu berubah
jadi daftar bernomor, jadi aman dipakai di skrip. NO_COLOR dihormati.
Kontribusi
git clone https://github.com/harezadmm/byok.git
cd byok
npm install
npm testMenambah aplikasi baru = menambah satu file di src/adapters/. Kontraknya
ada di src/adapters/types.js: detect → read → apply →
serialize. Urutan backup dan rollback diurus src/commands/setup.js,
jadi adapter baru langsung dapat jaminan keamanan yang sama.
Lisensi
MIT
