Jalankan second brain Khoj Anda di base URL OpenAI custom.

Updated 2026-07-29

Khoj mendokumentasikan setup OpenAI-proxy dengan dua permukaan: environment variable OPENAI_BASE_URL yang menyemai model saat first run, dan entri AI Model API di admin panel dengan field Api Base Url. Arahkan salah satunya ke https://api.apisrouter.com/v1 dan chat, agent, serta otomasi berjalan di model katalog apa pun.

Jawaban singkat: env var saat first run, admin panel kapan saja.

File compose self-hosting Khoj membawa baris OPENAI_BASE_URL yang dikomentari, dimaksudkan, dalam kata-katanya sendiri, untuk provider OpenAI API compatible lain. Set ke https://api.apisrouter.com/v1 dengan OPENAI_API_KEY menyimpan key gateway sebelum startup pertama, dan inisialisasi Khoj melakukan sesuatu yang tidak biasa membantu: ia meng-query daftar model endpoint dan menyemai tabel chat-model-nya dengan setiap id yang dilayani endpoint, jadi katalog muncul di model picker Khoj tanpa entri manual. Di server yang sudah diinisialisasi, pakai admin panel. Buat entri AI Model API (field: Name, Api Key, Api Base Url) yang mengarah ke gateway, lalu buat entri Chat Model yang Name-nya adalah id model persis, dengan Model Type diset ke Openai dan ditautkan ke AI Model API itu. Kedua permukaan terdokumentasi di panduan OpenAI-proxy Khoj di docs.khoj.dev.

services:
  server:
    environment:
      - OPENAI_BASE_URL=https://api.apisrouter.com/v1
      - OPENAI_API_KEY=sk-YOUR-APISROUTER-KEY

Apa yang Khoj lakukan dengan chat model-nya.

Khoj (khoj-ai di GitHub, sekitar 36K bintang) adalah second brain AI self-hostable: ia mengindeks catatan dan dokumen Anda (markdown, org-mode, PDF, dan lainnya), lalu membiarkan Anda chat di atasnya, menjalankan agent custom dengan persona dan tool sendiri, menjadwalkan otomasi yang terpicu di cron, dan meluncurkan run riset multi-step. Ada app hosted, tapi server self-hosted adalah tempat endpoint custom berlaku, dan itulah deployment yang dideskripsikan halaman ini. Setiap fitur itu menyalur melalui chat model yang Anda pilih. Chat dokumen mengemas chunk catatan yang diambil ke prompt, agent menambahkan tool call dan instruksi persona, otomasi menjalankan pipeline yang sama tanpa pengawasan, dan mode riset merangkai banyak panggilan model per pertanyaan. Model Type Openai memberi tahu Khoj untuk berbicara /v1/chat/completions ke Api Base Url dari entri AI Model API yang ditautkan, meneruskan Name model sebagai string biasa, itulah sebabnya id Claude atau DeepSeek berfungsi di sana selama endpoint melayaninya. Embedding pencarian adalah subsistem berbeda. Khoj meng-embed dokumen Anda dengan model sentence-transformers lokal secara default, jadi indexing dan pencarian semantik terus berfungsi terlepas dari apa yang Anda lakukan dengan endpoint chat. Merutekan chat melalui gateway hanya memindahkan tagihan reasoning-nya.

Setup lengkap: entri admin panel langkah demi langkah.

Pada server yang berjalan, seluruh integrasi adalah tiga layar admin. Pertama, tambahkan AI Model API: buka /server/admin/database/aimodelapi/add, beri nama, tempel key gateway ke Api Key, dan set Api Base Url ke https://api.apisrouter.com/v1. Kedua, tambahkan chat model: di /server/admin/database/chatmodel/add, set Name ke id katalog persis (claude-sonnet-4-6, deepseek-v4-flash), set Model Type ke Openai, tautkan entri Ai Model Api yang baru Anda buat, dan set Max prompt size ke nilai yang muat dengan context window model. Dokumentasinya menyarankan membiarkan Tokenizer tidak diset untuk model bertipe OpenAI. Ulangi per model yang Anda inginkan di picker. Ketiga, pilih model: di /settings, pilih chat model baru Anda sebagai default. Agent bisa override model per agent, itulah cara satu instance Khoj menjalankan id cepat untuk otomasi harian dan id frontier untuk riset.

