
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