Menghubungkan Hermes Agent ke OpenRouter melalui 9Router

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 meneruskan request ke provider AI seperti OpenRouter.

Pada artikel ini kita akan membangun alur:

Hermes Agent
     │
     ▼
9Router
localhost:20128/v1
     │
     ▼
OpenRouter
     │
     ▼
OpenAI GPT-4o-mini

Konfigurasi ini juga menggunakan API OpenAI-compatible sehingga Hermes Agent tidak perlu mengetahui detail koneksi langsung ke OpenRouter.


1. Apa itu Hermes Agent?

Hermes Agent adalah AI Agent yang dapat menjalankan berbagai tugas menggunakan model bahasa sebagai otaknya.

Berbeda dengan chatbot sederhana, AI Agent dapat menggunakan tools dan melakukan tindakan berdasarkan instruksi yang diberikan.

Secara sederhana:

User
  │
  ▼
Hermes Agent
  │
  ├── Model AI
  ├── Tools
  ├── Shell
  ├── Files
  └── Agent loop

Hermes membutuhkan sebuah model AI untuk menghasilkan reasoning dan respons.

Model tersebut bisa berasal dari berbagai provider.

Dalam konfigurasi ini kita tidak menghubungkan Hermes langsung ke OpenRouter, melainkan menggunakan 9Router sebagai perantara.

Jika hanya dari Hermes ke OpenRouter cukup sederhana:

export OPENROUTER_API_KEY=”sk-or-v1-…”

curl -4 –http1.1 -sS
-X POST “https://openrouter.ai/api/v1/chat/completions
-H “Authorization: Bearer $OPENROUTER_API_KEY”
-H “Content-Type: application/json”
–data-raw ‘{“model”:”openai/gpt-4o-mini”,”messages”:[{“role”:”user”,”content”:”Say hello in Indonesian.”}]}’

Ketikkan hermes lalu enter

/model openai/gpt-4o-mini –provider openrouter

Jika dihubungkan dengan telegram seperti di bawah ini


2. Apa itu 9Router?

9Router digunakan sebagai gateway/router API.

Hermes mengirim request ke endpoint lokal:

http://localhost:20128/v1

Kemudian 9Router meneruskan request tersebut ke provider yang telah dikonfigurasi.

Dengan demikian, Hermes tidak perlu langsung mengakses endpoint OpenRouter.

Secara konsep:

Hermes
   │
   │ OpenAI-compatible API
   ▼
9Router
   │
   │ Provider routing
   ▼
OpenRouter

Layer seperti ini berguna ketika kita ingin mengelola beberapa provider atau model dari satu endpoint.


3. Apa itu OpenRouter?

OpenRouter menyediakan satu API yang dapat digunakan untuk mengakses berbagai model AI.

Dalam contoh ini kita menggunakan:

openai/gpt-4o-mini

OpenRouter menjadi upstream provider yang menerima request dari 9Router.

Jadi posisi OpenRouter berada di belakang 9Router.


4. Arsitektur yang Kita Bangun

Arsitektur akhirnya adalah:

┌──────────────────────┐
│     Hermes Agent                         │
│                                                          │
│  AI Agent / Tools                         │
└──────────┬───────────┘
           │
           │ HTTP
           │ localhost:20128/v1
           ▼
┌──────────────────────┐
│       9Router                                  │
│                                                         │
│  API Gateway                              │
│  Model Routing                          │
└──────────┬───────────┘
           │
           │ HTTPS
           ▼
┌──────────────────────┐
│     OpenRouter                            │
│                                                         │
│  Provider Gateway                     │
└──────────┬───────────┘
           │
           ▼
┌──────────────────────┐
│    GPT-4o-mini                              │
│                                                          │
│      OpenAI                                     │
└──────────────────────┘

Ada dua koneksi API yang berbeda di sini.

Hermes → 9Router

Hermes menggunakan API key milik 9Router.

sk-116...

9Router → OpenRouter

9Router menggunakan API key OpenRouter.

sk-or-v1-...

Kedua API key tersebut memiliki fungsi yang berbeda dan tidak boleh ditukar.


5. Menyiapkan Provider OpenRouter di 9Router

Pertama, buka interface 9Router.

Pada menu provider, buat custom provider.

Gunakan tipe:

