{"id":729,"date":"2026-09-10T10:40:27","date_gmt":"2026-09-10T10:40:27","guid":{"rendered":"https:\/\/masterkurniawan.my.id\/?p=729"},"modified":"2026-09-10T10:46:08","modified_gmt":"2026-09-10T10:46:08","slug":"menghubungkan-hermes-agent-ke-openrouter-melalui-9router","status":"publish","type":"post","link":"https:\/\/masterkurniawan.my.id\/index.php\/2026\/09\/10\/menghubungkan-hermes-agent-ke-openrouter-melalui-9router\/","title":{"rendered":"Menghubungkan Hermes Agent ke OpenRouter melalui 9Router"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"574\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx.png\" alt=\"\" class=\"wp-image-733\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx.png 396w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx-207x300.png 207w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hermes Agent + 9Router + OpenRouter: Membuat AI Agent dengan Endpoint OpenAI-Compatible<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Saat menggunakan AI Agent seperti Hermes Agent, kita tidak selalu harus menghubungkannya langsung ke provider AI. Kita bisa menambahkan sebuah layer perantara seperti <strong>9Router<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan pendekatan ini, arsitektur menjadi lebih fleksibel karena Hermes Agent cukup berkomunikasi dengan satu endpoint lokal, sedangkan 9Router bertugas meneruskan request ke provider AI seperti OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pada artikel ini kita akan membangun alur:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes Agent\n     \u2502\n     \u25bc\n9Router\nlocalhost:20128\/v1\n     \u2502\n     \u25bc\nOpenRouter\n     \u2502\n     \u25bc\nOpenAI GPT-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Konfigurasi ini juga menggunakan API OpenAI-compatible sehingga Hermes Agent tidak perlu mengetahui detail koneksi langsung ke OpenRouter.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Apa itu Hermes Agent?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes Agent adalah AI Agent yang dapat menjalankan berbagai tugas menggunakan model bahasa sebagai otaknya.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Berbeda dengan chatbot sederhana, AI Agent dapat menggunakan tools dan melakukan tindakan berdasarkan instruksi yang diberikan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Secara sederhana:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User\n  \u2502\n  \u25bc\nHermes Agent\n  \u2502\n  \u251c\u2500\u2500 Model AI\n  \u251c\u2500\u2500 Tools\n  \u251c\u2500\u2500 Shell\n  \u251c\u2500\u2500 Files\n  \u2514\u2500\u2500 Agent loop<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes membutuhkan sebuah model AI untuk menghasilkan reasoning dan respons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Model tersebut bisa berasal dari berbagai provider.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam konfigurasi ini kita tidak menghubungkan Hermes langsung ke OpenRouter, melainkan menggunakan 9Router sebagai perantara.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jika hanya dari Hermes ke OpenRouter cukup sederhana:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">export OPENROUTER_API_KEY=&#8221;sk-or-v1-&#8230;&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">curl -4 &#8211;http1.1 -sS<br>-X POST &#8220;<a href=\"https:\/\/openrouter.ai\/api\/v1\/chat\/completions\">https:\/\/openrouter.ai\/api\/v1\/chat\/completions<\/a>&#8220;<br>-H &#8220;Authorization: Bearer $OPENROUTER_API_KEY&#8221;<br>-H &#8220;Content-Type: application\/json&#8221;<br>&#8211;data-raw &#8216;{&#8220;model&#8221;:&#8221;openai\/gpt-4o-mini&#8221;,&#8221;messages&#8221;:[{&#8220;role&#8221;:&#8221;user&#8221;,&#8221;content&#8221;:&#8221;Say hello in Indonesian.&#8221;}]}&#8217;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ketikkan hermes lalu enter<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesnormal1-1024x585.png\" alt=\"\" class=\"wp-image-736\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesnormal1-1024x585.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesnormal1-300x171.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesnormal1-768x439.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesnormal1.png 1449w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/model openai\/gpt-4o-mini &#8211;provider openrouter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jika dihubungkan dengan telegram seperti di bawah ini<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"538\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegramx.png\" alt=\"\" class=\"wp-image-739\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegramx.png 660w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegramx-300x245.png 300w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Apa itu 9Router?<\/h1>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"382\" height=\"219\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9routerx.png\" alt=\"\" class=\"wp-image-731\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9routerx.png 382w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9routerx-300x172.png 300w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"373\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-1024x373.png\" alt=\"\" class=\"wp-image-732\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-1024x373.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-300x109.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-768x280.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-1536x560.png 1536w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router.png 1747w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9Router digunakan sebagai gateway\/router API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes mengirim request ke endpoint lokal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian 9Router meneruskan request tersebut ke provider yang telah dikonfigurasi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan demikian, Hermes tidak perlu langsung mengakses endpoint OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Secara konsep:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes\n   \u2502\n   \u2502 OpenAI-compatible API\n   \u25bc\n9Router\n   \u2502\n   \u2502 Provider routing\n   \u25bc\nOpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Layer seperti ini berguna ketika kita ingin mengelola beberapa provider atau model dari satu endpoint.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Apa itu OpenRouter?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">OpenRouter menyediakan satu API yang dapat digunakan untuk mengakses berbagai model AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam contoh ini kita menggunakan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">OpenRouter menjadi upstream provider yang menerima request dari 9Router.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jadi posisi OpenRouter berada di belakang 9Router.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Arsitektur yang Kita Bangun<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Arsitektur akhirnya adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     Hermes Agent                         \u2502\n\u2502                                                          \u2502\n\u2502  AI Agent \/ Tools                         \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n           \u2502\n           \u2502 HTTP\n           \u2502 localhost:20128\/v1\n           \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502       9Router                                  \u2502\n\u2502                                                         \u2502\n\u2502  API Gateway                              \u2502\n\u2502  Model Routing                          \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n           \u2502\n           \u2502 HTTPS\n           \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     OpenRouter                            \u2502\n\u2502                                                         \u2502\n\u2502  Provider Gateway                     \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n           \u2502\n           \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502    GPT-4o-mini                              \u2502\n\u2502                                                          \u2502\n\u2502      OpenAI                                     \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ada dua koneksi API yang berbeda di sini.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hermes \u2192 9Router<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes menggunakan API key milik 9Router.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-116...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">9Router \u2192 OpenRouter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">9Router menggunakan API key OpenRouter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-or-v1-...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kedua API key tersebut memiliki fungsi yang berbeda dan tidak boleh ditukar.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Menyiapkan Provider OpenRouter di 9Router<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Pertama, buka interface 9Router.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pada menu provider, buat custom provider.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gunakan tipe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai-compatible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian gunakan konfigurasi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Name:\nopenrouter\n\nBase URL:\nhttps:&#47;&#47;openrouter.ai\/api\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">API key yang digunakan pada koneksi provider adalah API key OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah provider dibuat, 9Router akan memiliki namespace model:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam setup yang kita gunakan, model GPT-4o-mini nantinya dipanggil dengan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Membuat Connection di 9Router<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Pada provider OpenRouter, buat connection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contohnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">atau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian lakukan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Test Connection<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika muncul:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u2713 Connection is working!<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">berarti 9Router sudah dapat berkomunikasi dengan OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ini merupakan langkah penting karena kita bisa memastikan koneksi upstream berfungsi sebelum menghubungkan Hermes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Menguji 9Router dengan curl<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Sebelum menghubungkan Hermes, sebaiknya kita melakukan pengujian langsung menggunakan curl.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gunakan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST http:\/\/localhost:20128\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Authorization: Bearer API_KEY_9ROUTER\" \\\n  -d '{\n    \"model\": \"openrouter\/openai\/gpt-4o-mini\",\n    \"messages\": &#91;\n      {\n        \"role\": \"user\",\n        \"content\": \"Halo, tes GPT-4o-mini melalui 9Router\"\n      }\n    ]\n  }'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika berhasil, response akan menunjukkan model seperti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"object\": \"chat.completion\",\n  \"model\": \"openai\/gpt-4o-mini\",\n  \"provider\": \"Azure\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hal yang perlu diperhatikan adalah model yang dikirim ke 9Router:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sedangkan pada response, upstream dapat menampilkan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ini menunjukkan request berhasil melewati 9Router dan diteruskan ke OpenRouter.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Bagaimana dengan \/v1\/models?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Kita juga dapat mencoba:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:20128\/v1\/models \\\n  -H \"Authorization: Bearer API_KEY_9ROUTER\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pada konfigurasi tertentu, response dapat berupa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"object\": \"list\",\n  \"data\": &#91;]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ini tidak otomatis berarti 9Router mati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Endpoint <code>\/v1\/models<\/code> dan endpoint <code>\/v1\/chat\/completions<\/code> merupakan dua hal berbeda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yang lebih penting adalah apakah endpoint chat completion dapat memproses request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam pengujian konfigurasi ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/v1\/models<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">menghasilkan daftar kosong, tetapi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/v1\/chat\/completions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">berhasil menjalankan GPT-4o-mini.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artinya endpoint chat tetap berfungsi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Menghubungkan Hermes Agent ke 9Router<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Sekarang kita konfigurasi Hermes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">File konfigurasi berada di:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.hermes\/config.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sebelum mengubah konfigurasi, sebaiknya buat backup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp ~\/.hermes\/config.yaml ~\/.hermes\/config.yaml.bak<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian konfigurasi model menjadi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>model:\n  default: openrouter\/openai\/gpt-4o-mini\n  provider: custom\n  base_url: http:\/\/localhost:20128\/v1\n  api_key: API_KEY_9ROUTER\n  api_mode: chat_completions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Perhatikan bagian penting:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider: custom<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>base_url: http:\/\/localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan konfigurasi ini Hermes tidak diarahkan langsung ke OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes diarahkan ke endpoint lokal 9Router.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Kenapa menggunakan provider: custom?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ini bagian yang cukup penting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes memiliki provider bawaan seperti OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jika kita menggunakan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider: openrouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes dapat menggunakan endpoint OpenRouter secara langsung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artinya alurnya menjadi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes\n   \u2502\n   \u25bc\nOpenRouter\n   \u2502\n   \u25bc\nModel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Padahal yang kita inginkan adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes\n   \u2502\n   \u25bc\n9Router\n   \u2502\n   \u25bc\nOpenRouter\n   \u2502\n   \u25bc\nModel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Karena itu kita menggunakan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider: custom<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dengan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>base_url: http:\/\/localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan cara tersebut, Hermes memperlakukan 9Router sebagai OpenAI-compatible API endpoint.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. API Key Hermes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes harus menggunakan API key milik 9Router:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>api_key: API_KEY_9ROUTER<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bukan API key OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jadi konsepnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes\n   \u2502\n   \u2502 API_KEY_9ROUTER\n   \u25bc\n9Router\n   \u2502\n   \u2502 API_KEY_OPENROUTER\n   \u25bc\nOpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ini merupakan salah satu bagian yang paling sering menyebabkan error ketika melakukan konfigurasi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Menjalankan Hermes<\/h1>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"169\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesxx-1024x169.png\" alt=\"\" class=\"wp-image-730\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesxx-1024x169.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesxx-300x49.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesxx-768x126.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermesxx.png 1367w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah konfigurasi selesai, jalankan Hermes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hermes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian coba:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Halo, siapa kamu?<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika Hermes memberikan respons, berarti endpoint custom berhasil digunakan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam konfigurasi ini model yang digunakan adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dengan routing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes \u2192 9Router \u2192 OpenRouter<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Cara Memastikan Hermes Tidak Lagi Direct ke OpenRouter<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ini juga penting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sebelumnya Hermes dapat dikonfigurasi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider: openrouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika menggunakan konfigurasi tersebut, Hermes akan langsung menggunakan endpoint OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kita tidak menginginkan itu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Konfigurasi yang kita gunakan adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider: custom\nbase_url: http:\/\/localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jadi endpoint yang dituju Hermes adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bukan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;openrouter.ai\/api\/v1<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Alur Request Secara Detail<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Misalnya kita mengetik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Buatkan saya sebuah script Python<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes menerima perintah tersebut.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian Hermes membuat request:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/v1\/chat\/completions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ke:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dengan model:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">9Router menerima request tersebut.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian 9Router melihat prefix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dan mengetahui bahwa request tersebut harus diarahkan ke provider OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9Router kemudian mengirim request ke:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;openrouter.ai\/api\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dengan API key OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenRouter kemudian meneruskan request ke model:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Model menghasilkan response.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Response kemudian berjalan kembali:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GPT-4o-mini\n      \u2193\nOpenRouter\n      \u2193\n9Router\n      \u2193\nHermes\n      \u2193\nUser<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Diagram Request dan Response<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>User\n \u2193\nHermes\n \u2193\nPOST localhost:20128\/v1\/chat\/completions\n \u2193\n9Router\n \u2193\nPOST OpenRouter API\n \u2193\nGPT-4o-mini<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Response<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>GPT-4o-mini\n \u2193\nOpenRouter\n \u2193\n9Router\n \u2193\nHermes\n \u2193\nUser<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jadi 9Router berada tepat di tengah-tengah komunikasi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Pengujian Akhir<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ada tiga tahap pengujian yang sebaiknya dilakukan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test 1 \u2014 9Router aktif<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:20128\/v1\/models<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika mendapatkan response JSON, berarti endpoint dapat diakses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Misalnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"object\":\"list\",\"data\":&#91;]}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">server tetap merespons.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test 2 \u2014 9Router \u2192 OpenRouter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gunakan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST http:\/\/localhost:20128\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Authorization: Bearer API_KEY_9ROUTER\" \\\n  -d '{\n    \"model\": \"openrouter\/openai\/gpt-4o-mini\",\n    \"messages\": &#91;\n      {\n        \"role\": \"user\",\n        \"content\": \"Tes koneksi\"\n      }\n    ]\n  }'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika mendapatkan response dari model, jalur 9Router \u2192 OpenRouter sudah berhasil.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test 3 \u2014 Hermes \u2192 9Router<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jalankan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hermes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian kirim prompt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jika Hermes mendapatkan response, maka seluruh chain sudah bekerja.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Troubleshooting<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Error: Invalid API key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contohnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Invalid API key<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pastikan API key yang digunakan Hermes adalah API key 9Router.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jangan memasukkan API key OpenRouter ke bagian:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>api_key:<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes berbicara dengan 9Router, bukan langsung dengan OpenRouter.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error: No active credentials for provider<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contohnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>No active credentials for provider: openai<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">atau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>No active credentials for provider: kiro<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Artinya 9Router mencoba menggunakan provider tertentu tetapi credential aktif untuk provider tersebut tidak tersedia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Periksa model yang digunakan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk konfigurasi kita:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">bukan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dan bukan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kr\/claude-sonnet-4.5<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Kenapa Prefix Model Penting?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">9Router menggunakan prefix untuk menentukan routing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam konfigurasi kita:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dapat dibaca sebagai:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 gunakan provider OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 model yang diminta dari OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jadi prefix tersebut bukan nama model OpenAI sebenarnya.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ia merupakan bagian dari mekanisme routing 9Router.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Keuntungan Arsitektur Ini<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ada beberapa keuntungan menggunakan 9Router di antara Hermes dan OpenRouter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Satu endpoint untuk Hermes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes hanya perlu mengetahui:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:20128\/v1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tidak perlu mengetahui endpoint setiap provider.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Provider dapat diganti<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jika suatu saat ingin menggunakan provider lain, perubahan dapat dilakukan di layer router.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes tidak harus diubah secara besar-besaran.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Routing model lebih fleksibel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Model dapat dipanggil menggunakan namespace tertentu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contohnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Credential terpisah<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API key Hermes dan API key provider tidak harus sama.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Strukturnya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes\n   \u2502\n   \u2502 credential 9Router\n   \u25bc\n9Router\n   \u2502\n   \u2502 credential provider\n   \u25bc\nProvider<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5. Dapat menjadi layer abstraksi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hermes cukup berbicara dengan satu API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Router yang menangani detail provider di belakangnya.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. Kekurangan dan Hal yang Perlu Diperhatikan<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Layer tambahan juga berarti ada komponen tambahan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tanpa 9Router:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes \u2192 OpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan 9Router:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hermes \u2192 9Router \u2192 OpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika 9Router mati, Hermes tidak dapat mencapai provider.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selain itu, konfigurasi model dan credential harus benar di kedua sisi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Karena itu pengujian sebaiknya dilakukan secara bertahap:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. OpenRouter\n       \u2193\n2. 9Router \u2192 OpenRouter\n       \u2193\n3. Hermes \u2192 9Router \u2192 OpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan cara ini jauh lebih mudah mengetahui lokasi masalah ketika terjadi error.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. Konfigurasi Akhir<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Secara ringkas, konfigurasi yang digunakan adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>model:\n  default: openrouter\/openai\/gpt-4o-mini\n  provider: custom\n  base_url: http:\/\/localhost:20128\/v1\n  api_key: API_KEY_9ROUTER\n  api_mode: chat_completions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian pada 9Router:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Provider:\nOpenRouter\n\nType:\nopenai-compatible\n\nBase URL:\nhttps:&#47;&#47;openrouter.ai\/api\/v1\n\nAPI Key:\nAPI_KEY_OPENROUTER<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Model yang dipanggil oleh Hermes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. Kesimpulan<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan konfigurasi ini, Hermes Agent tidak lagi berkomunikasi langsung dengan OpenRouter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9Router ditempatkan sebagai API gateway di tengah.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arsitektur akhirnya:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br>                    \u2502    Hermes Agent  \u2502<br>                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br>                             \u2502<br>                             \u2502 localhost:20128\/v1<br>                             \u25bc<br>                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br>                    \u2502      9Router     \u2502<br>                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br>                             \u2502<br>                             \u2502 OpenRouter API<br>                             \u25bc<br>                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br>                    \u2502    OpenRouter    \u2502<br>                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br>                             \u2502<br>                             \u25bc<br>                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br>                    \u2502   GPT-4o-mini    \u2502<br>                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan demikian, Hermes berfungsi sebagai <strong>AI Agent<\/strong>, 9Router sebagai <strong>API gateway\/router<\/strong>, OpenRouter sebagai <strong>model gateway<\/strong>, dan GPT-4o-mini sebagai <strong>model yang menjalankan inference<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Setup ini juga membuat arsitektur lebih modular karena masing-masing komponen memiliki fungsi yang jelas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yang paling penting, pengujian langsung terhadap endpoint:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:20128\/v1\/chat\/completions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dengan model:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openrouter\/openai\/gpt-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">telah berhasil. Artinya jalur:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>9Router \u2192 OpenRouter \u2192 GPT-4o-mini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">sudah berfungsi, dan Hermes kemudian dikonfigurasi menggunakan endpoint 9Router sebagai custom OpenAI-compatible provider.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kurniawan &#8211; <a href=\"https:\/\/xcodepod.cloud\" target=\"_blank\" rel=\"noopener\">xcodepod.cloud<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hermes Agent + 9Router + OpenRouter: Membuat AI Agent dengan Endpoint OpenAI-Compatible Saat menggunakan AI Agent seperti Hermes Agent, kita tidak selalu harus menghubungkannya langsung ke provider AI. Kita bisa menambahkan sebuah layer perantara seperti 9Router. Dengan pendekatan ini, arsitektur menjadi lebih fleksibel karena Hermes Agent cukup berkomunikasi dengan satu endpoint lokal, sedangkan 9Router bertugas &#8230; <a title=\"Menghubungkan Hermes Agent ke OpenRouter melalui 9Router\" class=\"read-more\" href=\"https:\/\/masterkurniawan.my.id\/index.php\/2026\/09\/10\/menghubungkan-hermes-agent-ke-openrouter-melalui-9router\/\" aria-label=\"Baca selengkapnya tentang Menghubungkan Hermes Agent ke OpenRouter melalui 9Router\">Baca Selengkapnya<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,11,9],"tags":[],"class_list":["post-729","post","type-post","status-publish","format-standard","hentry","category-artificial-intelligence","category-cloud","category-server"],"_links":{"self":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/comments?post=729"}],"version-history":[{"count":4,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/729\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/729\/revisions\/742"}],"wp:attachment":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/media?parent=729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/categories?post=729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/tags?post=729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}