1) /server/admin/database/aimodelapi/add
   Name:         APIsRouter
   Api Key:      sk-YOUR-APISROUTER-KEY
   Api Base Url: https://api.apisrouter.com/v1

2) /server/admin/database/chatmodel/add
   Name:         claude-sonnet-4-6   (exact catalog id)
   Model Type:   Openai
   Ai Model Api: APIsRouter
   Max prompt size: 100000

3) /settings -> select the new chat model

Memilih model untuk second brain.

Karena chat model adalah baris yang Anda tambahkan terhadap satu AI Model API, menyimpan dua atau tiga id di picker tidak berbiaya apa pun. Setup praktisnya adalah default cepat plus eskalasi frontier, keduanya ditagih melalui key yang sama sehingga log penggunaan menunjukkan berapa biaya sebenarnya setiap tier atas catatan Anda.

  • Chat dokumen bersifat input-heavy: chunk catatan yang diambil jauh lebih besar dari jawabannya. Harga per-token-input menentukan biaya per pertanyaan, yang menguntungkan claude-haiku-4-5-20251001, deepseek-v4-flash, atau gemini-3.5-flash untuk recall sehari-hari.
  • Mode riset melipatgandakan panggilan. Satu pertanyaan riset bisa merangkai banyak giliran model, jadi id yang Anda tetapkan di sana menggerakkan tagihan lebih dari pengaturan lain mana pun; claude-sonnet-4-6 adalah pilihan seimbang, gpt-5.4 eskalasinya.
  • Otomasi terjadwal berjalan tanpa pengawasan. Beri harga seperti langganan: panggilan per hari dikalikan token per panggilan, yang persis dilaporkan log penggunaan per-key.
  • Pengetahuan pribadi kaya kontradiksi (rencana berubah, catatan basi), dan model berbeda dalam seberapa baik mereka menandai catatan yang bertentangan alih-alih mencampurnya; uji dua id pada set pertanyaan yang sama sebelum berkomitmen.
  • Max prompt size bersifat per chat model di Khoj, jadi id long-context hanya terbayar jika Anda menaikkan field itu agar cocok.

Bayar sesuai pemakaian · di bawah harga resmi

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelHarga ResmiHarga Kami
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GPT-5.4$2.50 / $15.00 per M$2.00 / $12.00 per M
DeepSeek V4 Flash$0.14 / $0.28 per M$0.10 / $0.30 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M

Mode kegagalan spesifik Khoj.

Env var adalah bibit first-run, bukan pengaturan live. OPENAI_BASE_URL dibaca saat inisialisasi untuk membuat entri provider dan menemukan model; di server yang sudah diinisialisasi, mengedit file compose tidak mengubah apa pun yang bisa Anda lihat. Pakai admin panel untuk perubahan setelah boot pertama, atau reset database jika Anda benar-benar ingin bibit baru. Jebakan key-placeholder: saat OPENAI_BASE_URL diset tanpa OPENAI_API_KEY, Khoj mengisi key dengan placeholder agar server lokal seperti Ollama berfungsi. Gateway butuh key sungguhan, jadi jika seeding first-run terjadi tanpa itu, chat gagal dengan error autentikasi sampai Anda menempel key ke entri AI Model API di admin panel. Auto-discovery menyemai semuanya. Karena inisialisasi mendaftar setiap model yang dilayani endpoint, gateway multi-vendor bisa menyemai tabel model yang panjang. Tidak berbahaya, tapi layak dipangkas di admin panel agar picker tetap bisa dipakai. Chat model Name bersifat persis. Khoj meneruskannya apa adanya; salah ketik muncul sebagai model-not-found di pesan pertama, dan output /v1/models gateway adalah ejaan otoritatif. Dan jika pencarian semantik atas catatan Anda berperilaku buruk, itu adalah subsistem embedding lokal, tidak terkait dengan endpoint chat.