openai-compatible

Kemudian gunakan konfigurasi:

Name:
openrouter

Base URL:
https://openrouter.ai/api/v1

API key yang digunakan pada koneksi provider adalah API key OpenRouter.

Setelah provider dibuat, 9Router akan memiliki namespace model:

openrouter/...

Dalam setup yang kita gunakan, model GPT-4o-mini nantinya dipanggil dengan:

openrouter/openai/gpt-4o-mini

6. Membuat Connection di 9Router

Pada provider OpenRouter, buat connection.

Contohnya:

data

atau:

data2

Kemudian lakukan:

Test Connection

Jika muncul:

✓ Connection is working!

berarti 9Router sudah dapat berkomunikasi dengan OpenRouter.

Ini merupakan langkah penting karena kita bisa memastikan koneksi upstream berfungsi sebelum menghubungkan Hermes.


7. Menguji 9Router dengan curl

Sebelum menghubungkan Hermes, sebaiknya kita melakukan pengujian langsung menggunakan curl.

Gunakan:

curl -X POST http://localhost:20128/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer API_KEY_9ROUTER" \
  -d '{
    "model": "openrouter/openai/gpt-4o-mini",
    "messages": [
      {
        "role": "user",
        "content": "Halo, tes GPT-4o-mini melalui 9Router"
      }
    ]
  }'

Jika berhasil, response akan menunjukkan model seperti:

{
  "object": "chat.completion",
  "model": "openai/gpt-4o-mini",
  "provider": "Azure"
}

Hal yang perlu diperhatikan adalah model yang dikirim ke 9Router:

openrouter/openai/gpt-4o-mini

Sedangkan pada response, upstream dapat menampilkan:

openai/gpt-4o-mini

Ini menunjukkan request berhasil melewati 9Router dan diteruskan ke OpenRouter.


8. Bagaimana dengan /v1/models?

Kita juga dapat mencoba:

curl -s http://localhost:20128/v1/models \
  -H "Authorization: Bearer API_KEY_9ROUTER"

Pada konfigurasi tertentu, response dapat berupa:

{
  "object": "list",
  "data": []
}

Ini tidak otomatis berarti 9Router mati.

Endpoint /v1/models dan endpoint /v1/chat/completions merupakan dua hal berbeda.

Yang lebih penting adalah apakah endpoint chat completion dapat memproses request.

Dalam pengujian konfigurasi ini:

/v1/models

menghasilkan daftar kosong, tetapi:

/v1/chat/completions

berhasil menjalankan GPT-4o-mini.

Artinya endpoint chat tetap berfungsi.


9. Menghubungkan Hermes Agent ke 9Router

Sekarang kita konfigurasi Hermes.

File konfigurasi berada di:

~/.hermes/config.yaml

Sebelum mengubah konfigurasi, sebaiknya buat backup:

cp ~/.hermes/config.yaml ~/.hermes/config.yaml.bak

Kemudian konfigurasi model menjadi:

model:
  default: openrouter/openai/gpt-4o-mini
  provider: custom
  base_url: http://localhost:20128/v1
  api_key: API_KEY_9ROUTER
  api_mode: chat_completions

Perhatikan bagian penting:

provider: custom

dan:

base_url: http://localhost:20128/v1

Dengan konfigurasi ini Hermes tidak diarahkan langsung ke OpenRouter.

Hermes diarahkan ke endpoint lokal 9Router.


10. Kenapa menggunakan provider: custom?

Ini bagian yang cukup penting.

Hermes memiliki provider bawaan seperti OpenRouter.

Jika kita menggunakan:

provider: openrouter

Hermes dapat menggunakan endpoint OpenRouter secara langsung.

Artinya alurnya menjadi:

Hermes
   │
   ▼
OpenRouter
   │
   ▼
Model

Padahal yang kita inginkan adalah:

Hermes
   │
   ▼
9Router
   │
   ▼
OpenRouter
   │
   ▼
Model

Karena itu kita menggunakan:

provider: custom

dengan:

base_url: http://localhost:20128/v1

Dengan cara tersebut, Hermes memperlakukan 9Router sebagai OpenAI-compatible API endpoint.


11. API Key Hermes

Hermes harus menggunakan API key milik 9Router:

api_key: API_KEY_9ROUTER

