npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@harizid/byok

v0.1.0

Published

Bring your own key — arahkan Claude Code, Claude Desktop, Cursor, dan Codex ke gateway API mana pun

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.

npm node license deps


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_URL tanpa /v1 — SDK-nya menambahkan sendiri
  • Codex baca base_url dengan /v1, dan wire_api harus "responses", bukan "chat"
  • Claude Desktop butuh deploymentMode: "3p" di folder first-party, tapi profilnya di folder -3p — dan inferenceProvider harus 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/byok
byok

Selesai. 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 batal

Alurnya: 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.json yang 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 byok membuat 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 checksum

Lupakan 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 --version

Menaruh 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 test

Menambah 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