Konfigurasi
OpenClaw membaca config opsional dari~/.openclaw/openclaw.json.
Jika file tidak ada, OpenClaw menggunakan default yang aman. Alasan umum untuk menambahkan config:
- Menghubungkan channel dan mengontrol siapa yang dapat mengirim pesan ke bot
- Menetapkan model, tool, sandboxing, atau otomatisasi (cron, hooks)
- Menyesuaikan sesi, media, jaringan, atau UI
Config minimal
Mengedit config
- Wizard interaktif
- CLI (one-liner)
- Control UI
- Edit langsung
Validasi ketat
Catatan tooling skema:openclaw config schemamencetak keluarga JSON Schema yang sama yang digunakan oleh Control UI dan validasi config.- Nilai field
titledandescriptiondibawa ke output skema untuk tooling editor dan formulir. - Entri nested object, wildcard (
*), dan array-item ([]) mewarisi metadata docs yang sama ketika dokumentasi field yang cocok tersedia. - Branch komposisi
anyOf/oneOf/allOfjuga mewarisi metadata docs yang sama, sehingga varian union/intersection tetap memiliki bantuan field yang sama. config.schema.lookupmengembalikan satu path config yang dinormalisasi dengan node skema dangkal (title,description,type,enum,const, batas umum, dan field validasi serupa), metadata petunjuk UI yang cocok, dan ringkasan child langsung untuk tooling drill-down.- Skema plugin/channel runtime digabungkan saat gateway dapat memuat registri manifest saat ini.
- Gateway tidak melakukan boot
- Hanya perintah diagnostik yang berfungsi (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Jalankan
openclaw doctoruntuk melihat masalah yang tepat - Jalankan
openclaw doctor --fix(atau--yes) untuk menerapkan perbaikan
Tugas umum
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Setiap channel memiliki bagian config sendiri di bawah
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
Tetapkan model utama dan fallback opsional:
agents.defaults.modelsmendefinisikan katalog model dan bertindak sebagai allowlist untuk/model.- Ref model menggunakan format
provider/model(misalnyaanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxmengontrol downscaling gambar transkrip/tool (default1200); nilai yang lebih rendah biasanya mengurangi penggunaan vision-token pada eksekusi yang banyak screenshot.- Lihat Models CLI untuk mengganti model di chat dan Failover Model untuk perilaku rotasi auth dan 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
Akses DM dikontrol per channel melalui
dmPolicy:"pairing"(default): pengirim yang tidak dikenal mendapatkan pairing code satu kali untuk disetujui"allowlist": hanya pengirim diallowFrom(atau penyimpanan allow berpasangan)"open": izinkan semua DM masuk (memerlukanallowFrom: ["*"])"disabled": abaikan semua DM
groupPolicy + groupAllowFrom atau allowlist khusus channel.Lihat referensi lengkap untuk detail per channel.Menyiapkan mention gating obrolan grup
Menyiapkan mention gating obrolan grup
Pesan grup secara default memerlukan mention. Konfigurasikan pola per agen:
- Mention metadata: @-mention native (WhatsApp tap-to-mention, Telegram @bot, dll.)
- Pola teks: pola regex aman dalam
mentionPatterns - Lihat referensi lengkap untuk override per channel dan mode self-chat.
Membatasi Skills per agen
Membatasi Skills per agen
Gunakan
agents.defaults.skills untuk baseline bersama, lalu override agen tertentu
dengan agents.list[].skills:- Hilangkan
agents.defaults.skillsuntuk Skills tak terbatas secara default. - Hilangkan
agents.list[].skillsuntuk mewarisi default. - Setel
agents.list[].skills: []untuk tanpa Skills. - Lihat Skills, Config Skills, dan Referensi Konfigurasi.
Menyesuaikan pemantauan kesehatan channel gateway
Menyesuaikan pemantauan kesehatan channel gateway
Kendalikan seberapa agresif gateway memulai ulang channel yang terlihat usang:
- Setel
gateway.channelHealthCheckMinutes: 0untuk menonaktifkan restart health-monitor secara global. channelStaleEventThresholdMinutesharus lebih besar atau sama dengan interval pemeriksaan.- Gunakan
channels.<provider>.healthMonitor.enabledatauchannels.<provider>.accounts.<id>.healthMonitor.enableduntuk menonaktifkan auto-restart bagi satu channel atau akun tanpa menonaktifkan monitor global. - Lihat Pemeriksaan Kesehatan untuk pen-debug-an operasional dan referensi lengkap untuk semua field.
Mengonfigurasi sesi dan reset
Mengonfigurasi sesi dan reset
Sesi mengontrol kontinuitas dan isolasi percakapan:
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 field.
Mengaktifkan sandboxing
Mengaktifkan sandboxing
Jalankan sesi agen di container Docker yang terisolasi:Bangun image terlebih dahulu:
scripts/sandbox-setup.shLihat Sandboxing untuk panduan lengkap dan referensi lengkap untuk semua opsi.Mengaktifkan push berbasis relay untuk build iOS resmi
Mengaktifkan push berbasis relay untuk build iOS resmi
Push berbasis relay dikonfigurasi di Padanan CLI:Yang dilakukan ini:
openclaw.json.Setel ini di config gateway:- Memungkinkan gateway mengirim
push.test, wake nudge, dan reconnect wake melalui relay eksternal. - Menggunakan izin kirim yang dicakup registrasi dan diteruskan oleh app iOS yang dipasangkan. Gateway tidak memerlukan token relay untuk seluruh deployment.
- Mengikat setiap registrasi berbasis relay ke identitas gateway yang dipasangkan oleh app iOS, sehingga gateway lain tidak dapat menggunakan kembali registrasi yang tersimpan.
- Mempertahankan build iOS lokal/manual pada APNs langsung. Pengiriman berbasis relay hanya berlaku untuk build terdistribusi resmi yang mendaftar melalui relay.
- Harus cocok dengan URL dasar relay yang ditanamkan ke dalam build iOS resmi/TestFlight, sehingga lalu lintas registrasi dan pengiriman mencapai deployment relay yang sama.
- Instal build iOS resmi/TestFlight yang dikompilasi dengan URL dasar relay yang sama.
- Konfigurasikan
gateway.push.apns.relay.baseUrlpada gateway. - Pasangkan app iOS ke gateway dan biarkan sesi node serta operator sama-sama terhubung.
- App iOS mengambil identitas gateway, mendaftar ke relay menggunakan App Attest plus app receipt, lalu memublikasikan payload
push.apns.registerberbasis relay ke gateway yang dipasangkan. - Gateway menyimpan handle relay dan izin kirim, lalu menggunakannya untuk
push.test, wake nudge, dan reconnect wake.
- Jika Anda memindahkan app iOS ke gateway yang berbeda, sambungkan kembali app agar dapat memublikasikan registrasi relay baru yang terikat ke gateway tersebut.
- Jika Anda merilis build iOS baru yang mengarah ke deployment relay berbeda, app akan menyegarkan registrasi relay cache alih-alih menggunakan kembali asal relay yang lama.
OPENCLAW_APNS_RELAY_BASE_URLdanOPENCLAW_APNS_RELAY_TIMEOUT_MSmasih berfungsi sebagai override env sementara.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truetetap menjadi jalan keluar pengembangan khusus loopback; jangan simpan URL relay HTTP dalam config.
Menyiapkan heartbeat (check-in berkala)
Menyiapkan heartbeat (check-in berkala)
every: string durasi (30m,2h). Setel0muntuk menonaktifkan.target:last|none|<channel-id>(misalnyadiscord,matrix,telegram, atauwhatsapp)directPolicy:allow(default) ataublockuntuk target heartbeat bergaya DM- Lihat Heartbeat untuk panduan lengkap.
Mengonfigurasi tugas cron
Mengonfigurasi tugas cron
sessionRetention: pangkas sesi eksekusi terisolasi yang telah selesai darisessions.json(default24h; setelfalseuntuk menonaktifkan).runLog: pangkascron/runs/<jobId>.jsonlberdasarkan ukuran dan jumlah baris yang dipertahankan.- Lihat Tugas cron untuk ikhtisar fitur dan contoh CLI.
Menyiapkan webhook (hooks)
Menyiapkan webhook (hooks)
Aktifkan endpoint webhook HTTP pada Gateway:Catatan keamanan:
- Perlakukan semua konten payload hook/webhook sebagai input yang tidak tepercaya.
- Gunakan
hooks.tokenkhusus; jangan gunakan ulang token Gateway bersama. - Auth hook hanya melalui header (
Authorization: Bearer ...ataux-openclaw-token); token query-string ditolak. hooks.pathtidak boleh berupa/; pertahankan ingress webhook pada subpath khusus seperti/hooks.- Biarkan flag bypass konten tidak aman tetap nonaktif (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) kecuali saat melakukan pen-debug-an yang sangat terbatas. - Jika Anda mengaktifkan
hooks.allowRequestSessionKey, setel jugahooks.allowedSessionKeyPrefixesuntuk membatasi session key yang dipilih pemanggil. - Untuk agen yang digerakkan hook, utamakan tier model modern yang kuat dan kebijakan tool yang ketat (misalnya hanya messaging plus sandboxing jika memungkinkan).
Mengonfigurasi perutean multi-agen
Mengonfigurasi perutean multi-agen
Jalankan beberapa agen terisolasi dengan workspace dan sesi terpisah:Lihat Multi-Agent dan referensi lengkap untuk aturan binding dan profil akses per agen.
Membagi config ke beberapa file ($include)
Membagi config ke beberapa file ($include)
Gunakan
$include untuk mengatur config yang besar:- Satu file: menggantikan object yang memuatnya
- Array file: di-deep-merge secara berurutan (yang belakangan menang)
- Key saudara: digabungkan setelah include (menimpa nilai yang di-include)
- Include bertingkat: didukung hingga 10 level
- Path relatif: diresolusikan relatif terhadap file yang meng-include
- Penanganan error: error yang jelas untuk file yang hilang, parse error, dan include melingkar
Hot reload config
Gateway memantau~/.openclaw/openclaw.json dan menerapkan perubahan secara otomatis — tidak perlu mulai ulang manual untuk sebagian besar pengaturan.
Mode reload
| Mode | Perilaku |
|---|---|
hybrid (default) | Menerapkan perubahan aman secara hot seketika. Secara otomatis memulai ulang untuk perubahan kritis. |
hot | Hanya menerapkan perubahan aman secara hot. Mencatat peringatan saat perlu mulai ulang — Anda yang menanganinya. |
restart | Memulai ulang Gateway pada setiap perubahan config, aman atau tidak. |
off | Menonaktifkan pemantauan file. Perubahan berlaku pada mulai ulang manual berikutnya. |
Apa yang diterapkan secara hot vs apa yang perlu mulai ulang
Sebagian besar field diterapkan secara hot tanpa downtime. Dalam modehybrid, perubahan yang memerlukan mulai ulang ditangani secara otomatis.
| Kategori | Fields | Perlu mulai ulang? |
|---|---|---|
| Channel | channels.*, web (WhatsApp) — semua channel bawaan dan extension | Tidak |
| Agen & model | agent, agents, models, routing | Tidak |
| Otomatisasi | hooks, cron, agent.heartbeat | Tidak |
| Sesi & pesan | session, messages | Tidak |
| Tool & media | tools, browser, skills, audio, talk | Tidak |
| UI & lain-lain | 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 — mengubahnya tidak memicu mulai ulang.RPC config (pembaruan terprogram)
RPC penulisan control-plane (
config.apply, config.patch, update.run) dibatasi lajunya hingga 3 permintaan per 60 detik per deviceId+clientIp. Saat dibatasi, RPC mengembalikan UNAVAILABLE dengan retryAfterMs.config.schema.lookup: periksa satu subtree config yang dicakup path dengan node skema dangkal, metadata petunjuk yang cocok, dan ringkasan child langsungconfig.get: ambil snapshot + hash saat iniconfig.patch: jalur pembaruan parsial yang disarankanconfig.apply: hanya untuk penggantian config penuhupdate.run: pembaruan mandiri + mulai ulang eksplisit
config.schema.lookup
lalu config.patch.
config.apply (ganti penuh)
config.apply (ganti penuh)
Memvalidasi + menulis seluruh config dan memulai ulang Gateway dalam satu langkah.Parameter:
raw(string) — payload JSON5 untuk seluruh configbaseHash(opsional) — hash config dariconfig.get(wajib saat config sudah ada)sessionKey(opsional) — session key untuk ping bangun pasca-mulai-ulangnote(opsional) — catatan untuk sentinel mulai ulangrestartDelayMs(opsional) — penundaan sebelum mulai ulang (default 2000)
config.patch (pembaruan parsial)
config.patch (pembaruan parsial)
Menggabungkan pembaruan parsial ke dalam config yang ada (semantik JSON merge patch):
- Object digabungkan secara rekursif
nullmenghapus key- Array menggantikan
raw(string) — JSON5 yang hanya berisi key yang diubahbaseHash(wajib) — hash config dariconfig.getsessionKey,note,restartDelayMs— sama seperticonfig.apply
config.apply: mulai ulang tertunda yang digabungkan plus cooldown 30 detik antar siklus mulai ulang.Environment variable
OpenClaw membaca env vars dari parent process ditambah:.envdari current working directory (jika ada)~/.openclaw/.env(fallback global)
Impor env shell (opsional)
Impor env shell (opsional)
Jika diaktifkan dan key yang diharapkan belum disetel, OpenClaw menjalankan login shell Anda dan hanya mengimpor key yang hilang:Padanan env var:
OPENCLAW_LOAD_SHELL_ENV=1Substitusi env var dalam nilai config
Substitusi env var dalam nilai config
Referensikan env vars dalam nilai string config mana pun dengan Aturan:
${VAR_NAME}:- Hanya nama huruf besar yang cocok:
[A-Z_][A-Z0-9_]* - Env var yang hilang/kosong memunculkan error saat waktu muat
- 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)
Untuk field yang mendukung object SecretRef, Anda dapat menggunakan:Detail SecretRef (termasuk
secrets.providers untuk env/file/exec) ada di Manajemen Secret.
Path kredensial yang didukung tercantum di Permukaan Kredensial SecretRef.Referensi lengkap
Untuk referensi lengkap per field, lihat Referensi Konfigurasi.Terkait: Contoh Konfigurasi · Referensi Konfigurasi · Doctor