Bukan API key OpenRouter.

Jadi konsepnya:

Hermes
   │
   │ API_KEY_9ROUTER
   ▼
9Router
   │
   │ API_KEY_OPENROUTER
   ▼
OpenRouter

Ini merupakan salah satu bagian yang paling sering menyebabkan error ketika melakukan konfigurasi.


12. Menjalankan Hermes

Setelah konfigurasi selesai, jalankan Hermes:

hermes

Kemudian coba:

Halo, siapa kamu?

Jika Hermes memberikan respons, berarti endpoint custom berhasil digunakan.

Dalam konfigurasi ini model yang digunakan adalah:

gpt-4o-mini

dengan routing:

Hermes → 9Router → OpenRouter

13. Cara Memastikan Hermes Tidak Lagi Direct ke OpenRouter

Ini juga penting.

Sebelumnya Hermes dapat dikonfigurasi:

provider: openrouter

Jika menggunakan konfigurasi tersebut, Hermes akan langsung menggunakan endpoint OpenRouter.

Kita tidak menginginkan itu.

Konfigurasi yang kita gunakan adalah:

provider: custom
base_url: http://localhost:20128/v1

Jadi endpoint yang dituju Hermes adalah:

http://localhost:20128/v1

Bukan:

https://openrouter.ai/api/v1

14. Alur Request Secara Detail

Misalnya kita mengetik:

Buatkan saya sebuah script Python

Hermes menerima perintah tersebut.

Kemudian Hermes membuat request:

POST /v1/chat/completions

ke:

http://localhost:20128/v1

dengan model:

openrouter/openai/gpt-4o-mini

9Router menerima request tersebut.

Kemudian 9Router melihat prefix:

openrouter/

dan mengetahui bahwa request tersebut harus diarahkan ke provider OpenRouter.

9Router kemudian mengirim request ke:

https://openrouter.ai/api/v1

dengan API key OpenRouter.

OpenRouter kemudian meneruskan request ke model:

openai/gpt-4o-mini

Model menghasilkan response.

Response kemudian berjalan kembali:

GPT-4o-mini
      ↓
OpenRouter
      ↓
9Router
      ↓
Hermes
      ↓
User

15. Diagram Request dan Response

Request

User
 ↓
Hermes
 ↓
POST localhost:20128/v1/chat/completions
 ↓
9Router
 ↓
POST OpenRouter API
 ↓
GPT-4o-mini

Response

GPT-4o-mini
 ↓
OpenRouter
 ↓
9Router
 ↓
Hermes
 ↓
User

Jadi 9Router berada tepat di tengah-tengah komunikasi.


16. Pengujian Akhir

Ada tiga tahap pengujian yang sebaiknya dilakukan.

Test 1 — 9Router aktif

curl -s http://localhost:20128/v1/models

Jika mendapatkan response JSON, berarti endpoint dapat diakses.

Misalnya:

{"object":"list","data":[]}

server tetap merespons.

Test 2 — 9Router → OpenRouter

Gunakan:

curl -X POST http://localhost:20128/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer API_KEY_9ROUTER" \
  -d '{
    "model": "openrouter/openai/gpt-4o-mini",
    "messages": [
      {
        "role": "user",
        "content": "Tes koneksi"
      }
    ]
  }'

Jika mendapatkan response dari model, jalur 9Router → OpenRouter sudah berhasil.

Test 3 — Hermes → 9Router

Jalankan:

hermes

Kemudian kirim prompt.

Jika Hermes mendapatkan response, maka seluruh chain sudah bekerja.


17. Troubleshooting

Error: Invalid API key

Contohnya:

Invalid API key

Pastikan API key yang digunakan Hermes adalah API key 9Router.

Jangan memasukkan API key OpenRouter ke bagian:

api_key:

Hermes berbicara dengan 9Router, bukan langsung dengan OpenRouter.


Error: No active credentials for provider

Contohnya:

No active credentials for provider: openai

atau:

No active credentials for provider: kiro

Artinya 9Router mencoba menggunakan provider tertentu tetapi credential aktif untuk provider tersebut tidak tersedia.

Periksa model yang digunakan.

Untuk konfigurasi kita:

openrouter/openai/gpt-4o-mini

bukan:

openai/gpt-4o-mini

