~/.openclaw/openclaw.json.
Path konfigurasi aktif harus berupa file biasa. Tata letak openclaw.json
bersymlink tidak didukung untuk penulisan yang dimiliki OpenClaw; penulisan atomik dapat mengganti
path tersebut alih-alih mempertahankan symlink. Jika Anda menyimpan konfigurasi di luar
direktori state bawaan, arahkan OPENCLAW_CONFIG_PATH langsung ke file sebenarnya.
Jika file tidak ada, OpenClaw menggunakan default yang aman. Alasan umum untuk menambahkan konfigurasi:
- Menghubungkan channel dan mengontrol siapa yang dapat mengirim pesan ke bot
- Mengatur model, alat, sandboxing, atau otomasi (Cron, hook)
- Menyetel sesi, media, jaringan, atau UI
config.schema.lookup untuk dokumentasi tingkat field
yang persis sebelum mengedit konfigurasi. Gunakan halaman ini untuk panduan berorientasi tugas dan
Referensi konfigurasi untuk peta field dan default
yang lebih luas.
Konfigurasi minimal
Mengedit konfigurasi
- Wizard interaktif
- CLI (satu baris)
- Control UI
- Edit langsung
Validasi ketat
openclaw config schema mencetak JSON Schema kanonis yang digunakan oleh Control UI
dan validasi. config.schema.lookup mengambil satu node dengan cakupan path plus
ringkasan turunan untuk tooling penelusuran mendalam. Metadata dokumentasi field title/description
dibawa melalui objek bersarang, wildcard (*), item array ([]), dan cabang anyOf/
oneOf/allOf. Skema Plugin dan channel runtime digabungkan saat
registry manifest dimuat.
Saat validasi gagal:
- Gateway tidak melakukan boot
- Hanya perintah diagnostik yang berfungsi (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Jalankan
openclaw doctoruntuk melihat masalah persisnya - Jalankan
openclaw doctor --fix(atau--yes) untuk menerapkan perbaikan
openclaw.json
gagal validasi (termasuk validasi lokal Plugin), startup Gateway gagal atau
reload dilewati dan runtime saat ini mempertahankan konfigurasi terakhir yang diterima.
Jalankan openclaw doctor --fix (atau --yes) untuk memperbaiki konfigurasi yang diberi prefiks/tertindih atau
memulihkan salinan terakhir yang diketahui baik. Promosi ke terakhir yang diketahui baik dilewati saat
kandidat berisi placeholder secret yang disunting seperti ***.
Tugas umum
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
channels.<provider>. Lihat halaman channel khusus untuk langkah penyiapan:- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
Memilih dan mengonfigurasi model
Memilih dan mengonfigurasi model
agents.defaults.modelsmendefinisikan katalog model dan bertindak sebagai allowlist untuk/model; entriprovider/*memfilter/model,/models, dan pemilih model ke provider yang dipilih sambil tetap menggunakan penemuan model dinamis.- Gunakan
openclaw config set agents.defaults.models '<json>' --strict-json --mergeuntuk menambahkan entri allowlist tanpa menghapus model yang ada. Penggantian biasa yang akan menghapus entri ditolak kecuali Anda meneruskan--replace. - Referensi model menggunakan format
provider/model(mis.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxmengontrol downscaling gambar transkrip/alat (default1200); nilai yang lebih rendah biasanya mengurangi penggunaan token vision pada run yang banyak screenshot.- Lihat CLI Model untuk mengganti model di chat dan Failover Model untuk rotasi autentikasi dan perilaku fallback.
- Untuk provider kustom/self-hosted, lihat Provider kustom di referensi.
Mengontrol siapa yang dapat mengirim pesan ke bot
Mengontrol siapa yang dapat mengirim pesan ke bot
dmPolicy:"pairing"(default): pengirim tidak dikenal mendapatkan kode pairing satu kali untuk disetujui"allowlist": hanya pengirim diallowFrom(atau penyimpanan allow yang sudah dipasangkan)"open": izinkan semua DM masuk (memerlukanallowFrom: ["*"])"disabled": abaikan semua DM
groupPolicy + groupAllowFrom atau allowlist khusus channel.Lihat referensi lengkap untuk detail per channel.Menyiapkan gating mention chat grup
Menyiapkan gating mention chat grup
- Mention metadata: @-mention native (tap-to-mention WhatsApp, @bot Telegram, dll.)
- Pola teks: pola regex aman di
mentionPatterns - Balasan terlihat:
messages.visibleRepliesdapat mewajibkan pengiriman message-tool secara global;messages.groupChat.visibleRepliesmenimpanya untuk grup/channel. - Lihat referensi lengkap untuk mode balasan terlihat, override per channel, dan mode self-chat.
Membatasi Skills per agent
Membatasi Skills per agent
agents.defaults.skills untuk baseline bersama, lalu override agent tertentu
dengan agents.list[].skills:- Hilangkan
agents.defaults.skillsagar Skills tidak dibatasi secara default. - Hilangkan
agents.list[].skillsuntuk mewarisi default. - Atur
agents.list[].skills: []agar tidak ada Skills. - Lihat Skills, Konfigurasi Skills, dan Referensi Konfigurasi.
Menyetel pemantauan kesehatan channel Gateway
Menyetel pemantauan kesehatan channel Gateway
- Atur
gateway.channelHealthCheckMinutes: 0untuk menonaktifkan restart health-monitor secara global. channelStaleEventThresholdMinutesharus lebih besar dari atau sama dengan interval pemeriksaan.- Gunakan
channels.<provider>.healthMonitor.enabledatauchannels.<provider>.accounts.<id>.healthMonitor.enableduntuk menonaktifkan restart otomatis untuk satu channel atau akun tanpa menonaktifkan monitor global. - Lihat Health Check untuk debugging operasional dan referensi lengkap untuk semua field.
Menyetel timeout handshake WebSocket Gateway
Menyetel timeout handshake WebSocket Gateway
- Default-nya adalah
15000milidetik. OPENCLAW_HANDSHAKE_TIMEOUT_MStetap didahulukan untuk override service atau shell satu kali.- Lebih baik perbaiki stall startup/event-loop terlebih dahulu; knob ini untuk host yang sehat tetapi lambat saat warmup.
Mengonfigurasi sesi dan reset
Mengonfigurasi sesi dan reset
dmScope:main(bersama) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: default global untuk perutean sesi yang terikat thread (Discord mendukung/focus,/unfocus,/agents,/session idle, dan/session max-age).- Lihat Manajemen Sesi untuk cakupan, tautan identitas, dan kebijakan pengiriman.
- Lihat referensi lengkap untuk semua bidang.
Aktifkan sandboxing
Aktifkan sandboxing
scripts/sandbox-setup.sh, atau dari instalasi npm lihat perintah inline docker build di Sandboxing § Image dan penyiapan.Lihat Sandboxing untuk panduan lengkap dan referensi lengkap untuk semua opsi.Aktifkan push berbasis relay untuk build iOS resmi
Aktifkan push berbasis relay untuk build iOS resmi
https://ios-push-relay.openclaw.ai.Deployment relay khusus memerlukan jalur build/deployment iOS yang sengaja dipisahkan, dengan URL relay yang cocok dengan URL relay gateway. Jika Anda menggunakan build relay khusus, atur ini dalam konfigurasi gateway:- Memungkinkan gateway mengirim
push.test, sinyal bangun, dan bangun sambung ulang melalui relay eksternal. - Menggunakan grant pengiriman bercakupan registrasi yang diteruskan oleh aplikasi iOS yang dipasangkan. Gateway tidak memerlukan token relay untuk seluruh deployment.
- Mengikat setiap registrasi berbasis relay ke identitas gateway yang dipasangkan dengan aplikasi iOS, sehingga gateway lain tidak dapat menggunakan ulang registrasi yang tersimpan.
- Mempertahankan build iOS lokal/manual pada APNs langsung. Pengiriman berbasis relay hanya berlaku untuk build resmi terdistribusi yang terdaftar melalui relay.
- Harus cocok dengan URL dasar relay yang dibenamkan ke dalam build iOS, agar lalu lintas registrasi dan pengiriman mencapai deployment relay yang sama.
- Instal aplikasi iOS resmi.
- Opsional: konfigurasikan
gateway.push.apns.relay.baseUrlpada gateway hanya saat menggunakan build relay khusus yang sengaja dipisahkan. - Pasangkan aplikasi iOS ke gateway dan biarkan sesi node serta operator tersambung.
- Aplikasi iOS mengambil identitas gateway, mendaftar ke relay menggunakan App Attest plus tanda terima aplikasi, lalu menerbitkan payload
push.apns.registerberbasis relay ke gateway yang dipasangkan. - Gateway menyimpan handle relay dan grant pengiriman, lalu menggunakannya untuk
push.test, sinyal bangun, dan bangun sambung ulang.
- Jika Anda mengalihkan aplikasi iOS ke gateway lain, sambungkan ulang aplikasi agar dapat menerbitkan registrasi relay baru yang terikat ke gateway tersebut.
- Jika Anda mengirim build iOS baru yang menunjuk ke deployment relay lain, aplikasi menyegarkan registrasi relay yang di-cache, bukan menggunakan ulang asal relay lama.
OPENCLAW_APNS_RELAY_BASE_URLdanOPENCLAW_APNS_RELAY_TIMEOUT_MSmasih berfungsi sebagai override env sementara.- URL relay gateway khusus harus cocok dengan URL dasar relay yang dibenamkan ke dalam build iOS. Jalur rilis App Store publik menolak override URL relay iOS khusus.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=truetetap menjadi celah pengembangan khusus loopback; jangan simpan URL relay HTTP dalam konfigurasi.
Siapkan heartbeat (check-in berkala)
Siapkan heartbeat (check-in berkala)
every: string durasi (30m,2h). Atur0muntuk menonaktifkan.target:last|none|<channel-id>(misalnyadiscord,matrix,telegram, atauwhatsapp)directPolicy:allow(default) ataublockuntuk target Heartbeat bergaya DM- Lihat Heartbeat untuk panduan lengkap.
Konfigurasikan pekerjaan cron
Konfigurasikan pekerjaan cron
sessionRetention: pangkas sesi run terisolasi yang telah selesai darisessions.json(default24h; aturfalseuntuk menonaktifkan).runLog: pangkas baris riwayat run Cron yang dipertahankan per pekerjaan.maxBytestetap diterima untuk log run lama berbasis file.- Lihat Pekerjaan cron untuk ringkasan fitur dan contoh CLI.
Siapkan webhooks (hooks)
Siapkan webhooks (hooks)
- Perlakukan semua konten payload hook/webhook sebagai input yang tidak tepercaya.
- Gunakan
hooks.tokenkhusus; jangan gunakan ulang rahasia auth Gateway aktif (gateway.auth.token/OPENCLAW_GATEWAY_TOKENataugateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Auth hook hanya melalui header (
Authorization: Bearer ...ataux-openclaw-token); token query-string ditolak. hooks.pathtidak boleh/; pertahankan ingress Webhook pada subpath khusus seperti/hooks.- Biarkan flag bypass konten tidak aman tetap dinonaktifkan (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) kecuali untuk debugging yang cakupannya sangat ketat. - Jika Anda mengaktifkan
hooks.allowRequestSessionKey, atur jugahooks.allowedSessionKeyPrefixesuntuk membatasi kunci sesi yang dipilih pemanggil. - Untuk agen yang digerakkan hook, pilih tier model modern yang kuat dan kebijakan tool yang ketat (misalnya hanya perpesanan plus sandboxing jika memungkinkan).
Konfigurasikan perutean multi-agen
Konfigurasikan perutean multi-agen
Pisahkan konfigurasi menjadi beberapa file ($include)
Pisahkan konfigurasi menjadi beberapa file ($include)
$include untuk mengatur konfigurasi besar:- File tunggal: menggantikan objek yang memuatnya
- Array file: di-deep-merge secara berurutan (yang belakangan menang)
- Kunci saudara: digabung setelah include (menimpa nilai yang di-include)
- Include bertingkat: didukung hingga kedalaman 10 level
- Path relatif: diselesaikan relatif terhadap file yang menyertakan
- Format path: path include tidak boleh berisi byte null dan harus benar-benar lebih pendek dari 4096 karakter sebelum dan sesudah resolusi
- Penulisan milik OpenClaw: saat penulisan hanya mengubah satu bagian top-level
yang didukung oleh include file tunggal seperti
plugins: { $include: "./plugins.json5" }, OpenClaw memperbarui file yang di-include tersebut dan membiarkanopenclaw.jsontetap utuh - Write-through yang tidak didukung: include root, array include, dan include dengan override saudara gagal tertutup untuk penulisan milik OpenClaw, alih-alih meratakan konfigurasi
- Pembatasan: path
$includeharus terselesaikan di bawah direktori yang berisiopenclaw.json. Untuk berbagi tree lintas mesin atau pengguna, aturOPENCLAW_INCLUDE_ROOTSke daftar path (:pada POSIX,;pada Windows) dari direktori tambahan yang dapat dirujuk oleh include. Symlink diselesaikan dan diperiksa ulang, sehingga path yang secara leksikal berada dalam dir konfigurasi tetapi target nyatanya keluar dari setiap root yang diizinkan tetap ditolak. - Penanganan error: error yang jelas untuk file yang hilang, error parse, include melingkar, format path tidak valid, dan panjang berlebihan
Hot reload konfigurasi
Gateway memantau~/.openclaw/openclaw.json dan menerapkan perubahan secara otomatis - restart manual tidak diperlukan untuk sebagian besar pengaturan.
Edit file langsung diperlakukan sebagai tidak tepercaya sampai tervalidasi. Watcher menunggu
churn temp-write/rename editor reda, membaca file final, dan menolak
edit eksternal yang tidak valid tanpa menulis ulang openclaw.json. Penulisan konfigurasi
milik OpenClaw menggunakan gerbang skema yang sama sebelum menulis; clobber destruktif seperti
menghapus gateway.mode atau mengecilkan file lebih dari separuh akan ditolak dan
disimpan sebagai .rejected.* untuk diperiksa.
Jika Anda melihat config reload skipped (invalid config) atau startup melaporkan Invalid config, periksa konfigurasi, jalankan openclaw config validate, lalu jalankan openclaw doctor --fix untuk perbaikan. Lihat Pemecahan masalah Gateway
untuk checklist.
Mode reload
| Mode | Perilaku |
|---|---|
hybrid (default) | Menerapkan perubahan aman secara hot seketika. Otomatis restart untuk perubahan kritis. |
hot | Hanya menerapkan perubahan aman secara hot. Mencatat peringatan saat restart diperlukan - Anda yang menanganinya. |
restart | Me-restart Gateway pada perubahan konfigurasi apa pun, aman atau tidak. |
off | Menonaktifkan pemantauan file. Perubahan berlaku pada restart manual berikutnya. |
Yang diterapkan secara hot vs yang memerlukan restart
Sebagian besar bidang diterapkan secara hot tanpa downtime. Dalam modehybrid, perubahan yang memerlukan restart ditangani secara otomatis.
| Kategori | Bidang | Perlu mulai ulang? |
|---|---|---|
| Saluran | channels.*, web (WhatsApp) - semua saluran bawaan dan plugin | Tidak |
| Agen & model | agent, agents, models, routing | Tidak |
| Otomasi | hooks, cron, agent.heartbeat | Tidak |
| Sesi & pesan | session, messages | Tidak |
| Alat & media | tools, browser, skills, mcp, audio, talk | Tidak |
| UI & lain-lain | ui, logging, identity, bindings | Tidak |
| Server Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Ya |
| Infrastruktur | discovery, plugins | Ya |
gateway.reload dan gateway.remote adalah pengecualian - mengubahnya tidak memicu mulai ulang.Perencanaan pemuatan ulang
Saat Anda mengedit file sumber yang dirujuk melalui$include, OpenClaw merencanakan
pemuatan ulang dari tata letak yang ditulis di sumber, bukan tampilan dalam memori
yang sudah diratakan. Ini membuat keputusan hot-reload (hot-apply vs mulai ulang)
tetap dapat diprediksi bahkan ketika satu bagian tingkat atas berada dalam file
include miliknya sendiri seperti plugins: { $include: "./plugins.json5" }.
Perencanaan pemuatan ulang gagal dalam mode tertutup jika tata letak sumber ambigu.
RPC konfigurasi (pembaruan terprogram)
Untuk tooling yang menulis konfigurasi melalui API Gateway, utamakan alur ini:config.schema.lookupuntuk memeriksa satu subtree (node skema dangkal + ringkasan anak)config.getuntuk mengambil snapshot saat ini plushashconfig.patchuntuk pembaruan parsial (JSON merge patch: objek digabung,nullmenghapus, array diganti ketika dikonfirmasi secara eksplisit denganreplacePathsjika entri akan dihapus)config.applyhanya ketika Anda bermaksud mengganti seluruh konfigurasiupdate.rununtuk self-update eksplisit plus mulai ulang; sertakancontinuationMessageketika sesi pasca-mulai ulang harus menjalankan satu turn tindak lanjutupdate.statusuntuk memeriksa sentinel mulai ulang pembaruan terbaru dan memverifikasi versi yang berjalan setelah mulai ulang
config.schema.lookup sebagai tempat pertama untuk dokumentasi
dan batasan tingkat bidang yang presisi. Gunakan Referensi konfigurasi
ketika mereka memerlukan peta konfigurasi yang lebih luas, default, atau tautan ke
referensi subsistem khusus.
config.apply, config.patch, update.run) dibatasi
lajunya hingga 3 permintaan per 60 detik per deviceId+clientIp. Permintaan
mulai ulang digabung lalu menerapkan cooldown 30 detik antar siklus mulai ulang.
update.status bersifat hanya-baca tetapi berada dalam cakupan admin karena sentinel
mulai ulang dapat menyertakan ringkasan langkah pembaruan dan ekor output perintah.config.apply maupun config.patch menerima raw, baseHash, sessionKey,
note, dan restartDelayMs. baseHash wajib untuk kedua metode ketika
konfigurasi sudah ada.
config.patch juga menerima replacePaths, array jalur konfigurasi yang penggantian
array-nya disengaja. Jika patch akan mengganti atau menghapus array yang sudah ada
dengan entri lebih sedikit, Gateway menolak penulisan kecuali jalur persis itu muncul
di replacePaths; array bertingkat di bawah entri array menggunakan [], seperti
agents.list[].skills. Ini mencegah snapshot config.get yang terpotong
secara diam-diam menimpa array routing atau allowlist. Gunakan config.apply ketika Anda
bermaksud mengganti konfigurasi penuh.
Variabel lingkungan
OpenClaw membaca env vars dari proses induk plus:.envdari direktori kerja saat ini (jika ada)~/.openclaw/.env(fallback global)
Shell env import (optional)
Shell env import (optional)
OPENCLAW_LOAD_SHELL_ENV=1Env var substitution in config values
Env var substitution in config values
${VAR_NAME}:- Hanya nama huruf besar yang cocok:
[A-Z_][A-Z0-9_]* - Var yang hilang/kosong memunculkan error saat pemuatan
- Escape dengan
$${VAR}untuk output literal - Berfungsi di dalam file
$include - Substitusi inline:
"${BASE}/v1"→"https://api.example.com/v1"
Secret refs (env, file, exec)
Secret refs (env, file, exec)
secrets.providers untuk env/file/exec) ada di Manajemen Rahasia.
Jalur kredensial yang didukung tercantum di Permukaan Kredensial SecretRef.Referensi lengkap
Untuk referensi lengkap bidang demi bidang, lihat Referensi Konfigurasi.Terkait: Contoh Konfigurasi · Referensi Konfigurasi · Doctor