Konfigurasi
OpenClaw membaca file konfigurasi opsional berformat dari~/.openclaw/openclaw.json.
Jika file tersebut tidak ada, OpenClaw akan menggunakan nilai default yang aman. Alasan umum untuk menambahkan konfigurasi adalah:
- Menghubungkan saluran dan mengontrol siapa yang dapat mengirim pesan ke bot
- Mengatur model, alat, sandboxing, atau otomatisasi (cron, hook)
- Menyetel sesi, media, jaringan, atau UI
Konfigurasi minimal
Mengedit konfigurasi
- Wizard interaktif
- CLI (perintah singkat)
- Control UI
- Edit langsung
Validasi ketat
Jika validasi gagal:- Gateway tidak akan berjalan (boot)
- Hanya perintah diagnostik yang berfungsi (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Jalankan
openclaw doctoruntuk melihat masalah secara detail - Jalankan
openclaw doctor --fix(atau--yes) untuk menerapkan perbaikan
Tugas umum
Menyiapkan saluran (WhatsApp, Telegram, Discord, dll.)
Menyiapkan saluran (WhatsApp, Telegram, Discord, dll.)
Masing-masing saluran memiliki bagian konfigurasi sendiri di bawah
channels.<provider>. Lihat halaman saluran khusus untuk langkah-langkah pengaturan:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Google Chat —
channels.googlechat - Mattermost —
channels.mattermost - MS Teams —
channels.msteams
Memilih dan mengonfigurasi model
Memilih dan mengonfigurasi model
Atur model utama dan cadangan (fallback) opsional:
agents.defaults.modelsmenentukan katalog model dan bertindak sebagai daftar izinkan (allowlist) untuk perintah/model.- Referensi model menggunakan format
penyedia/model(misal:anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxmengontrol pengecilan skala gambar transkrip/alat (default1200); nilai yang lebih rendah biasanya mengurangi penggunaan token visi pada proses yang banyak menggunakan screenshot.- Lihat CLI Model untuk mengganti model dalam chat dan Failover Model untuk rotasi autentikasi dan perilaku fallback.
- Untuk penyedia kustom/host mandiri, lihat Penyedia kustom di referensi.
Mengontrol siapa yang dapat mengirim pesan ke bot
Mengontrol siapa yang dapat mengirim pesan ke bot
Akses DM dikontrol per saluran melalui
dmPolicy:"pairing"(default): pengirim tidak dikenal akan mendapatkan kode pairing satu kali untuk disetujui"allowlist": hanya pengirim dalamallowFrom(atau penyimpanan pasangan yang diizinkan)"open": izinkan semua DM masuk (memerlukanallowFrom: ["*"])"disabled": abaikan semua DM
groupPolicy + groupAllowFrom atau daftar izinkan khusus saluran.Lihat referensi lengkap untuk detail per saluran.Menyiapkan penyaringan sebutan (mention gating) di grup
Menyiapkan penyaringan sebutan (mention gating) di grup
Pesan grup secara default memerlukan sebutan (mention). Konfigurasikan pola per agen:
- Sebutan metadata: sebutan (mention) asli @-mentions (WhatsApp tap-to-mention, Telegram @bot, dll.)
- Pola teks: pola regex dalam
mentionPatterns - Lihat referensi lengkap untuk override per saluran dan mode chat mandiri (self-chat).
Mengonfigurasi sesi dan reset
Mengonfigurasi sesi dan reset
Sesi mengontrol kelanjutan dan isolasi percakapan:
dmScope:main(bersama) |per-peer|per-channel-peer|per-account-channel-peer- Lihat Manajemen Sesi untuk cakupan (scoping), tautan identitas, dan kebijakan pengiriman.
- Lihat referensi lengkap untuk semua bidang.
Mengaktifkan sandboxing
Mengaktifkan sandboxing
Jalankan sesi agen dalam kontainer Docker yang terisolasi:Bangun citra (image) terlebih dahulu:
scripts/sandbox-setup.shLihat Sandboxing untuk panduan lengkap dan referensi lengkap untuk semua opsi.Menyiapkan heartbeat (pemeriksaan berkala)
Menyiapkan heartbeat (pemeriksaan berkala)
every: string durasi (30m,2h). Atur ke0muntuk menonaktifkan.target:last|whatsapp|telegram|discord|none- Lihat Heartbeat untuk panduan lengkap.
Mengonfigurasi cron job
Mengonfigurasi cron job
Menyiapkan webhook (hook)
Menyiapkan webhook (hook)
Aktifkan titik akhir (endpoint) webhook HTTP pada Gateway:Lihat referensi lengkap untuk semua opsi pemetaan dan integrasi Gmail.
Mengonfigurasi perutean multi-agen
Mengonfigurasi perutean multi-agen
Jalankan beberapa agen yang terisolasi dengan workspace dan sesi terpisah:Lihat Multi-Agen dan referensi lengkap untuk aturan pengikatan (binding) dan profil akses per-agen.
Membagi konfigurasi ke dalam beberapa file ($include)
Membagi konfigurasi ke dalam beberapa file ($include)
Gunakan
$include untuk mengatur konfigurasi yang besar:- File tunggal: menggantikan objek yang menampungnya
- Array file: digabungkan secara mendalam (deep-merge) sesuai urutan (yang terakhir menang)
- Kunci selevel (sibling): digabungkan setelah include (menimpa nilai yang disertakan)
- Include bersarang: didukung hingga kedalaman 10 tingkat
- Jalur relatif: diselesaikan relatif terhadap file yang menyertakannya
- Penanganan error: pesan error yang jelas untuk file yang hilang, kesalahan parsing, dan include yang melingkar (circular)
Hot reload konfigurasi
Gateway memantau~/.openclaw/openclaw.json dan menerapkan perubahan secara otomatis — sebagian besar pengaturan tidak memerlukan restart manual.
Mode muat ulang (Reload)
| Mode | Perilaku |
|---|---|
hybrid (default) | Menerapkan perubahan yang aman secara instan (hot-apply). Otomatis merestart untuk perubahan kritis. |
hot | Hanya menerapkan perubahan yang aman (hot-safe). Mencatat peringatan saat restart diperlukan. |
restart | Merestart Gateway pada setiap perubahan konfigurasi, baik aman maupun tidak. |
off | Menonaktifkan pemantauan file. Perubahan akan berlaku pada restart manual berikutnya. |
Apa yang bisa di-hot-apply vs apa yang butuh restart
Sebagian besar bidang dapat di-hot-apply tanpa waktu henti. Dalam modehybrid, perubahan yang membutuhkan restart akan ditangani secara otomatis.
| Kategori | Bidang | Butuh restart? |
|---|---|---|
| Saluran | channels.*, web (WhatsApp) — semua saluran bawaan dan ekstensi | Tidak |
| Agen & model | agent, agents, models, routing | Tidak |
| Otomatisasi | hooks, cron, agent.heartbeat | Tidak |
| Sesi & pesan | session, messages | Tidak |
| Alat & media | tools, browser, skills, audio, talk | Tidak |
| UI & lainnya | ui, logging, identity, bindings | Tidak |
| Server Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Ya |
| Infrastruktur | discovery, canvasHost, plugins | Ya |
gateway.reload dan gateway.remote adalah pengecualian — mengubah keduanya tidak memicu restart.RPC Konfigurasi (pembaruan terprogram)
RPC penulisan control-plane (
config.apply, config.patch, update.run) dibatasi (rate-limited) sebanyak 3 permintaan per 60 detik per deviceId+clientIp. Saat dibatasi, RPC mengembalikan UNAVAILABLE beserta retryAfterMs.config.apply (penggantian penuh)
config.apply (penggantian penuh)
Melakukan validasi + menulis konfigurasi penuh dan merestart Gateway dalam satu langkah.Parameter:
raw(string) — payload JSON5 untuk seluruh konfigurasibaseHash(opsional) — hash konfigurasi dariconfig.get(diperlukan jika konfigurasi sudah ada)sessionKey(opsional) — kunci sesi untuk ping bangun setelah restartnote(opsional) — catatan untuk sentinel restartrestartDelayMs(opsional) — jeda sebelum restart (default 2000)
config.patch (pembaruan parsial)
config.patch (pembaruan parsial)
Menggabungkan pembaruan parsial ke dalam konfigurasi yang sudah ada (semantik JSON merge patch):
- Objek digabungkan secara rekursif
nullmenghapus kunci- Array akan diganti secara utuh
raw(string) — JSON5 berisi hanya kunci yang ingin diubahbaseHash(diperlukan) — hash konfigurasi dariconfig.getsessionKey,note,restartDelayMs— sama denganconfig.apply
config.apply.Variabel lingkungan (Env var)
OpenClaw membaca variabel lingkungan dari proses induk ditambah:.envdari direktori kerja saat ini (jika ada)~/.openclaw/.env(cadangan global)
Impor shell env (opsional)
Impor shell env (opsional)
Jika diaktifkan dan kunci yang diharapkan belum diatur, OpenClaw akan menjalankan shell login Anda dan hanya mengimpor kunci yang hilang:Ekuivalen variabel lingkungan:
OPENCLAW_LOAD_SHELL_ENV=1Substitusi variabel lingkungan dalam nilai konfigurasi
Substitusi variabel lingkungan dalam nilai konfigurasi
Gunakan variabel lingkungan dalam nilai string konfigurasi apa pun dengan Aturan:
${NAMA_VAR}:- Hanya nama huruf besar yang cocok:
[A-Z_][A-Z0-9_]* - Variabel yang hilang/kosong akan memicu error saat dimuat
- Gunakan
$${VAR}untuk output literal (escape) - Berfungsi di dalam file
$include - Substitusi inline:
"${BASE}/v1"→"https://api.example.com/v1"