dan bukan:

kr/claude-sonnet-4.5

18. Kenapa Prefix Model Penting?

9Router menggunakan prefix untuk menentukan routing.

Dalam konfigurasi kita:

openrouter/openai/gpt-4o-mini

dapat dibaca sebagai:

openrouter/

→ gunakan provider OpenRouter.

Kemudian:

openai/gpt-4o-mini

→ model yang diminta dari OpenRouter.

Jadi prefix tersebut bukan nama model OpenAI sebenarnya.

Ia merupakan bagian dari mekanisme routing 9Router.


19. Keuntungan Arsitektur Ini

Ada beberapa keuntungan menggunakan 9Router di antara Hermes dan OpenRouter.

1. Satu endpoint untuk Hermes

Hermes hanya perlu mengetahui:

http://localhost:20128/v1

Tidak perlu mengetahui endpoint setiap provider.

2. Provider dapat diganti

Jika suatu saat ingin menggunakan provider lain, perubahan dapat dilakukan di layer router.

Hermes tidak harus diubah secara besar-besaran.

3. Routing model lebih fleksibel

Model dapat dipanggil menggunakan namespace tertentu.

Contohnya:

openrouter/openai/gpt-4o-mini

4. Credential terpisah

API key Hermes dan API key provider tidak harus sama.

Strukturnya:

Hermes
   │
   │ credential 9Router
   ▼
9Router
   │
   │ credential provider
   ▼
Provider

5. Dapat menjadi layer abstraksi

Hermes cukup berbicara dengan satu API.

Router yang menangani detail provider di belakangnya.


20. Kekurangan dan Hal yang Perlu Diperhatikan

Layer tambahan juga berarti ada komponen tambahan.

Tanpa 9Router:

Hermes → OpenRouter

Dengan 9Router:

Hermes → 9Router → OpenRouter

Jika 9Router mati, Hermes tidak dapat mencapai provider.

Selain itu, konfigurasi model dan credential harus benar di kedua sisi.

Karena itu pengujian sebaiknya dilakukan secara bertahap:

1. OpenRouter
       ↓
2. 9Router → OpenRouter
       ↓
3. Hermes → 9Router → OpenRouter

Dengan cara ini jauh lebih mudah mengetahui lokasi masalah ketika terjadi error.


21. Konfigurasi Akhir

Secara ringkas, konfigurasi yang digunakan adalah:

model:
  default: openrouter/openai/gpt-4o-mini
  provider: custom
  base_url: http://localhost:20128/v1
  api_key: API_KEY_9ROUTER
  api_mode: chat_completions

Kemudian pada 9Router:

Provider:
OpenRouter

Type:
openai-compatible

Base URL:
https://openrouter.ai/api/v1

API Key:
API_KEY_OPENROUTER

Model yang dipanggil oleh Hermes:

openrouter/openai/gpt-4o-mini

22. Kesimpulan

Dengan konfigurasi ini, Hermes Agent tidak lagi berkomunikasi langsung dengan OpenRouter.

9Router ditempatkan sebagai API gateway di tengah.

Arsitektur akhirnya:

                     ┌──────────────────┐
│ Hermes Agent │
└────────┬─────────┘

│ localhost:20128/v1

┌──────────────────┐
│ 9Router │
└────────┬─────────┘

│ OpenRouter API

┌──────────────────┐
│ OpenRouter │
└────────┬─────────┘


┌──────────────────┐
│ GPT-4o-mini │
└──────────────────┘

Dengan demikian, Hermes berfungsi sebagai AI Agent, 9Router sebagai API gateway/router, OpenRouter sebagai model gateway, dan GPT-4o-mini sebagai model yang menjalankan inference.

Setup ini juga membuat arsitektur lebih modular karena masing-masing komponen memiliki fungsi yang jelas.

Yang paling penting, pengujian langsung terhadap endpoint:

http://localhost:20128/v1/chat/completions

dengan model:

openrouter/openai/gpt-4o-mini

telah berhasil. Artinya jalur:

9Router → OpenRouter → GPT-4o-mini

sudah berfungsi, dan Hermes kemudian dikonfigurasi menggunakan endpoint 9Router sebagai custom OpenAI-compatible provider.

Kurniawan – xcodepod.cloud

Tinggalkan komentar