{"id":748,"date":"2026-09-12T00:36:39","date_gmt":"2026-09-12T00:36:39","guid":{"rendered":"https:\/\/masterkurniawan.my.id\/?p=748"},"modified":"2026-09-12T02:42:57","modified_gmt":"2026-09-12T02:42:57","slug":"panduan-bot-telegram-ai-dengan-hermes-9router-combo-fallback","status":"publish","type":"post","link":"https:\/\/masterkurniawan.my.id\/index.php\/2026\/09\/12\/panduan-bot-telegram-ai-dengan-hermes-9router-combo-fallback\/","title":{"rendered":"Panduan: Bot Telegram AI dengan Hermes + RAG + 9Router + Combo Fallback dengan xcodepod.cloud"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"767\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes9router-1024x767.png\" alt=\"\" class=\"wp-image-778\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes9router-1024x767.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes9router-300x225.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes9router-768x575.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes9router.png 1101w\" 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\">Punya bot Telegram yang bisa jawab pakai AI, tapi tahan banting saat provider down? Ini caranya.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Di era AI yang berkembang pesat, memiliki akses ke berbagai model LLM dari satu endpoint tunggal adalah kebutuhan yang semakin umum. <strong>9Router<\/strong> hadir sebagai solusi gateway yang memungkinkan kamu menggabungkan berbagai provider AI,  mulai dari model lokal hingga provider cloud seperti OpenRouter,  ke dalam satu antarmuka yang kompatibel dengan OpenAI API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artikel ini mendokumentasikan setup lengkap: dari konfigurasi <strong>9Router<\/strong> dengan combo fallback berlapis, <strong>Hermes<\/strong> sebagai agent, sampai <strong>bot Telegram<\/strong> yang siap dipakai 24\/7.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Arsitektur<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Telegram \u2500\u2500&gt; Hermes Gateway \u2500\u2500&gt; 9Router \u2500\u2500&gt; Combo Fallback \u2500\u2500&gt; Provider\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Telegram<\/strong> = client (HP\/laptop)<\/li>\n\n\n\n<li><strong>Hermes<\/strong> = agent yang nerima pesan, punya memory &amp; skill<\/li>\n\n\n\n<li><strong>9Router<\/strong> = gateway multi-model dengan combo fallback<\/li>\n\n\n\n<li><strong>Provider<\/strong> = OpenRouter, Ollama lokal, dll<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Yang perlu di-setting: <strong>3 lapis<\/strong> \u2014 9Router, Hermes, Telegram. Urutannya dari bawah ke atas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 1: Apa Itu Hermes Agent?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"599\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes22-1-1024x599.png\" alt=\"\" class=\"wp-image-763\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes22-1-1024x599.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes22-1-300x176.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes22-1-768x449.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/hermes22-1.png 1357w\" 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\"><strong>Hermes Agent<\/strong> adalah <strong>AI agent otonom<\/strong> yang dibangun oleh Nous Research. Berbeda dengan chatbot biasa atau coding copilot yang terikat IDE, Hermes dirancang untuk <strong>berjalan terus-menerus dan belajar dari pengalaman<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fitur Utama<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Fitur<\/th><th class=\"has-text-align-left\" data-align=\"left\">Penjelasan<\/th><\/tr><\/thead><tbody><tr><td><strong>Closed Learning Loop<\/strong><\/td><td>Agent membuat skill dari pengalaman, memperbaikinya saat digunakan, dan mengingat konteks antar sesi<\/td><\/tr><tr><td><strong>Persistent Memory<\/strong><\/td><td>Informasi lingkungan dan preferensi pengguna disimpan di <code>MEMORY.md<\/code> dan <code>USER.md<\/code>, dimuat otomatis ke system prompt<\/td><\/tr><tr><td><strong>Skill System<\/strong><\/td><td>Proses kompleks disimpan sebagai file Markdown di <code>~\/.hermes\/skills\/<\/code>, bisa digunakan ulang dan diperbaiki sendiri<\/td><\/tr><tr><td><strong>Multi-Platform Gateway<\/strong><\/td><td>CLI, Telegram, Discord, Slack, WhatsApp, dan 20+ platform lainnya dari satu gateway<\/td><\/tr><tr><td><strong>Tool &amp; API Integration<\/strong><\/td><td>60+ tool bawaan termasuk pencarian web, eksekusi terminal, operasi file, browser automation<\/td><\/tr><tr><td><strong>Eksekusi 24\/7<\/strong><\/td><td>Setelah diinstall sebagai systemd service, agent terus aktif menerima pesan dan menjalankan cron job<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 2: Apa Itu 9Router?<\/h2>\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-3-1024x373.png\" alt=\"\" class=\"wp-image-765\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-3-1024x373.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-3-300x109.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-3-768x280.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-3-1536x560.png 1536w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9router-3.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\"><strong>9Router<\/strong> adalah <strong>proxy\/gateway Node.js<\/strong> yang menyediakan endpoint <strong>OpenAI-compatible<\/strong> dan meneruskan request ke berbagai provider AI.<\/p>\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-1.png\" alt=\"\" class=\"wp-image-764\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9routerx-1.png 382w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/9routerx-1-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<h3 class=\"wp-block-heading\">Fitur Utama<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Fitur<\/th><th class=\"has-text-align-left\" data-align=\"left\">Penjelasan<\/th><\/tr><\/thead><tbody><tr><td><strong>OpenAI-Compatible API<\/strong><\/td><td>Endpoint <code>\/v1\/chat\/completions<\/code> yang bisa dipakai oleh tool apa pun yang mendukung OpenAI API<\/td><\/tr><tr><td><strong>40+ Provider<\/strong><\/td><td>OpenRouter, OpenAI, Anthropic, Groq, Ollama lokal, dan banyak lagi<\/td><\/tr><tr><td><strong>Combo (Fallback Chain)<\/strong><\/td><td>Kumpulan model dengan urutan prioritas. Jika model pertama gagal, otomatis coba model berikutnya<\/td><\/tr><tr><td><strong>Smart 3-Tier Fallback<\/strong><\/td><td>Auto-route: Subscription \u2192 Cheap \u2192 Free, zero downtime<\/td><\/tr><tr><td><strong>Token Saver<\/strong><\/td><td>RTK Token Saver mengompres output tool sebelum dikirim ke LLM, hemat 20-40% token<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Kategori Provider<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"402\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3-1024x402.png\" alt=\"\" class=\"wp-image-766\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3-1024x402.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3-300x118.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3-768x301.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3-1536x603.png 1536w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo4-3.png 1791w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Kategori<\/th><th class=\"has-text-align-left\" data-align=\"left\">Contoh<\/th><th class=\"has-text-align-left\" data-align=\"left\">Cara Connect<\/th><\/tr><\/thead><tbody><tr><td><strong>Custom Providers<\/strong><\/td><td>OpenRouter, vpskali, OpenAI, Anthropic<\/td><td>Input API key manual<\/td><\/tr><tr><td><strong>OAuth Providers<\/strong><\/td><td>Claude Code, GitHub Copilot, Cursor IDE, Cline<\/td><td>Login via OAuth<\/td><\/tr><tr><td><strong>Media Providers<\/strong><\/td><td>Untuk image\/audio generation<\/td><td>Tergantung provider<\/td><\/tr><tr><td><strong>Local Providers<\/strong><\/td><td>Ollama\/vLLM via custom endpoint<\/td><td>Input base URL lokal<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 3: Apa Itu Combo dan Strategi Fallback?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Combo<\/strong> adalah <strong>&#8220;model virtual&#8221;<\/strong> \u2014 kumpulan model dengan urutan prioritas. Ketika kamu memanggil combo dengan namanya, 9Router akan mencoba model satu per satu sampai ada yang berhasil.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4 Strategi Combo di 9Router<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"425\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2-1024x425.png\" alt=\"\" class=\"wp-image-769\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2-1024x425.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2-300x124.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2-768x319.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2-1536x637.png 1536w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback2.png 1801w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">#<\/th><th class=\"has-text-align-left\" data-align=\"left\">Strategi<\/th><th class=\"has-text-align-left\" data-align=\"left\">Cara Kerja<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td><strong>Fallback<\/strong><\/td><td>Coba model 1, kalau gagal coba model 2, dst. (default)<\/td><\/tr><tr><td>2<\/td><td><strong>Round Robin<\/strong><\/td><td>Rotasi antar model per request untuk bagi beban<\/td><\/tr><tr><td>3<\/td><td><strong>Fusion<\/strong><\/td><td>Panggil semua model paralel, lalu Judge model gabungkan jawaban. Paling mahal &amp; paling bagus kualitasnya<\/td><\/tr><tr><td>4<\/td><td><strong>Capacity Auto-Switch<\/strong><\/td><td>Pindah otomatis berdasarkan kapabilitas model (misal prioritaskan model yang support vision untuk gambar)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Kapan Pakai yang Mana<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Fallback<\/strong> \u2192 paling umum, untuk production (hemat biaya, model cadangan cuma kepakai saat utama gagal)<\/li>\n\n\n\n<li><strong>Round Robin<\/strong> \u2192 load balancing (hindari rate limit per model)<\/li>\n\n\n\n<li><strong>Fusion<\/strong> \u2192 task kritis yang gak boleh salah (mahal, N+1 call per request)<\/li>\n\n\n\n<li><strong>Capacity Auto-Switch<\/strong> \u2192 multimodal (auto pilih model berdasarkan jenis input)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Combo Fallback Berlapis<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"527\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback1-1024x527.png\" alt=\"\" class=\"wp-image-768\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback1-1024x527.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback1-300x154.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback1-768x395.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/fallback1.png 1256w\" 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\">Contoh combo dengan <strong>4 model<\/strong> dari provider berbeda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nama: xcodepodfallback\nStrategi: Fallback\n\n&#91;1] or\/openrouter\/auto\n&#91;2] mmf\/mimo-auto\n&#91;3] oc\/muse-spark-1.2-contributor-free\n&#91;4] vpskali\/deepseek-r1:1.5b\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cara kerja fallback:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request masuk \u2192 coba &#91;1] or\/openrouter\/auto\n                \u2193 gagal?\n                coba &#91;2] mmf\/mimo-auto\n                \u2193 gagal?\n                coba &#91;3] oc\/muse-spark-1.2-contributor-free\n                \u2193 gagal?\n                coba &#91;4] vpskali\/deepseek-r1:1.5b\n                \u2193 gagal?\n                return error\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo3-1-1024x462.png\" alt=\"\" class=\"wp-image-774\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo3-1-1024x462.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo3-1-300x135.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo3-1-768x347.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo3-1.png 1043w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Modelnya jalan di server data center xcodepod sendiri<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Makin banyak lapisan = makin kecil kemungkinan bot mati total.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Catatan penting:<\/strong> Pastikan semua provider yang dipakai di combo <strong>udah connected<\/strong>. Kalau <code>mmf\/<\/code> atau <code>oc\/<\/code> belum connect, model itu bakal error dan langsung di-skip oleh 9Router.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 4: Urutan Aliran Data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Berikut alur lengkap dari pesan Telegram sampai jawaban kembali:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"431\" height=\"1024\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx-1-431x1024.png\" alt=\"\" class=\"wp-image-777\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx-1-431x1024.png 431w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx-1-126x300.png 126w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/alurx-1.png 511w\" sizes=\"auto, (max-width: 431px) 100vw, 431px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>User kirim pesan<br>\u2192 Telegram sebagai client<\/li>\n\n\n\n<li>Hermes Gateway terima pesan<br>\u2192 Long polling ke Telegram API<br>\u2192 Proses dengan agent logic (memory, skill, tool)<\/li>\n\n\n\n<li>Hermes kirim ke 9Router<br>\u2192 Endpoint: <a href=\"http:\/\/localhost:20128\/v1\/chat\/completions\">http:\/\/localhost:20128\/v1\/chat\/completions<\/a><br>\u2192 Model: xcodepodfallback<\/li>\n\n\n\n<li>9Router resolve combo<br>\u2192 Coba model [1]: or\/openrouter\/auto<\/li>\n\n\n\n<li>OpenRouter route ke provider<br>\u2192 Kembalikan response ke 9Router<br>\u2192 Kalau gagal \u2192 coba [2], [3], [4]<\/li>\n\n\n\n<li>Ollama lokal (fallback terakhir)<br>\u2192 vpskali\/deepseek-r1:1.5b<br>\u2192 Jalan di server xcodepod<\/li>\n\n\n\n<li>Response kembali<br>\u2192 9Router \u2192 Hermes \u2192 Telegram<br>\u2192 User terima jawaban<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Penjelasan Setiap Langkah<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1-4: Hermes Gateway<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hermes gateway menggunakan <strong>long polling<\/strong> ke Telegram API<\/li>\n\n\n\n<li>Setiap beberapa detik, Hermes kirim request ke Telegram: &#8220;ada pesan baru?&#8221;<\/li>\n\n\n\n<li>Jika ada, Telegram kirim array update<\/li>\n\n\n\n<li>Hermes proses pesan dengan agent logic (memory, skill, tool yang tersedia)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5-8: Hermes kirim ke 9Router<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hermes kirim request ke <code>http:\/\/localhost:20128\/v1\/chat\/completions<\/code><\/li>\n\n\n\n<li>Model yang dikirim: <code>xcodepodfallback<\/code> (nama combo)<\/li>\n\n\n\n<li>9Router terima request, resolve combo, mulai coba model satu per satu<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>9-14: 9Router Fallback Chain<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Coba model [1]: <code>or\/openrouter\/auto<\/code><\/li>\n\n\n\n<li>Jika berhasil \u2192 return response<\/li>\n\n\n\n<li>Jika gagal (429, quota, 404) \u2192 coba model [2]: <code>mmf\/mimo-auto<\/code><\/li>\n\n\n\n<li>Jika gagal \u2192 coba model [3]: <code>oc\/muse-spark-1.2-contributor-free<\/code><\/li>\n\n\n\n<li>Jika gagal \u2192 coba model [4]: <code>vpskali\/deepseek-r1:1.5b<\/code><\/li>\n\n\n\n<li>Terus sampai ada yang berhasil<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>15-19: Response Kembali<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>9Router kembalikan response ke Hermes<\/li>\n\n\n\n<li>Hermes kirim balik ke Telegram via API<\/li>\n\n\n\n<li>User terima jawaban<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 5: Setup 9Router + Combo Fallback<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">5.1 Cek Provider yang Udah Connect<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Buka dashboard 9Router \u2192 menu <strong>Providers<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yang udah connect kelihatan titik hijau + tulisan &#8220;Connected&#8221;. Dari setup kamu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>openrouter<\/code> \u2192 \u2705 Connected<\/li>\n\n\n\n<li><code>vpskali<\/code> \u2192 \u2705 Connected<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5.2 Combo yang Aktif: <code>xcodepodfallback<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Di dashboard \u2192 <strong>Combo &amp; Vision Adapter<\/strong>, combo kamu namanya <strong><code>xcodepodfallback<\/code><\/strong>, dengan strategi <strong>Fallback<\/strong> (<code>Fallback \u2014 try in order<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isi combo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nama: xcodepodfallback\nStrategi: Fallback\n\n&#91;1] or\/openrouter\/auto\n&#91;2] mmf\/mimo-auto\n&#91;3] oc\/muse-spark-1.2-contributor-free\n&#91;4] vpskali\/deepseek-r1:1.5b\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">#<\/th><th class=\"has-text-align-left\" data-align=\"left\">Model<\/th><th class=\"has-text-align-left\" data-align=\"left\">Keterangan<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td><code>or\/openrouter\/auto<\/code><\/td><td>OpenRouter auto-route (utama)<\/td><\/tr><tr><td>2<\/td><td><code>mmf\/mimo-auto<\/code><\/td><td>MiMo auto<\/td><\/tr><tr><td>3<\/td><td><code>oc\/muse-spark-1.2-contributor-free<\/code><\/td><td>Muse Spark gratis<\/td><\/tr><tr><td>4<\/td><td><code>vpskali\/deepseek-r1:1.5b<\/code><\/td><td>Lokal, fallback terakhir<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5.3 Test Combo<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"112\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1-1024x112.png\" alt=\"\" class=\"wp-image-770\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1-1024x112.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1-300x33.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1-768x84.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1-1536x167.png 1536w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/combo1-1.png 1909w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export NINE_KEY=\"&lt;key-9router-kamu&gt;\"\n\ncurl -sS http:\/\/localhost:20128\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Authorization: Bearer $NINE_KEY\" \\\n  -d '{\"model\":\"xcodepodfallback\",\"messages\":&#91;{\"role\":\"user\",\"content\":\"test\"}]}' \\\n  &gt; \/tmp\/r.json\n\njq '{model, provider, error: (.error.message \/\/ null)}' \/tmp\/r.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output yang diharapkan:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"model\": \"deepseek\/deepseek-v4-flash-0731\",\n  \"provider\": \"Makora\",\n  \"error\": null\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Field <code>model<\/code> menunjukkan model aktual yang dipakai. Kalau muncul model cadangan, berarti fallback bekerja.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 6: Setup Hermes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 Konfigurasi Model<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"407\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/confighermes-1024x407.png\" alt=\"\" class=\"wp-image-773\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/confighermes-1024x407.png 1024w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/confighermes-300x119.png 300w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/confighermes-768x305.png 768w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/confighermes.png 1064w\" 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\">Edit file <code>~\/.hermes\/config.yaml<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>model:\n  default: xcodepodfallback\n  provider: custom\n  base_url: http:\/\/localhost:20128\/v1\n  api_key: ${NINE_KEY}\n  api_mode: chat_completions\ndatabase:\n  journal_mode: wal\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Poin penting:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>provider: custom<\/code> \u2192 ngasih tau Hermes ini endpoint OpenAI-compatible<\/li>\n\n\n\n<li><code>base_url<\/code> \u2192 arahkan ke 9Router<\/li>\n\n\n\n<li><code>default: xcodepodfallback<\/code> \u2192 nama combo, sesuai yang di dashboard<\/li>\n\n\n\n<li><code>api_key: ${NINE_KEY}<\/code> \u2192 pakai environment variable biar key gak kelihatan<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Simpan Key di Environment Variable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>File <code>~\/.hermes\/.env<\/code>:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NINE_KEY=&lt;key-9router-kamu&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>File <code>~\/.bashrc<\/code>:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export NINE_KEY=\"&lt;key-9router-kamu&gt;\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Load ulang:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/.bashrc\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 Hapus OPENROUTER_API_KEY dari Hermes .env<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Key OpenRouter itu <strong>buat 9Router<\/strong>, bukan buat Hermes. Kalau ada di dua tempat, bisa bikin konflik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i '\/^OPENROUTER_API_KEY=\/d' ~\/.hermes\/.env\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.4 Jalankan Hermes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>hermes -z \"kamu siapa?\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kalau jawabannya keluar, berarti Hermes udah konek ke 9Router.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 7: Setup Bot Telegram<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">7.1 Buat Bot di BotFather<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Buka Telegram, cari <strong>@BotFather<\/strong><\/li>\n\n\n\n<li>Kirim <code>\/newbot<\/code><\/li>\n\n\n\n<li>Kasih nama bot<\/li>\n\n\n\n<li>Kasih username (wajib diakhiri <code>bot<\/code>, misal <code>my_vps_agent_bot<\/code>)<\/li>\n\n\n\n<li>BotFather ngasih <strong>Token<\/strong> (format: <code>123456789:ABCdef...<\/code>)<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">7.2 Dapatkan User ID<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cari <strong>@userinfobot<\/strong>, kirim pesan apa saja. Dia balas dengan <strong>User ID<\/strong> numerik kamu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.3 Konfigurasi Telegram di Hermes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Edit file <code>~\/.hermes\/.env<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># TELEGRAM INTEGRATION\nTELEGRAM_BOT_TOKEN=&lt;token-dari-botfather&gt;\nTELEGRAM_ALLOWED_USERS=&lt;user-id-kamu&gt;\nNINE_KEY=&lt;key-9router-kamu&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Untuk multiple users<\/strong>, pisahkan dengan koma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TELEGRAM_ALLOWED_USERS=111,222,333\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>Pastikan gak ada duplikat<\/strong> blok Telegram. Kalau ada dua, yang kedua menimpa yang pertama dan <code>ALLOWED_USERS<\/code> bisa jadi kosong.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.4 Jalankan Gateway<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"657\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram1-3.png\" alt=\"\" class=\"wp-image-771\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram1-3.png 689w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram1-3-300x286.png 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"657\" height=\"704\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram2.png\" alt=\"\" class=\"wp-image-772\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram2.png 657w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/telegram2-280x300.png 280w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Test di foreground dulu:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hermes gateway run\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Coba kirim pesan dari HP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kalau udah jalan, install as service:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hermes gateway install\nhermes gateway start\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk VPS\/headless host yang harus comeback at boot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo hermes gateway install --system\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 8: Setup Memory Holographic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah Hermes dan Telegram jalan, tambahkan <strong>memory<\/strong> biar bot bisa ingat konteks antar sesi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.1 Aktifkan Holographic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Holographic adalah provider memory paling ringan \u2014 <strong>nol dependensi eksternal<\/strong>, semua jalan di SQLite lokal <a href=\"https:\/\/github.com\/NousResearch\/hermes-agent\/blob\/524cbabd\/website\/docs\/user-guide\/features\/memory-providers.md?plain=1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">hermes memory setup\n# Pilih \"holographic\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Atau manual:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">hermes config set memory.provider holographic<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">8.2 Konfigurasi Auto-Extract<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Default-nya <code>auto_extract: false<\/code>, yang berarti bot <strong>tidak otomatis<\/strong> nyimpen fakta dari percakapan. Kamu harus eksplisit nyuruh (misal: <em>&#8220;ingat ya&#8230;&#8221;<\/em>). Ini justru bagus \u2014 database tetap bersih.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kalau mau bot otomatis nyimpen, edit <code>~\/.hermes\/config.yaml<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">yaml<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">plugins:\n  hermes-memory-store:\n    auto_extract: true\n    default_trust: 0.5\n    hrr_dim: 1024<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">8.3 Verifikasi Memory Holographic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah Holographic diaktifkan, kamu perlu memastikan database-nya beneran bekerja.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Install SQLite<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">SQLite biasanya udah ada di Ubuntu, tapi kalau belum:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt update\nsudo apt install sqlite3 -y\nsqlite3 --version<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Cek Isi Database Memory<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"351\" height=\"411\" src=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/memory.png\" alt=\"\" class=\"wp-image-783\" srcset=\"https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/memory.png 351w, https:\/\/masterkurniawan.my.id\/wp-content\/uploads\/2026\/09\/memory-256x300.png 256w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Database Holographic tersimpan di <code>~\/.hermes\/memory_store.db<\/code>. Lihat semua fakta yang tersimpan:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlite3 ~\/.hermes\/memory_store.db \"SELECT fact_id, content, category, trust_score, created_at FROM facts;\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Contoh output:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">text<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">2|User's name is Kurniawan (Telegram DM, chat_id 1520328623). Communicates in informal Indonesian\/Malay mix.|user_pref|0.5|2026-09-12 01:48:13<\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field<\/th><th>Arti<\/th><\/tr><\/thead><tbody><tr><td><code>fact_id<\/code><\/td><td>ID unik fakta<\/td><\/tr><tr><td><code>content<\/code><\/td><td>Isi fakta yang tersimpan<\/td><\/tr><tr><td><code>category<\/code><\/td><td>Kategori (<code>user_pref<\/code>, <code>fact<\/code>, dll)<\/td><\/tr><tr><td><code>trust_score<\/code><\/td><td>Tingkat kepercayaan (default <code>0.5<\/code>)<\/td><\/tr><tr><td><code>created_at<\/code><\/td><td>Waktu penyimpanan<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Lihat Semua Fakta (Ringkas)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlite3 ~\/.hermes\/memory_store.db \"SELECT fact_id, content, trust_score FROM facts;\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Cek Skema Tabel<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlite3 ~\/.hermes\/memory_store.db \".schema facts\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Statistik per Kategori<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlite3 ~\/.hermes\/memory_store.db \"SELECT category, COUNT(*) FROM facts GROUP BY category;\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Cara Kerja Trust Score<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Trust score mulai dari <code>0.5<\/code> (default). Mekanismenya:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Naik<\/strong> \u2192 kalau fakta sering dikonfirmasi<\/li>\n\n\n\n<li><strong>Turun<\/strong> \u2192 kalau fakta dibantah<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ini fitur <strong>self-correcting<\/strong> dari Holographic \u2014 database-nya bisa &#8220;belajar&#8221; mana fakta yang akurat <a href=\"https:\/\/github.com\/NousResearch\/hermes-agent\/blob\/524cbabd\/website\/docs\/user-guide\/features\/memory-providers.md?plain=1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Uji Fungsional<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Cara paling nyata buat mastiin memory-nya jalan:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Langkah 1 \u2014 Minta bot nyimpen fakta:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;Tolong ingat, server produksi kita namanya <code>xcodepod<\/code> dan jalan di Ubuntu.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Langkah 2 \u2014 Tanya di sesi baru:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;Server produksi kita namanya apa?&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Kalau bot jawab <code>xcodepod<\/code>, berarti memory-nya bekerja. \u2705<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Catatan:<\/strong> Model kecil (kayak <code>deepseek-r1:1.5b<\/code>) kadang sulit memanggil tool <code>fact_store<\/code> \u2014 kalau memory gak muncul di konteks, coba panggil manual: <em>&#8220;Apa yang kamu ingat tentang saya?&#8221;<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 9: Error yang Sering Muncul<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Error<\/th><th class=\"has-text-align-left\" data-align=\"left\">Penyebab<\/th><th class=\"has-text-align-left\" data-align=\"left\">Solusi<\/th><\/tr><\/thead><tbody><tr><td>Bot diam, <code>Stale gateway_state.json<\/code><\/td><td>Proses mati gak wajar<\/td><td><code>rm ~\/.hermes\/gateway_state.json<\/code>, restart<\/td><\/tr><tr><td>Bot diam padahal connected<\/td><td>Config Telegram duplikat<\/td><td>Sisain satu blok di <code>.env<\/code><\/td><\/tr><tr><td><code>connection refused<\/code><\/td><td>Gateway gak bisa akses 9Router<\/td><td>Ganti <code>localhost<\/code> jadi IP host<\/td><\/tr><tr><td><code>Model not found<\/code><\/td><td>Nama model salah atau provider belum connect<\/td><td>Test curl dulu, connect provider<\/td><\/tr><tr><td><code>No active credentials for provider: openai<\/code><\/td><td>Model tanpa prefix <code>or\/<\/code><\/td><td>Ganti ke <code>or\/openai\/...<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 10: Keamanan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>Token dan API key jangan disebar.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Jangan paste token Telegram \/ API key ke chat publik<\/li>\n\n\n\n<li>Kalau bocor \u2192 <strong>revoke<\/strong> di @BotFather (<code>\/mybots<\/code> \u2192 API Token \u2192 Revoke)<\/li>\n\n\n\n<li>API key OpenRouter \u2192 revoke di <a href=\"https:\/\/openrouter.ai\/keys\">openrouter.ai\/keys<\/a><\/li>\n\n\n\n<li>Simpan di <code>.env<\/code> dengan permission ketat: <code>chmod 600 ~\/.hermes\/.env<\/code><\/li>\n\n\n\n<li>Batasi akses dashboard 9Router ke <code>localhost<\/code> saja<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pakai environment variable<\/strong> biar key gak kelihatan di config atau history:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ~\/.bashrc\nexport NINE_KEY=\"&lt;key-9router-kamu&gt;\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lalu di curl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $NINE_KEY\" ...\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hermes memiliki sistem approval:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>approvals:\n  mode: manual  # manual | smart | off\n  timeout: 60\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Kesimpulan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Setup Hermes + 9Router + Telegram dengan <strong>combo fallback berlapis<\/strong> memberikan:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bot Telegram AI<\/strong> yang bisa diakses dari mana aja<\/li>\n\n\n\n<li><strong>Fallback berlapis<\/strong> \u2014 beberapa model berbeda dicoba berurutan sampai ada yang berhasil<\/li>\n\n\n\n<li><strong>Kontrol penuh<\/strong> \u2014 ganti model tanpa sentuh bot, cukup edit combo di 9Router<\/li>\n\n\n\n<li><strong>Biaya terkendali<\/strong> \u2014 model gratis jadi &#8220;lantai&#8221; yang jaga bot tetap hidup<\/li>\n\n\n\n<li><strong>Persistent memory<\/strong> \u2014 Hermes mengingat konteks proyek<\/li>\n\n\n\n<li><strong>API key tersembunyi<\/strong> \u2014 pakai environment variable, gak kelihatan di config atau history<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kunci suksesnya:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Test tiap model satu-satu sebelum dimasukkan combo<\/li>\n\n\n\n<li>Pastikan semua provider yang dipakai di combo udah connected<\/li>\n\n\n\n<li>Test komponen satu-satu (9Router \u2192 Hermes \u2192 Telegram)<\/li>\n\n\n\n<li>Langsung <code>hermes gateway run<\/code>, jangan install service dulu sebelum yakin jalan<\/li>\n\n\n\n<li>Bersihin config duplikat<\/li>\n\n\n\n<li>Simpan API key di environment variable, bukan di config<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Setup ini diuji dengan Hermes, 9Router, dan OpenRouter sebagai provider utama + Ollama sebagai fallback.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kurniawan &#8211; xcodepod.cloud<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Punya bot Telegram yang bisa jawab pakai AI, tapi tahan banting saat provider down? Ini caranya. Di era AI yang berkembang pesat, memiliki akses ke berbagai model LLM dari satu endpoint tunggal adalah kebutuhan yang semakin umum. 9Router hadir sebagai solusi gateway yang memungkinkan kamu menggabungkan berbagai provider AI, mulai dari model lokal hingga provider &#8230; <a title=\"Panduan: Bot Telegram AI dengan Hermes + RAG + 9Router + Combo Fallback dengan xcodepod.cloud\" class=\"read-more\" href=\"https:\/\/masterkurniawan.my.id\/index.php\/2026\/09\/12\/panduan-bot-telegram-ai-dengan-hermes-9router-combo-fallback\/\" aria-label=\"Baca selengkapnya tentang Panduan: Bot Telegram AI dengan Hermes + RAG + 9Router + Combo Fallback dengan xcodepod.cloud\">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":[11,9],"tags":[],"class_list":["post-748","post","type-post","status-publish","format-standard","hentry","category-cloud","category-server"],"_links":{"self":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/748","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=748"}],"version-history":[{"count":6,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/748\/revisions"}],"predecessor-version":[{"id":785,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/posts\/748\/revisions\/785"}],"wp:attachment":[{"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/media?parent=748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/categories?post=748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masterkurniawan.my.id\/index.php\/wp-json\/wp\/v2\/tags?post=748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}