Semua integrasi
Agen AI & gateway

OpenClaw

Gateway chat→agen (WhatsApp/Telegram/Slack). Provider openai-completions kustom.

Base URL dan API key diambil dari dasbor RouterKu (menu Integrasi & Kunci API). Pada contoh, ganti BASE_URL_DARI_DASBOR (berakhiran /v1), HOST_DARI_DASBOR (tanpa /v1) dan qdr-... dengan nilai milikmu.

OpenClaw adalah gateway agen AI self-hosted untuk WhatsApp, Telegram, Slack, Discord, dll. Ia mendukung provider OpenAI-compatible, jadi RouterKu cukup didaftarkan sebagai custom provider lewat baseUrl + API key, lalu dipakai dengan format routerku/<model>.

Nilai koneksi

Base URLBASE_URL_DARI_DASBOR
API Keyqdr-... (buat di menu Kunci API)
Modelsonnet-5 / opus-5

Langkah-langkah

  1. Pasang OpenClaw

    terminal
    npm install -g openclaw@latest
    openclaw onboard --install-daemon

    Butuh Node.js 20+. onboard memandu setup awal & memasang daemon gateway.

  2. Simpan API key RouterKu

    Cara paling aman dari error 401: taruh key di blok env dalam ~/.openclaw/openclaw.json (ikut hot-reload, tidak perlu restart):

    ~/.openclaw/openclaw.json
    {
      env: { ROUTERKU_API_KEY: "qdr-..." },
    }

    Alternatif: file ~/.openclaw/.env. Isi .env hanya dibaca saat Gateway START — kalau kamu ubah .env saat Gateway sudah jalan, wajib restart, kalau tidak key lama/kosong tetap dipakai dan muncul HTTP 401.

    terminal
    echo "ROUTERKU_API_KEY=qdr-..." >> ~/.openclaw/.env
    openclaw gateway restart
  3. Daftarkan RouterKu sebagai custom provider

    Edit ~/.openclaw/openclaw.json. Gateway auto-reload begitu file disimpan:

    ~/.openclaw/openclaw.json
    {
      // JSON5 — boleh pakai komentar & koma di akhir
      models: {
        mode: "merge",
        providers: {
          routerku: {
            baseUrl: "BASE_URL_DARI_DASBOR",
            apiKey: "${ROUTERKU_API_KEY}",
            api: "openai-completions",
            models: [
              { id: "sonnet-5",  name: "Claude Sonnet 5", input: ["text"], contextWindow: 1000000, maxTokens: 8192 },
              { id: "opus-5",    name: "Claude Opus 5",   input: ["text"], contextWindow: 1000000, maxTokens: 8192 },
              { id: "haiku-45",  name: "Claude Haiku 4.5", input: ["text"], contextWindow: 200000,  maxTokens: 8192 },
            ],
          },
        },
      },
      agents: {
        defaults: {
          model: {
            primary: "routerku/sonnet-5",
            fallbacks: ["routerku/opus-5"],
          },
          models: {
            "routerku/sonnet-5":  { alias: "Sonnet" },
            "routerku/opus-5":    { alias: "Opus" },
            "routerku/haiku-45":  { alias: "Haiku" },
          },
        },
      },
    }

    api: "openai-completions" = endpoint /v1/chat/completions RouterKu. ${ROUTERKU_API_KEY} diganti otomatis dari variabel lingkungan (blok env atau .env). Nama variabel wajib HURUF BESAR — pola yang dikenali hanya [A-Z_][A-Z0-9_]*; huruf kecil TIDAK diganti dan key terkirim mentah sebagai teks ${...} → 401.

    Kalau masih 401, boleh tulis key langsung (tanpa ${}) di apiKey untuk memastikan: apiKey: "qdr-...".

  4. Jalankan & buka dashboard

    terminal
    openclaw dashboard   # UI kontrol di http://127.0.0.1:18789

    Cek model kebaca, atau ganti model saat chat dengan /model.

  5. (Opsional) Sambungkan channel

    Contoh Telegram — tambahkan di ~/.openclaw/openclaw.json:

    ~/.openclaw/openclaw.json
    {
      channels: {
        telegram: {
          enabled: true,
          botToken: "123456:ABC-token-dari-BotFather",
          dmPolicy: "pairing",   // pairing | allowlist | open | disabled
        },
      },
    }

    Channel lain (WhatsApp, Slack, Discord, dll) polanya sama di bawah channels.<provider>.

Verifikasi cepat

terminal
openclaw models list      # harus muncul routerku/sonnet-5 dll
openclaw doctor           # cek config & koneksi

Kalau muncul 401, pastikan dulu key-nya memang hidup lewat Uji mandiri kunci berikut (harus balas 200):

terminal
curl -s -o /dev/null -w "%{http_code}\n" BASE_URL_DARI_DASBOR/chat/completions \
  -H "Authorization: Bearer $ROUTERKU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"haiku-45","max_tokens":10,"messages":[{"role":"user","content":"ping"}]}'

Hasil 200 = kunci & saldo RouterKu sehat, jadi 401 di OpenClaw murni soal key yang belum terbaca Gateway (lihat bagian Kalau bermasalah).

Model yang disarankan

opus-5Terkuat — penalaran mendalam untuk tugas berat, banyak tool, dan agen coding.
sonnet-5Andalan harian (default) — seimbang antara kualitas, kecepatan, dan biaya.
haiku-45Tercepat & termurah — balasan chat ringan, klasifikasi, dan boilerplate.

Tips

  • Format referensi model selalu provider/model → di sini routerku/sonnet-5.
  • Mau tambah model? Tinggal tambah entri di models.providers.routerku.models + alias di agents.defaults.models.
  • Lewat CLI (tanpa edit file): openclaw config set agents.defaults.model.primary routerku/sonnet-5.
  • Prompt caching RouterKu aktif otomatis untuk model Claude → hemat di sesi panjang.

Kalau bermasalah

  • Config ditolak / gateway gak mau start → OpenClaw validasi ketat. Jalankan openclaw doctor --fix.
  • authentication failed, HTTP 401 pada routerku/<model> → hampir selalu key TIDAK sampai ke request, bukan key mati. Urutan cek: (1) openclaw gateway restart setelah mengubah ~/.openclaw/.env (file itu hanya dibaca saat start); (2) nama variabel harus HURUF BESAR (ROUTERKU_API_KEY); (3) jangan ada spasi/kutip/baris kosong di .env (ROUTERKU_API_KEY=qdr-...); (4) coba tulis key apa adanya di apiKey untuk memastikan.
  • Uji key-nya langsung dengan curl di bawah (bagian Uji endpoint dari kode). Kalau curl 200 tapi OpenClaw 401 → masalah di config OpenClaw, bukan di RouterKu.
  • Benar-benar 401 dari kami → kunci dicabut/salah ketik. Terbitkan kunci baru di menu Kunci API. 402 = saldo habis, isi di Isi saldo.
  • Tidak konek → pastikan baseUrl berakhiran /v1 dan variabel ROUTERKU_API_KEY benar-benar terbaca Gateway.
  • Model ditolak → pakai ID persis (mis. sonnet-5) dan rujuk lengkap routerku/sonnet-5.

Uji endpoint dari kode (opsional)

bash
curl BASE_URL_DARI_DASBOR/chat/completions \
  -H "Authorization: Bearer qdr-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"sonnet-5","messages":[{"role":"user","content":"Halo!"}]}'

Siap mulai pakai AI tanpa ribet?

Daftar gratis, isi saldo mulai Rp20.000 lewat QRIS, dan langsung tancap gas di editor atau aplikasimu.