Referensi Konfigurasi
Setiap bidang (field) yang tersedia di~/.openclaw/openclaw.json. Untuk ringkasan yang berorientasi pada tugas, lihat Konfigurasi.
Format konfigurasi adalah JSON5 (komentar + koma terakhir diperbolehkan). Semua bidang bersifat opsional — OpenClaw menggunakan default yang aman jika dikosongkan.
Channels (Saluran)
Setiap saluran dimulai secara otomatis ketika bagian konfigurasinya ada (kecualienabled: false).
Akses DM dan grup
Semua saluran mendukung kebijakan DM dan kebijakan grup:| Kebijakan DM | Perilaku |
|---|---|
pairing (default) | Pengirim yang tidak dikenal mendapatkan kode pairing sekali pakai; pemilik harus menyetujui |
allowlist | Hanya pengirim yang ada di allowFrom (atau penyimpanan allow yang sudah dipasangkan/paired) |
open | Izinkan semua DM masuk (memerlukan allowFrom: ["*"]) |
disabled | Abaikan semua DM masuk |
| Kebijakan Grup | Perilaku |
|---|---|
allowlist (default) | Hanya grup yang cocok dengan allowlist yang dikonfigurasi |
open | Melewati allowlist grup (penyaringan sebutan/mention-gating tetap berlaku) |
disabled | Blokir semua pesan grup/ruangan |
channels.defaults.groupPolicy menetapkan nilai default ketika groupPolicy penyedia tidak diatur.
Kode pairing akan kedaluwarsa setelah 1 jam. Permintaan pairing DM yang tertunda dibatasi hingga 3 per saluran.
Slack/Discord memiliki cadangan (fallback) khusus: jika bagian penyedianya hilang sama sekali, kebijakan grup saat runtime dapat diselesaikan menjadi open (dengan peringatan saat startup).Multi-akun WhatsApp
Multi-akun WhatsApp
- Perintah keluar (outbound) secara default menggunakan akun
defaultjika ada; jika tidak, menggunakan ID akun pertama yang dikonfigurasi (berdasarkan abjad). - Direktori autentikasi Baileys akun tunggal yang lama akan dimigrasikan oleh
openclaw doctorkewhatsapp/default. - Override per akun:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Bot token:
channels.telegram.botTokenatauchannels.telegram.tokenFile, denganTELEGRAM_BOT_TOKENsebagai cadangan (fallback) untuk akun default. configWrites: falsememblokir penulisan konfigurasi yang dimulai dari Telegram (migrasi ID supergroup,/config set|unset).- Pratinjau aliran (stream) Telegram menggunakan
sendMessage+editMessageText(berfungsi di obrolan langsung dan grup). - Kebijakan coba ulang (retry policy): lihat Kebijakan coba ulang.
Discord
- Token:
channels.discord.token, denganDISCORD_BOT_TOKENsebagai cadangan untuk akun default. - Gunakan
user:<id>(DM) atauchannel:<id>(guild channel) untuk target pengiriman; ID numerik saja akan ditolak. - Slug guild ditulis dengan huruf kecil dan spasi ganti dengan
-; kunci saluran menggunakan nama yang di-slug-kan (tanpa#). Lebih disarankan menggunakan ID guild. - Pesan yang ditulis oleh bot diabaikan secara default.
allowBots: truemengaktifkannya (pesan bot sendiri tetap difilter). maxLinesPerMessage(default 17) memisahkan pesan yang tinggi meskipun di bawah 2000 karakter.channels.discord.ui.components.accentColormenetapkan warna aksen untuk kontainer komponen Discord v2.
off (tidak ada), own (pesan bot, default), all (semua pesan), allowlist (dari guilds.<id>.users pada semua pesan).
Google Chat
- JSON service account: inline (
serviceAccount) atau berbasis file (serviceAccountFile). - Cadangan variabel lingkungan:
GOOGLE_CHAT_SERVICE_ACCOUNTatauGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Gunakan
spaces/<spaceId>atauusers/<userId|email>untuk target pengiriman.
Slack
- Mode Socket memerlukan
botTokendanappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENsebagai cadangan akun default). - Mode HTTP memerlukan
botTokenplussigningSecret(di tingkat root atau per akun). configWrites: falsememblokir penulisan konfigurasi yang dimulai dari Slack.- Gunakan
user:<id>(DM) atauchannel:<id>untuk target pengiriman.
off, own (default), all, allowlist (dari reactionAllowlist).
Isolasi sesi thread: thread.historyScope adalah per-thread (default) atau dibagikan di seluruh saluran (shared across channel). thread.inheritParent menyalin transkrip saluran induk ke thread baru.
| Grup Tindakan | Default | Catatan |
|---|---|---|
| reactions | diaktifkan | Bereaksi + daftar reaksi |
| messages | diaktifkan | Baca/kirim/edit/hapus |
| pins | diaktifkan | Sematkan/lepas sematan/perinci |
| memberInfo | diaktifkan | Informasi anggota |
| emojiList | diaktifkan | Daftar emoji kustom |
Mattermost
Mattermost dikirimkan sebagai plugin:openclaw plugins install @openclaw/mattermost.
oncall (respons saat disebutkan/@-mention, default), onmessage (setiap pesan), onchar (pesan yang dimulai dengan awalan pemicu).
Signal
off, own (default), all, allowlist (dari reactionAllowlist).
iMessage
OpenClaw meluncurkanimsg rpc (JSON-RPC melalui stdio). Tidak diperlukan daemon atau port.
- Memerlukan akses Full Disk Access ke DB Pesan (Messages DB).
- Lebih disarankan menggunakan target
chat_id:<id>. Gunakanimsg chats --limit 20untuk melihat daftar obrolan. cliPathdapat mengarah ke pembungkus (wrapper) SSH; aturremoteHost(hostatauuser@host) untuk pengambilan lampiran SCP.attachmentRootsdanremoteAttachmentRootsmembatasi jalur lampiran masuk (default:/Users/*/Library/Messages/Attachments).- SCP menggunakan pemeriksaan host-key yang ketat, jadi pastikan kunci relai host sudah ada di
~/.ssh/known_hosts.
Contoh wrapper SSH iMessage
Contoh wrapper SSH iMessage
Multi-akun (semua saluran)
Jalankan banyak akun per saluran (masing-masing denganaccountId sendiri):
defaultdigunakan ketikaaccountIddikosongkan (CLI + perutean).- Token variabel lingkungan hanya berlaku untuk akun default.
- Pengaturan saluran dasar berlaku untuk semua akun kecuali jika ditimpa (overridden) per akun.
- Gunakan
bindings[].match.accountIduntuk mengarahkan setiap akun ke agen yang berbeda.
Penyaringan sebutan (mention gating) obrolan grup
Pesan grup secara default memerlukan sebutan (sebutan metadata atau pola regex). Berlaku untuk obrolan grup WhatsApp, Telegram, Discord, Google Chat, dan iMessage. Tipe sebutan (mention):- Sebutan metadata: Sebutan asli platform @-mentions. Diabaikan dalam mode self-chat WhatsApp.
- Pola teks: Pola regex dalam
agents.list[].groupChat.mentionPatterns. Selalu diperiksa. - Penyaringan sebutan hanya ditegakkan ketika deteksi memungkinkan (sebutan asli atau setidaknya satu pola).
messages.groupChat.historyLimit menetapkan nilai default global. Saluran dapat menimpanya dengan channels.<channel>.historyLimit (atau per akun). Atur ke 0 untuk menonaktifkan.
Batas riwayat DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Mode self-chat
Masukkan nomor Anda sendiri dalamallowFrom untuk mengaktifkan mode self-chat (mengabaikan @-mention asli, hanya merespons pola teks):
Perintah (Chat command handling)
Detail perintah
Detail perintah
- Perintah teks harus berupa pesan mandiri dengan awalan
/. native: "auto"mengaktifkan perintah asli untuk Discord/Telegram, membiarkan Slack mati.- Override per saluran:
channels.discord.commands.native(boolean atau"auto").falsemenghapus perintah yang terdaftar sebelumnya. channels.telegram.customCommandsmenambahkan entri menu bot Telegram tambahan.bash: truemengaktifkan! <cmd>untuk host shell. Memerlukantools.elevated.enableddan pengirim berada ditools.elevated.allowFrom.<channel>.config: truemengaktifkan/config(membaca/menulisopenclaw.json).channels.<provider>.configWritesmembatasi mutasi konfigurasi per saluran (default: true).allowFromadalah per-penyedia. Jika diatur, ini menjadi satu-satunya sumber otorisasi (allowlist/pairing saluran danuseAccessGroupsakan diabaikan).useAccessGroups: falsememungkinkan perintah melewati kebijakan grup-akses (access-group) ketikaallowFromtidak diatur.
Agent defaults (Default agen)
agents.defaults.workspace
Default: ~/.openclaw/workspace.
agents.defaults.repoRoot
Opsional, root repositori yang ditampilkan pada baris Runtime di prompt sistem. Jika tidak diatur, OpenClaw akan mendeteksi secara otomatis dengan menelusuri folder ke atas dari workspace.
agents.defaults.skipBootstrap
Menonaktifkan pembuatan otomatis file bootstrap workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.bootstrapMaxChars
Jumlah karakter maksimum per file bootstrap workspace sebelum dipotong (truncation). Default: 20000.
agents.defaults.bootstrapTotalMaxChars
Total karakter maksimum yang dimasukkan di seluruh file bootstrap workspace. Default: 150000.
agents.defaults.imageMaxDimensionPx
Ukuran piksel maksimum untuk sisi terpanjang gambar dalam blok gambar transkrip/alat sebelum panggilan ke penyedia.
Default: 1200.
Nilai yang lebih rendah biasanya mengurangi penggunaan vision-token dan ukuran muatan permintaan untuk sesi yang memiliki banyak tangkapan layar.
Nilai yang lebih tinggi menjaga detail visual lebih baik.
agents.defaults.userTimezone
Zona waktu untuk konteks prompt sistem (bukan stempel waktu pesan). Menggunakan zona waktu host sebagai cadangan.
agents.defaults.timeFormat
Format waktu dalam prompt sistem. Default: auto (preferensi OS).
agents.defaults.model
model.primary: formatprovider/model(cth.anthropic/claude-opus-4-6). Jika Anda mengabaikan penyedia, OpenClaw mengasumsikananthropic(usang).models: katalog model yang dikonfigurasi dan allowlist untuk/model. Setiap entri dapat menyertakanalias(singkatan) danparams(khusus penyedia:temperature,maxTokens).imageModel: hanya digunakan jika model utama tidak mendukung input gambar.maxConcurrent: jumlah maksimum jalannya agen secara paralel di seluruh sesi (setiap sesi tetap diserialkan). Default: 1.
agents.defaults.models):
| Alias | Model |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-5 |
gpt | openai/gpt-5.2 |
gpt-mini | openai/gpt-5-mini |
gemini | google/gemini-3-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
--thinking off atau menentukan sendiri agents.defaults.models["zai/<model>"].params.thinking.
Model Z.AI mengaktifkan tool_stream secara default untuk streaming panggilan alat. Atur agents.defaults.models["zai/<model>"].params.tool_stream ke false untuk menonaktifkannya.
agents.defaults.cliBackends
Backend CLI opsional untuk jalannya teks saja (tanpa panggilan alat). Berguna sebagai cadangan ketika penyedia API gagal.
- Backend CLI mendahulukan teks; alat selalu dinonaktifkan.
- Sesi didukung ketika
sessionArgdiatur. - Terusan gambar (image pass-through) didukung ketika
imageArgmenerima jalur file.
agents.defaults.heartbeat
Jalannya heartbeat secara periodik.
every: string durasi (ms/s/m/h). Default:30m.suppressToolErrorWarnings: jika true, menyembunyikan payload peringatan kesalahan alat selama jalannya heartbeat.- Per-agen: atur
agents.list[].heartbeat. Ketika ada agen yang menentukanheartbeat, hanya agen tersebut yang menjalankan heartbeat. - Heartbeat menjalankan giliran agen penuh — interval yang lebih pendek menghabiskan lebih banyak token.
agents.defaults.compaction
mode:defaultatausafeguard(peringkasan terpotong-potong/chunked untuk riwayat yang panjang). Lihat Kompaksi.memoryFlush: giliran agen secara diam-diam (silent agentic turn) sebelum kompaksi otomatis untuk menyimpan memori yang tahan lama (durable memories). Dilewati (skipped) ketika workspace bersifat baca-saja.
agents.defaults.contextPruning
Memangkas hasil alat yang lama dari konteks dalam-memori sebelum dikirim ke LLM. Tidak memodifikasi riwayat sesi di disk.
Perilaku mode cache-ttl
Perilaku mode cache-ttl
mode: "cache-ttl"mengaktifkan pemangkasan (pruning passes).ttlmengontrol seberapa sering pemangkasan dapat dijalankan kembali (setelah sentuhan cache terakhir).- Pemangkasan melakukan pemangkasan halus (soft-trim) pada hasil alat yang terlalu besar terlebih dahulu, kemudian membersihkan secara tuntas (hard-clear) hasil alat yang lebih lama jika diperlukan.
... di tengah.Hard-clear mengganti seluruh hasil alat dengan placeholder.Catatan:- Blok gambar tidak pernah dipangkas/dibersihkan.
- Rasio didasarkan pada jumlah karakter (perkiraan), bukan jumlah token yang tepat.
- Jika terdapat kurang dari
keepLastAssistantspesan asisten, pemangkasan akan dilewati.
Block streaming (Streaming blok)
- Saluran non-Telegram memerlukan
*.blockStreaming: trueyang eksplisit untuk mengaktifkan balasan blok. - Override saluran:
channels.<channel>.blockStreamingCoalesce(dan varian per akun). Signal/Slack/Discord/Google Chat defaultnya adalahminChars: 1500. humanDelay: jeda acak di antara balasan blok.natural= 800–2500ms. Override per agen:agents.list[].humanDelay.
Indikator mengetik (Typing indicators)
- Default:
instantuntuk obrolan langsung/sebutan,messageuntuk obrolan grup yang tidak menyebutkan agen. - Override per sesi:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Opsional, Docker sandboxing untuk agen yang tertanam. Lihat Sandboxing untuk panduan lengkap.
Detail Sandbox
Detail Sandbox
Akses Workspace:
none: workspace sandbox per cakupan (per-scope) di bawah~/.openclaw/sandboxesro: workspace sandbox di/workspace, workspace agen di-mount baca-saja di/agentrw: workspace agen di-mount baca/tulis di/workspace
session: kontainer + workspace per sesiagent: satu kontainer + workspace per agen (default)shared: kontainer dan workspace bersama (tidak ada isolasi lintas-sesi)
setupCommand berjalan sekali setelah pembuatan kontainer (via sh -lc). Membutuhkan akses internet (network egress), root yang dapat ditulis, pengguna root.Kontainer defaultnya menggunakan network: "none" — atur ke "bridge" jika agen membutuhkan akses keluar.Lampiran masuk (Inbound attachments) diletakkan (staged) ke media/inbound/* di workspace aktif.docker.binds melakukan mount direktori host tambahan; bind global dan per-agen akan digabungkan.Browser sandbox (sandbox.browser.enabled): Chromium + CDP dalam kontainer. URL noVNC dimasukkan ke dalam prompt sistem. Tidak memerlukan browser.enabled di konfigurasi utama.allowHostControl: false(default) memblokir sesi sandbox agar tidak menargetkan browser host.sandbox.browser.bindsmelakukan mount direktori host tambahan hanya ke dalam kontainer browser sandbox. Jika diatur (termasuk[]), ini menggantikandocker.bindsuntuk kontainer browser.
agents.list (override per agen)
id: ID agen yang stabil (wajib).default: jika lebih dari satu yang diatur, yang pertama menang (peringatan akan dicatat). Jika tidak ada yang diatur, entri pertama adalah default.model: bentuk string hanya menimpaprimary; bentuk objek{ primary, fallbacks }menimpa keduanya ([]menonaktifkan cadangan global). Pekerjaan Cron yang hanya menimpaprimarytetap mewarisi cadangan default kecuali Anda mengaturfallbacks: [].identity.avatar: jalur relatif terhadap workspace, URLhttp(s), atau URIdata:.identitymenurunkan nilai default:ackReactiondariemoji,mentionPatternsdariname/emoji.subagents.allowAgents: allowlist ID agen untuksessions_spawn(["*"]= mana saja; default: hanya agen yang sama).
Multi-agent routing (Perutean multi-agen)
Menjalankan beberapa agen terisolasi di dalam satu Gateway. Lihat Multi-Agen.Bidang pencocokan binding (Binding match fields)
match.channel(wajib)match.accountId(opsional;*= semua akun; dikosongkan = akun default)match.peer(opsional;{ kind: direct|group|channel, id })match.guildId/match.teamId(opsional; khusus saluran)
match.peermatch.guildIdmatch.teamIdmatch.accountId(tepat, tanpa peer/guild/team)match.accountId: "*"(seluruh saluran)- Agen default
bindings pertama yang cocok akan menang.
Profil akses per agen
Akses penuh (tanpa sandbox)
Akses penuh (tanpa sandbox)
Alat baca-saja (read-only) + workspace
Alat baca-saja (read-only) + workspace
Tanpa akses sistem file (hanya pesan)
Tanpa akses sistem file (hanya pesan)
Session (Sesi)
Detail bidang Sesi
Detail bidang Sesi
dmScope: cara pengelompokan DM.main: semua DM berbagi sesi utama.per-peer: isolasi berdasarkan ID pengirim lintas saluran.per-channel-peer: isolasi per saluran + pengirim (disarankan untuk inbox multi-pengguna).per-account-channel-peer: isolasi per akun + saluran + pengirim (disarankan untuk multi-akun).
identityLinks: memetakan ID kanonik ke peer berawalan-penyedia untuk berbagi sesi lintas saluran.reset: kebijakan reset utama.dailymelakukan reset padaatHourwaktu lokal;idlemelakukan reset setelahidleMinutes. Jika keduanya dikonfigurasi, mana pun yang kedaluwarsa lebih dulu akan menang.resetByType: override per tipe (direct,group,thread). Nama lamadmditerima sebagai alias untukdirect.mainKey: bidang usang. Runtime sekarang selalu menggunakan"main"untuk bucket obrolan langsung utama.sendPolicy: pencocokan berdasarkanchannel,chatType(direct|group|channel, dengan alias lamadm),keyPrefix, ataurawKeyPrefix. Deny pertama akan menang.maintenance:warnmemperingatkan sesi aktif saat ada pengeluaran (eviction);enforcemenerapkan pemangkasan dan rotasi.
Messages (Pesan)
Response prefix (Awalan respons)
Override per saluran/akun:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Penyelesaian (Paling spesifik yang menang): akun → saluran → global. "" menonaktifkan dan menghentikan bertingkat (cascade). "auto" mengambil dari [{identity.name}].
Variabel template:
| Variabel | Deskripsi | Contoh |
|---|---|---|
{model} | Nama pendek model | claude-opus-4-6 |
{modelFull} | Identifikasi model lengkap | anthropic/claude-opus-4-6 |
{provider} | Nama penyedia (provider) | anthropic |
{thinkingLevel} | Tingkat berpikir saat ini | high, low, off |
{identity.name} | Nama identitas agen | (sama dengan "auto") |
{think} adalah alias untuk {thinkingLevel}.
Ack reaction (Reaksi pengakuan)
- Default ke
identity.emojiagen aktif, jika tidak ada maka"👀". Setel""untuk menonaktifkan. - Override per saluran:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Urutan penyelesaian: akun → saluran →
messages.ackReaction→ cadangan identitas. - Cakupan (Scope):
group-mentions(default),group-all,direct,all. removeAckAfterReply: menghapus reaksi ack setelah membalas (khusus Slack/Discord/Telegram/Google Chat).
Inbound debounce (Batasan masuk)
Mengelompokkan pesan teks saja yang cepat dari pengirim yang sama ke dalam satu giliran agen. Media/lampiran akan dikirimkan segera. Perintah kontrol mengabaikan batasan (debouncing).TTS (text-to-speech)
automengontrol auto-TTS./tts off|always|inbound|taggedmenimpa per sesi.summaryModelmenimpaagents.defaults.model.primaryuntuk auto-summary.- Kunci API menggunakan cadangan
ELEVENLABS_API_KEY/XI_API_KEYdanOPENAI_API_KEY.
Talk
Default untuk mode Talk (macOS/iOS/Android).- ID Suara menggunakan cadangan
ELEVENLABS_VOICE_IDatauSAG_VOICE_ID. apiKeymenggunakan cadanganELEVENLABS_API_KEY.voiceAliasesmemungkinkan arahan Talk menggunakan nama yang lebih ramah.
Tools (Alat)
Tool profiles (Profil alat)
tools.profile menetapkan allowlist dasar sebelum tools.allow/tools.deny:
| Profil | Termasuk |
|---|---|
minimal | hanya session_status |
coding | group:fs, group:runtime, group:sessions, group:memory, image |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Tidak ada batasan (sama seperti tidak diatur) |
Tool groups (Grup alat)
| Grup | Alat |
|---|---|
group:runtime | exec, process (bash diterima sebagai alias untuk exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:openclaw | Semua alat bawaan (tidak termasuk plugin penyedia) |
tools.allow / tools.deny
Kebijakan global izinkan/tolak alat (tolak menang). Tidak peka huruf besar-kecil, mendukung wildcard *. Diterapkan bahkan ketika Docker sandbox dimatikan.
tools.byProvider
Membatasi alat lebih lanjut untuk penyedia atau model tertentu. Urutan: profil dasar → profil penyedia → izinkan/tolak.
tools.elevated
Mengontrol akses jalan host yang ditingkatkan (elevated):
- Override per agen (
agents.list[].tools.elevated) hanya dapat membatasi lebih lanjut. /elevated on|off|ask|fullmenyimpan status per sesi; arahan inline berlaku untuk satu pesan saja.execyang ditingkatkan berjalan di host, melewati sandboxing.
tools.exec
tools.loopDetection (Deteksi loop)
Pemeriksaan keamanan loop-alat dinonaktifkan secara default. Atur enabled: true untuk mengaktifkan deteksi.
Pengaturan dapat ditentukan secara global di tools.loopDetection dan ditimpa per agen di agents.list[].tools.loopDetection.
historySize: riwayat panggilan alat maksimum yang disimpan untuk analisis loop.warningThreshold: ambang batas pola pengulangan tanpa-kemajuan untuk peringatan.criticalThreshold: ambang batas pengulangan yang lebih tinggi untuk memblokir loop kritis.globalCircuitBreakerThreshold: ambang batas penghentian keras untuk semua jalan tanpa-kemajuan.detectors.genericRepeat: peringatan pada panggilan alat yang sama/argumen yang sama berulang kali.detectors.knownPollNoProgress: peringatan/blokir pada alat jajak (poll) yang dikenal (process.poll,command_status, dst.).detectors.pingPong: peringatan/blokir pada pola pasangan tanpa-kemajuan yang bergantian.- Jika
warningThreshold >= criticalThresholdataucriticalThreshold >= globalCircuitBreakerThreshold, validasi gagal.
tools.web
tools.media
Konfigurasi pemahaman media masuk (gambar/audio/video):
Bidang entri model media
Bidang entri model media
Entri Provider (
type: "provider" atau dikosongkan):provider: ID penyedia API (openai,anthropic,google/gemini,groq, dst.)model: override ID modelprofile/preferredProfile: pemilihan profil autentikasi
type: "cli"):command: executable yang akan dijalankanargs: argumen dengan template (mendukung{{MediaPath}},{{Prompt}},{{MaxChars}}, dst.)
capabilities: daftar opsional (image,audio,video). Default:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: override per entri.- Kegagalan akan beralih (fallback) ke entri berikutnya.
models.providers.*.apiKey.tools.agentToAgent
tools.sessions
Mengontrol sesi mana yang dapat ditargetkan oleh alat sesi (sessions_list, sessions_history, sessions_send).
Default: tree (sesi saat ini + sesi yang dihasilkan darinya, seperti sub-agen).
self: hanya kunci sesi saat ini.tree: sesi saat ini + sesi yang dihasilkan oleh sesi saat ini (sub-agen).agent: sesi apa pun yang dimiliki oleh ID agen saat ini (dapat mencakup pengguna lain jika Anda menjalankan sesi per-pengirim di bawah ID agen yang sama).all: sesi apa pun. Penargetan lintas-agen tetap memerlukantools.agentToAgent.- Sandbox clamp: ketika sesi saat ini di-sandbox dan
agents.defaults.sandbox.sessionToolsVisibility="spawned", visibilitas dipaksa ketreemeskipuntools.sessions.visibility="all".
tools.subagents
model: model default untuk sub-agen yang dihasilkan. Jika dikosongkan, sub-agen mewarisi model pemanggil.- Kebijakan alat per sub-agen:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Custom providers and base URLs (Penyedia kustom dan URL dasar)
OpenClaw menggunakan katalog model pi-coding-agent. Tambahkan penyedia kustom melaluimodels.providers di konfigurasi atau ~/.openclaw/agents/<agentId>/agent/models.json.
- Gunakan
authHeader: true+headersuntuk kebutuhan autentikasi kustom. - Override root konfigurasi agen dengan
OPENCLAW_AGENT_DIR(atauPI_CODING_AGENT_DIR).
Contoh penyedia
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 untuk Cerebras; zai/glm-4.7 untuk akses langsung Z.AI.OpenCode Zen
OpenCode Zen
OPENCODE_API_KEY (atau OPENCODE_ZEN_API_KEY). Singkatan: openclaw onboard --auth-choice opencode-zen.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* dan z-ai/* adalah alias yang diterima. Singkatan: openclaw onboard --auth-choice zai-api-key.- Endpoint umum:
https://api.z.ai/api/paas/v4 - Endpoint koding (default):
https://api.z.ai/api/coding/paas/v4 - Untuk endpoint umum, tentukan penyedia kustom dengan override URL dasar.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" atau openclaw onboard --auth-choice moonshot-api-key-cn.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (kompatibel dengan Anthropic)
Synthetic (kompatibel dengan Anthropic)
/v1 (klien Anthropic akan menambahkannya sendiri). Singkatan: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.1 (langsung)
MiniMax M2.1 (langsung)
MINIMAX_API_KEY. Singkatan: openclaw onboard --auth-choice minimax-api.Model lokal (LM Studio)
Model lokal (LM Studio)
Lihat Model Lokal. Intinya: jalankan MiniMax M2.1 melalui LM Studio Responses API pada perangkat keras yang mumpuni; tetap gunakan model berbayar (hosted) sebagai cadangan (fallback).
Skills (Keahlian)
allowBundled: allowlist opsional hanya untuk keahlian bawaan (keahlian managed/workspace tidak terpengaruh).entries.<skillKey>.enabled: falsemenonaktifkan keahlian meskipun disertakan/diinstal.entries.<skillKey>.apiKey: kemudahan untuk keahlian yang mendeklarasikan variabel lingkungan utama.
Plugins
- Dimuat dari
~/.openclaw/extensions,<workspace>/.openclaw/extensions, ditambahplugins.load.paths. - Perubahan konfigurasi memerlukan restart gateway.
allow: allowlist opsional (hanya plugin yang terdaftar yang akan dimuat).denyakan menang.
Browser
evaluateEnabled: falsemenonaktifkanact:evaluatedanwait --fn.- Profil jarak jauh (remote profiles) adalah attach-only (start/stop/reset dinonaktifkan).
- Urutan deteksi otomatis: browser default jika berbasis Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Layanan kontrol: hanya loopback (port diturunkan dari
gateway.port, default18791).
UI
seamColor: warna aksen untuk UI platform asli (tint gelembung Mode Talk, dst.).assistant: override identitas UI Kontrol. Cadangan mengikuti identitas agen aktif.
Gateway
Detail bidang Gateway
Detail bidang Gateway
mode:local(jalankan gateway) atauremote(hubungkan ke gateway jarak jauh). Gateway menolak untuk dimulai kecualilocal.port: port multiplexing tunggal untuk WS + HTTP. Prioritas:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(default),lan(0.0.0.0),tailnet(hanya IP Tailscale), ataucustom.- Autentikasi: wajib secara default. Bind non-loopback memerlukan token/kata sandi bersama. Wizard onboarding menghasilkan token secara default.
auth.mode: "none": mode tanpa autentikasi eksplisit. Hanya gunakan untuk pengaturan loopback lokal yang tepercaya; ini sengaja tidak ditawarkan oleh prompt onboarding.auth.mode: "trusted-proxy": menyerahkan autentikasi ke reverse proxy yang sadar-identitas dan mempercayai header identitas darigateway.trustedProxies(lihat Trusted Proxy Auth).auth.allowTailscale: ketikatrue, header identitas Tailscale Serve memenuhi syarat autentikasi (diverifikasi viatailscale whois). Defaultnya adalahtrueketikatailscale.mode = "serve".auth.rateLimit: pembatas autentikasi-gagal opsional. Berlaku per IP klien dan per cakupan autentikasi (secret-bersama dan token-perangkat dilacak secara independen). Upaya yang diblokir mengembalikan429+Retry-After.auth.rateLimit.exemptLoopbackdefaultnya adalahtrue; aturfalsejika Anda sengaja ingin lalu lintas localhost juga dibatasi kecepatannya (untuk pengaturan pengujian atau penerapan proksi yang ketat).
tailscale.mode:serve(hanya tailnet, bind loopback) ataufunnel(publik, memerlukan autentikasi).remote.transport:ssh(default) ataudirect(ws/wss). Untukdirect,remote.urlharusws://atauwss://.gateway.remote.tokenadalah hanya untuk panggilan CLI jarak jauh; tidak mengaktifkan autentikasi gateway lokal.trustedProxies: IP reverse proxy yang mengakhiri (terminate) TLS. Hanya cantumkan proksi yang Anda kontrol.gateway.tools.deny: nama alat tambahan yang diblokir untuk HTTPPOST /tools/invoke(memperluas daftar penolakan default).gateway.tools.allow: menghapus nama alat dari daftar penolakan HTTP default.
Endpoint yang kompatibel dengan OpenAI
- Chat Completions: dinonaktifkan secara default. Aktifkan dengan
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Pengerasan input URL Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlist
Isolasi multi-instance (Multiple Gateways)
Jalankan beberapa gateway pada satu host dengan port dan direktori status yang unik:--dev (menggunakan ~/.openclaw-dev + port 19001), --profile <nama> (menggunakan ~/.openclaw-<nama>).
Lihat Multiple Gateways.
Hooks (Kait)
Authorization: Bearer <token> atau x-openclaw-token: <token>.
Endpoint:
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeydari muatan permintaan hanya diterima jikahooks.allowRequestSessionKey=true(default:false).
POST /hooks/<name>→ diselesaikan melaluihooks.mappings
Detail Pemetaan
Detail Pemetaan
match.pathmencocokkan sub-jalur setelah/hooks(cth./hooks/gmail→gmail).match.sourcemencocokkan bidang muatan untuk jalur generik.- Template seperti
{{messages[0].subject}}membaca dari muatan (payload). transformdapat mengarah ke modul JS/TS yang mengembalikan tindakan hook.transform.moduleharus berupa jalur relatif dan tetap berada di dalamhooks.transformsDir(jalur absolut dan traversal ditolak).agentIdmengarahkan ke agen tertentu; ID yang tidak dikenal akan dialihkan ke default.allowedAgentIds: membatasi perutean eksplisit (*atau dikosongkan = izinkan semua,[]= tolak semua).defaultSessionKey: kunci sesi tetap opsional untuk eksekusi agen hook tanpasessionKeyeksplisit.allowRequestSessionKey: mengizinkan pemanggil/hooks/agentuntuk mengatursessionKey(default:false).allowedSessionKeyPrefixes: allowlist awalan opsional untuk nilaisessionKeyeksplisit (permintaan + pemetaan), cth.["hook:"].deliver: truemengirimkan balasan akhir ke saluran;channeldefaultnya adalahlast.modelmenimpa LLM untuk jalan hook ini (harus diizinkan jika katalog model diatur).
Integrasi Gmail
- Gateway secara otomatis memulai
gog gmail watch servesaat booting jika dikonfigurasi. AturOPENCLAW_SKIP_GMAIL_WATCHER=1untuk menonaktifkan. - Jangan jalankan
gog gmail watch servesecara terpisah bersamaan dengan Gateway.
Host Canvas
- Melayani HTML/CSS/JS yang dapat diedit agen dan A2UI melalui HTTP di bawah port Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Khusus lokal (Local-only): pertahankan
gateway.bind: "loopback"(default). - Bind non-loopback: rute kanvas memerlukan autentikasi Gateway (token/kata sandi/trusted-proxy), sama seperti HTTP surface Gateway lainnya.
- Node WebViews biasanya tidak mengirim header autentikasi; setelah node dipasangkan dan terhubung, Gateway mengiklankan URL kemampuan cakupan-node (node-scoped capability URLs) untuk akses kanvas/A2UI.
- URL kemampuan terikat pada sesi WS node aktif dan cepat kedaluwarsa. Cadangan berbasis IP tidak digunakan.
- Memasukkan klien live-reload ke dalam HTML yang dilayani.
- Secara otomatis membuat starter
index.htmljika kosong. - Juga melayani A2UI di
/__openclaw__/a2ui/. - Perubahan memerlukan restart gateway.
- Nonaktifkan live reload untuk direktori besar atau kesalahan
EMFILE.
Discovery (Penemuan)
mDNS (Bonjour)
minimal(default): menghilangkancliPath+sshPortdari rekaman TXT.full: menyertakancliPath+sshPort.- Hostname defaultnya adalah
openclaw. Timpa denganOPENCLAW_MDNS_HOSTNAME.
Area luas (Wide-area / DNS-SD)
~/.openclaw/dns/. Untuk penemuan lintas jaringan, pasangkan dengan server DNS (disarankan CoreDNS) + Tailscale split DNS.
Pengaturan: openclaw dns setup --apply.
Environment (Lingkungan)
env (variabel lingkungan inline)
- Variabel lingkungan inline hanya diterapkan jika variabel lingkungan proses tidak memiliki kunci tersebut.
- File
.env: CWD.env+~/.openclaw/.env(keduanya tidak menimpa variabel yang ada). shellEnv: mengimpor kunci yang hilang yang diharapkan dari profil login shell Anda.- Lihat Environment untuk urutan prioritas selengkapnya.
Substitusi variabel lingkungan
Gunakan referensi variabel lingkungan di string konfigurasi mana pun dengan${VAR_NAME}:
- Hanya nama huruf besar yang dicocokkan:
[A-Z_][A-Z0-9_]*. - Variabel yang hilang/kosong akan memicu kesalahan saat pemuatan konfigurasi.
- Gunakan
$${VAR}untuk karakter literal${VAR}. - Berfungsi dengan
$include.
Penyimpanan autentikasi (Auth storage)
- Profil autentikasi per-agen disimpan di
<agentDir>/auth-profiles.json. - Impor OAuth lama dari
~/.openclaw/credentials/oauth.json. - Lihat OAuth.
Logging (Pencatatan)
- File log default:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Atur
logging.fileuntuk jalur yang stabil. consoleLevelmeningkat kedebugsaat menggunakan--verbose.
Wizard
Metadata yang ditulis oleh wizard CLI (onboard, configure, doctor):
Identity (Identitas)
messages.ackReactiondariidentity.emoji(cadangan ke 👀)mentionPatternsdariidentity.name/identity.emojiavatarmenerima: jalur relatif terhadap workspace, URLhttp(s), atau URIdata:
Bridge (Usang, dihapus)
Build saat ini tidak lagi menyertakan bridge TCP. Node terhubung melalui WebSocket Gateway. Kuncibridge.* bukan lagi bagian dari skema konfigurasi (validasi gagal hingga dihapus; openclaw doctor --fix dapat menghapus kunci yang tidak dikenal).
Konfigurasi Bridge lama (referensi sejarah)
Konfigurasi Bridge lama (referensi sejarah)
Cron
sessionRetention: berapa lama sesi cron yang sudah selesai disimpan sebelum dipangkas. Default:24h.webhookToken: bearer token yang digunakan untuk pengiriman POST webhook cron (delivery.mode = "webhook"), jika dikosongkan tidak ada header autentikasi yang dikirim.webhook: URL webhook cadangan lama yang usang (http/https) hanya digunakan untuk pekerjaan tersimpan yang masih memilikinotify: true.
Variabel template model media
Placeholder template yang dikembangkan ditools.media.*.models[].args:
| Variabel | Deskripsi |
|---|---|
{{Body}} | Isi pesan masuk lengkap |
{{ContentType}} | Tipe MIME lampiran |
{{MediaPath}} | Jalur lokal ke file media |
{{Prompt}} | Prompt pemrosesan (jika ada) |
{{MaxChars}} | Batas karakter untuk model teks |
{{MaxBytes}} | Batas ukuran file dalam byte |
{{TimeoutMs}} | Batas waktu eksekusi dalam milidetik |
{{Language}} | Kode bahasa target (cth. id, en) |
{{Format}} | Format keluaran yang diminta (cth. json, raw) |
{{BaseName}} | Nama file tanpa ekstensi |
{{Extension}} | Ekstensi file dengan titik |
{{MediaDir}} | Direktori yang berisi file media |
{{ChatType}} | Tipe obrolan (direct, group, dst.) |
{{PeerId}} | ID unik pengirim/obrolan lintas saluran |
{{AccountId}} | ID akun saluran |
{{Channel}} | Nama saluran (whatsapp, telegram, dst.) |
{{AgentId}} | ID agen yang memproses |
{{SessionKey}} | Kunci sesi aktif |