Siapa yang merutekan Khoj melalui gateway.

  • Self-hoster yang menginginkan chat model-frontier atas catatan mereka tanpa akun vendor per keluarga model; satu key mencakup id Claude, GPT, DeepSeek, dan Gemini.
  • Pengguna yang menjalankan otomasi terjadwal setiap hari, di mana id cepat menjaga biaya berulang tetap datar dan log penggunaan membuatnya terlihat.
  • Setup yang peduli privasi yang menjaga indexing dan embedding tetap lokal dan hanya mengekspos prompt chat ke satu endpoint yang bisa diaudit.
  • Penggemar eksperimen yang membandingkan chat model di atas korpus pribadi yang identik: setiap kandidat adalah satu baris chat-model terhadap AI Model API yang sama.
  • Developer tanpa akses ke billing vendor tertentu. Akses berbasis top-up tanpa syarat kartu menghilangkan ketergantungan sign-up per provider.

Verifikasi endpoint dan debug chat pertama.

Cek gateway dulu: daftar model dengan key Anda dan konfirmasi id yang Anda rencanakan daftarkan. Auto-discovery Khoj sendiri melakukan panggilan yang sama saat seeding first-run, jadi jika curl ini berfungsi, seeding juga akan berfungsi. Kegagalan lokal dengan bersih. Error autentikasi berarti Api Key di entri AI Model API salah atau masih placeholder hasil seeding. Model-not-found berarti Name chat model tidak cocok dengan ejaan katalog. Respons yang terpotong di tengah jawaban biasanya berarti Max prompt size atau plafon output model diset terlalu rendah untuk percakapan. Masalah indexing dan pencarian adalah pipeline embedding lokal dan tidak ada hubungannya dengan endpoint. Setelah chat mengalir, konsol APIsRouter menunjukkan model per request, hitungan token, dan pengeluaran. Otomasi dan run riset adalah tempat biaya second-brain bersembunyi, dan penggunaan per-key adalah cara Anda melihatnya per fitur alih-alih sebagai satu kejutan bulanan.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Pertanyaan umum

Apakah Khoj mendukung proxy atau gateway OpenAI-compatible?

Ya, sebagai setup terdokumentasi: buat entri AI Model API dengan Api Base Url mengarah ke endpoint, lalu tambahkan chat model dengan Model Type Openai. File compose-nya juga mengekspos OPENAI_BASE_URL untuk seeding first-run.

Bisakah Khoj chat dengan model Claude atau DeepSeek melalui ini?

Ya. Model Type Openai meneruskan Name chat model sebagai string biasa melalui /v1/chat/completions ke Api Base Url. Id apa pun yang dilayani gateway berfungsi, termasuk id Claude, DeepSeek, GLM, dan Gemini.

Mengapa mengubah OPENAI_BASE_URL di docker-compose tidak berpengaruh apa-apa?

Variabel itu hanya menyemai provider dan model saat inisialisasi first-run. Di server yang sudah diinisialisasi, edit entri AI Model API di admin panel; itulah pengaturan live-nya.

Apakah base URL custom memengaruhi pencarian dokumen Khoj?

Tidak. Khoj meng-embed dan mencari dokumen Anda dengan model sentence-transformers lokal secara default. Entri AI Model API hanya memindahkan chat, agent, otomasi, dan riset.

Apa itu Max prompt size di entri chat model?

Batas per-model untuk berapa banyak prompt yang dikemas Khoj ke sebuah request. Set agar muat dengan context window model; terlalu rendah memotong catatan yang diambil, dan id long-context hanya membantu jika field ini dinaikkan agar cocok.

Apakah ini berlaku untuk app Khoj yang hosted?

Tidak, endpoint custom adalah fitur self-hosting. App hosted mengelola modelnya sendiri server-side; permukaan admin-panel dan environment di sini milik server yang Anda jalankan sendiri.