Referensi konfigurasi inti untukDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. Untuk ikhtisar berorientasi tugas, lihat Konfigurasi.
Mencakup permukaan konfigurasi utama OpenClaw dan menautkan keluar ketika suatu subsistem memiliki referensi yang lebih mendalam. Katalog perintah milik kanal dan plugin serta knob memori/QMD mendalam berada di halaman masing-masing, bukan di halaman ini.
Kebenaran kode:
openclaw config schemamencetak JSON Schema aktif yang digunakan untuk validasi dan Control UI, dengan metadata bundled/plugin/kanal digabungkan saat tersediaconfig.schema.lookupmengembalikan satu node skema yang dibatasi path untuk alat drill-downpnpm config:docs:check/pnpm config:docs:genmemvalidasi hash baseline dokumentasi konfigurasi terhadap permukaan skema saat ini
gateway config.schema.lookup untuk
dokumentasi dan batasan tingkat field yang tepat sebelum pengeditan. Gunakan
Konfigurasi untuk panduan berorientasi tugas dan halaman ini
untuk peta field yang lebih luas, default, dan tautan ke referensi subsistem.
Referensi mendalam khusus:
- Referensi konfigurasi memori untuk
agents.defaults.memorySearch.*,memory.qmd.*,memory.citations, dan konfigurasi dreaming di bawahplugins.entries.memory-core.config.dreaming - Perintah slash untuk katalog perintah bawaan + bundled saat ini
- halaman kanal/plugin pemilik untuk permukaan perintah khusus kanal
Kanal
Kunci konfigurasi per kanal dipindahkan ke halaman khusus - lihat Konfigurasi - kanal untukchannels.*,
termasuk Slack, Discord, Telegram, WhatsApp, Matrix, iMessage, dan kanal
bundled lainnya (auth, kontrol akses, multi-akun, mention gating).
Default agen, multi-agen, sesi, dan pesan
Dipindahkan ke halaman khusus - lihat Konfigurasi - agen untuk:agents.defaults.*(workspace, model, thinking, heartbeat, memori, media, skills, sandbox)multiAgent.*(routing dan binding multi-agen)session.*(siklus hidup sesi, compaction, pruning)messages.*(pengiriman pesan, TTS, rendering markdown)talk.*(mode Talk)talk.consultThinkingLevel: override tingkat thinking untuk seluruh run agen OpenClaw di balik konsultasi realtime Control UI Talktalk.consultFastMode: override fast-mode sekali pakai untuk konsultasi realtime Control UI Talktalk.speechLocale: id locale BCP 47 opsional untuk pengenalan ucapan Talk di iOS/macOStalk.silenceTimeoutMs: saat tidak disetel, Talk mempertahankan jendela jeda default platform sebelum mengirim transkrip (700 ms on macOS and Android, 900 ms on iOS)
Alat dan penyedia kustom
Kebijakan alat, toggle eksperimental, konfigurasi alat berbasis penyedia, dan penyiapan penyedia kustom / base-URL dipindahkan ke halaman khusus - lihat Konfigurasi - alat dan penyedia kustom.Model
Definisi penyedia, allowlist model, dan penyiapan penyedia kustom berada di Konfigurasi - alat dan penyedia kustom. Rootmodels juga memiliki perilaku katalog model global.
models.mode: perilaku katalog penyedia (mergeataureplace).models.providers: peta penyedia kustom yang dikunci berdasarkan id penyedia.models.providers.*.localService: manajer proses sesuai permintaan opsional untuk server model lokal. OpenClaw memeriksa endpoint kesehatan yang dikonfigurasi, memulaicommandabsolut saat diperlukan, menunggu kesiapan, lalu mengirim permintaan model. Lihat Layanan model lokal.models.pricing.enabled: mengontrol bootstrap pricing latar belakang yang dimulai setelah sidecar dan kanal mencapai path Gateway siap. Saatfalse, Gateway melewati fetch katalog pricing OpenRouter dan LiteLLM; nilaimodels.providers.*.models[].costyang dikonfigurasi tetap berfungsi untuk estimasi biaya lokal.
MCP
Definisi server MCP yang dikelola OpenClaw berada di bawahmcp.servers dan
dikonsumsi oleh Pi tertanam serta adaptor runtime lainnya. Perintah openclaw mcp list,
show, set, dan unset mengelola blok ini tanpa terhubung ke
server target selama pengeditan konfigurasi.
mcp.servers: definisi server MCP stdio atau jarak jauh bernama untuk runtime yang mengekspos alat MCP yang dikonfigurasi. Entri jarak jauh menggunakantransport: "streamable-http"atautransport: "sse";type: "http"adalah alias native CLI yang dinormalisasi olehopenclaw mcp setdanopenclaw doctor --fixke fieldtransportkanonis.mcp.sessionIdleTtlMs: TTL idle untuk runtime MCP bundled yang dibatasi sesi. Run tertanam sekali pakai meminta pembersihan akhir run; TTL ini adalah penopang untuk sesi berumur panjang dan pemanggil masa depan.- Perubahan di bawah
mcp.*diterapkan panas dengan membuang runtime MCP sesi yang di-cache. Penemuan/penggunaan alat berikutnya membuatnya ulang dari konfigurasi baru, sehingga entrimcp.serversyang dihapus dipanen segera alih-alih menunggu TTL idle.
Skills
allowBundled: allowlist opsional hanya untuk Skills bundled (Skills terkelola/workspace tidak terpengaruh).load.extraDirs: root skill bersama tambahan (presedensi terendah).load.allowSymlinkTargets: root target nyata tepercaya yang dapat menjadi tujuan resolusi symlink skill ketika link berada di luar root sumber yang dikonfigurasi.install.preferBrew: saat true, pilih installer Homebrew ketikabrewtersedia sebelum fallback ke jenis installer lain.install.nodeManager: preferensi installer node untuk spesifikasimetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: izinkan klien Gatewayoperator.admintepercaya menginstal arsip zip privat yang disiapkan melaluiskills.upload.*(default: false). Ini hanya mengaktifkan path arsip terunggah; instalasi ClawHub normal tidak memerlukannya.entries.<skillKey>.enabled: falsemenonaktifkan skill meskipun bundled/terinstal.entries.<skillKey>.apiKey: kemudahan untuk Skills yang mendeklarasikan env var utama (string plaintext atau objek SecretRef).
Plugin
- Dimuat dari
~/.openclaw/extensions,<workspace>/.openclaw/extensions, ditambahplugins.load.paths. - Discovery menerima plugin native OpenClaw serta bundle Codex dan bundle Claude yang kompatibel, termasuk bundle layout default Claude tanpa manifest.
- Perubahan konfigurasi memerlukan restart gateway.
allow: allowlist opsional (hanya plugin yang terdaftar dimuat).denymenang.bundledDiscovery: default ke"allowlist"untuk konfigurasi baru, sehinggaplugins.allowyang tidak kosong juga membatasi plugin penyedia bundled, termasuk penyedia runtime web-search. Doctor menulis"compat"untuk konfigurasi allowlist legacy yang dimigrasikan untuk mempertahankan perilaku penyedia bundled yang ada sampai Anda ikut serta.plugins.entries.<id>.apiKey: field kemudahan kunci API tingkat plugin (ketika didukung oleh plugin).plugins.entries.<id>.env: peta env var yang dibatasi plugin.plugins.entries.<id>.hooks.allowPromptInjection: saatfalse, core memblokirbefore_prompt_builddan mengabaikan field yang mengubah prompt daribefore_agent_startlegacy, sambil mempertahankanmodelOverridedanproviderOverridelegacy. Berlaku untuk hook plugin native dan direktori hook yang disediakan bundle dan didukung.plugins.entries.<id>.hooks.allowConversationAccess: saattrue, plugin non-bundled tepercaya dapat membaca konten percakapan mentah dari hook bertipe sepertillm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalize, danagent_end.plugins.entries.<id>.subagent.allowModelOverride: secara eksplisit mempercayai plugin ini untuk meminta overrideproviderdanmodelper run untuk run subagen latar belakang.plugins.entries.<id>.subagent.allowedModels: allowlist opsional targetprovider/modelkanonis untuk override subagen tepercaya. Gunakan"*"hanya saat Anda sengaja ingin mengizinkan model apa pun.plugins.entries.<id>.llm.allowModelOverride: secara eksplisit mempercayai plugin ini untuk meminta override model bagiapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: allowlist opsional targetprovider/modelkanonis untuk override completion LLM plugin tepercaya. Gunakan"*"hanya saat Anda sengaja ingin mengizinkan model apa pun.plugins.entries.<id>.llm.allowAgentIdOverride: secara eksplisit mempercayai plugin ini untuk menjalankanapi.runtime.llm.completeterhadap id agen non-default.plugins.entries.<id>.config: objek konfigurasi yang didefinisikan plugin (divalidasi oleh skema plugin native OpenClaw saat tersedia).- Pengaturan akun/runtime plugin kanal berada di bawah
channels.<id>dan harus dijelaskan oleh metadatachannelConfigsmanifest plugin pemiliknya, bukan oleh registry opsi OpenClaw pusat.
Konfigurasi plugin Codex harness
Plugincodex bundled memiliki pengaturan harness app-server native Codex di bawah
plugins.entries.codex.config. Lihat
Referensi Codex harness untuk seluruh permukaan
konfigurasi dan Codex harness untuk model runtime.
codexPlugins hanya berlaku untuk sesi yang memilih native Codex harness.
Ini tidak mengaktifkan plugin Codex untuk Pi, run penyedia OpenAI normal, binding
percakapan ACP, atau harness non-Codex apa pun.
plugins.entries.codex.config.codexPlugins.enabled: mengaktifkan dukungan plugin/aplikasi Codex native untuk harness Codex. Default:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: kebijakan default tindakan destruktif untuk elisitasi aplikasi plugin yang dimigrasikan. Default:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: mengaktifkan entri plugin yang dimigrasikan saatcodexPlugins.enabledglobal juga bernilai true. Default:trueuntuk entri eksplisit.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: identitas marketplace yang stabil. V1 hanya mendukung"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: identitas plugin Codex stabil dari migrasi, misalnya"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: override tindakan destruktif per plugin. Jika dihilangkan, nilaiallow_destructive_actionsglobal digunakan.
codexPlugins.enabled adalah direktif pengaktifan global. Entri plugin eksplisit
yang ditulis oleh migrasi adalah set kelayakan instalasi dan perbaikan yang tahan lama.
plugins["*"] tidak didukung, tidak ada sakelar install, dan nilai
marketplacePath lokal sengaja tidak menjadi bidang konfigurasi karena bersifat
spesifik host.
Pemeriksaan kesiapan app/list di-cache selama satu jam dan disegarkan
secara asinkron saat basi. Konfigurasi aplikasi thread Codex dihitung saat
sesi harness Codex dibuat, bukan pada setiap giliran; gunakan /new, /reset, atau restart
gateway setelah mengubah konfigurasi plugin native.
plugins.entries.firecrawl.config.webFetch: pengaturan penyedia web-fetch Firecrawl.apiKey: kunci API Firecrawl (menerima SecretRef). Beralih keplugins.entries.firecrawl.config.webSearch.apiKey,tools.web.fetch.firecrawl.apiKeylama, atau variabel envFIRECRAWL_API_KEY.baseUrl: URL dasar API Firecrawl (default:https://api.firecrawl.dev; override self-hosted harus menargetkan endpoint privat/internal).onlyMainContent: ekstrak hanya konten utama dari halaman (default:true).maxAgeMs: usia cache maksimum dalam milidetik (default:172800000/ 2 hari).timeoutSeconds: timeout permintaan scrape dalam detik (default:60).
plugins.entries.xai.config.xSearch: pengaturan xAI X Search (pencarian web Grok).enabled: aktifkan penyedia X Search.model: model Grok yang digunakan untuk pencarian (misalnya"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: pengaturan memory dreaming. Lihat Dreaming untuk fase dan ambang batas.enabled: sakelar utama dreaming (defaultfalse).frequency: cadence cron untuk setiap sweep dreaming penuh ("0 3 * * *"secara default).model: override model subagen Dream Diary opsional. Memerlukanplugins.entries.memory-core.subagent.allowModelOverride: true; pasangkan denganallowedModelsuntuk membatasi target. Error model tidak tersedia dicoba ulang satu kali dengan model default sesi; kegagalan trust atau allowlist tidak melakukan fallback diam-diam.- kebijakan fase dan ambang batas adalah detail implementasi (bukan kunci konfigurasi yang terlihat pengguna).
- Konfigurasi memori lengkap ada di Referensi konfigurasi memori:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Plugin bundle Claude yang diaktifkan juga dapat menyumbangkan default Pi tertanam dari
settings.json; OpenClaw menerapkannya sebagai pengaturan agen yang disanitasi, bukan sebagai patch konfigurasi OpenClaw mentah. plugins.slots.memory: pilih id plugin memori aktif, atau"none"untuk menonaktifkan plugin memori.plugins.slots.contextEngine: pilih id plugin mesin konteks aktif; default ke"legacy"kecuali Anda menginstal dan memilih mesin lain.
Komitmen
commitments mengontrol memori tindak lanjut yang diinferensi: OpenClaw dapat mendeteksi check-in dari giliran percakapan dan mengirimkannya melalui run Heartbeat.
commitments.enabled: aktifkan ekstraksi LLM tersembunyi, penyimpanan, dan pengiriman Heartbeat untuk komitmen tindak lanjut yang diinferensi. Default:false.commitments.maxPerDay: jumlah maksimum komitmen tindak lanjut yang diinferensi yang dikirim per sesi agen dalam satu hari bergulir. Default:3.
Browser
evaluateEnabled: falsemenonaktifkanact:evaluatedanwait --fn.tabCleanupmengambil kembali tab agen primer yang dilacak setelah waktu idle atau saat sesi melebihi batasnya. AturidleMinutes: 0ataumaxTabsPerSession: 0untuk menonaktifkan mode pembersihan individual tersebut.ssrfPolicy.dangerouslyAllowPrivateNetworkdinonaktifkan saat tidak diatur, sehingga navigasi browser tetap ketat secara default.- Atur
ssrfPolicy.dangerouslyAllowPrivateNetwork: truehanya saat Anda secara sengaja mempercayai navigasi browser jaringan privat. - Dalam mode ketat, endpoint profil CDP jarak jauh (
profiles.*.cdpUrl) tunduk pada pemblokiran jaringan privat yang sama selama pemeriksaan keterjangkauan/penemuan. ssrfPolicy.allowPrivateNetworktetap didukung sebagai alias lama.- Dalam mode ketat, gunakan
ssrfPolicy.hostnameAllowlistdanssrfPolicy.allowedHostnamesuntuk pengecualian eksplisit. - Profil jarak jauh bersifat attach-only (start/stop/reset dinonaktifkan).
profiles.*.cdpUrlmenerimahttp://,https://,ws://, danwss://. Gunakan HTTP(S) saat Anda ingin OpenClaw menemukan/json/version; gunakan WS(S) saat penyedia Anda memberi Anda URL DevTools WebSocket langsung.remoteCdpTimeoutMsdanremoteCdpHandshakeTimeoutMsberlaku untuk keterjangkauan CDP jarak jauh danattachOnlyplus permintaan pembukaan tab. Profil loopback terkelola mempertahankan default CDP lokal.- Jika layanan CDP yang dikelola secara eksternal dapat dijangkau melalui loopback, atur
attachOnly: truepada profil tersebut; jika tidak, OpenClaw memperlakukan port loopback sebagai profil browser terkelola lokal dan dapat melaporkan error kepemilikan port lokal. - Profil
existing-sessionmenggunakan Chrome MCP alih-alih CDP dan dapat melakukan attach pada host yang dipilih atau melalui node browser yang terhubung. - Profil
existing-sessiondapat mengaturuserDataDiruntuk menargetkan profil browser berbasis Chromium tertentu seperti Brave atau Edge. - Profil
existing-sessionmempertahankan batas rute Chrome MCP saat ini: tindakan berbasis snapshot/ref alih-alih penargetan CSS-selector, hook unggah satu file, tanpa override timeout dialog, tanpawait --load networkidle, dan tanparesponsebody, ekspor PDF, intersepsi unduhan, atau tindakan batch. - Profil
openclawterkelola lokal menetapkancdpPortdancdpUrlsecara otomatis; hanya aturcdpUrlsecara eksplisit untuk CDP jarak jauh. - Profil terkelola lokal dapat mengatur
executablePathuntuk mengoverridebrowser.executablePathglobal untuk profil tersebut. Gunakan ini untuk menjalankan satu profil di Chrome dan profil lain di Brave. - Profil terkelola lokal menggunakan
browser.localLaunchTimeoutMsuntuk penemuan HTTP Chrome CDP setelah proses dimulai danbrowser.localCdpReadyTimeoutMsuntuk kesiapan websocket CDP pascapeluncuran. Naikkan nilainya pada host yang lebih lambat saat Chrome berhasil dimulai tetapi pemeriksaan kesiapan berpacu dengan startup. Kedua nilai harus berupa bilangan bulat positif hingga120000ms; nilai konfigurasi yang tidak valid ditolak. - Urutan deteksi otomatis: browser default jika berbasis Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathdanbrowser.profiles.<name>.executablePathkeduanya menerima~dan~/...untuk direktori home OS Anda sebelum peluncuran Chromium.userDataDirper profil pada profilexisting-sessionjuga diperluas dari tilde.- Layanan kontrol: hanya loopback (port diturunkan dari
gateway.port, default18791). extraArgsmenambahkan flag peluncuran tambahan ke startup Chromium lokal (misalnya--disable-gpu, ukuran jendela, atau flag debug).
UI
seamColor: warna aksen untuk chrome UI aplikasi native (tint gelembung Talk Mode, dll.).assistant: override identitas UI Kontrol. Beralih ke 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: satu port multipleks 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.- Alias bind lama: gunakan nilai mode bind di
gateway.bind(auto,loopback,lan,tailnet,custom), bukan alias host (0.0.0.0,127.0.0.1,localhost,::,::1). - Catatan Docker: bind
loopbackdefault mendengarkan pada127.0.0.1di dalam kontainer. Dengan jaringan bridge Docker (-p 18789:18789), lalu lintas tiba dieth0, sehingga gateway tidak dapat dijangkau. Gunakan--network host, atau aturbind: "lan"(ataubind: "custom"dengancustomBindHost: "0.0.0.0") untuk mendengarkan pada semua antarmuka. - Auth: wajib secara default. Bind non-loopback memerlukan auth gateway. Dalam praktiknya, ini berarti token/kata sandi bersama atau reverse proxy yang sadar identitas dengan
gateway.auth.mode: "trusted-proxy". Wizard onboarding menghasilkan token secara default. - Jika
gateway.auth.tokendangateway.auth.passwordsama-sama dikonfigurasi (termasuk SecretRefs), aturgateway.auth.modesecara eksplisit ketokenataupassword. Alur startup dan pemasangan/perbaikan layanan gagal ketika keduanya dikonfigurasi dan mode belum diatur. gateway.auth.mode: "none": mode tanpa auth eksplisit. Gunakan hanya untuk penyiapan local loopback tepercaya; ini sengaja tidak ditawarkan oleh prompt onboarding.gateway.auth.mode: "trusted-proxy": delegasikan auth browser/pengguna ke reverse proxy yang sadar identitas dan percayai header identitas darigateway.trustedProxies(lihat Auth Proxy Tepercaya). Mode ini mengharapkan sumber proxy non-loopback secara default; reverse proxy loopback pada host yang sama memerlukangateway.auth.trustedProxy.allowLoopback = trueeksplisit. Pemanggil internal pada host yang sama dapat menggunakangateway.auth.passwordsebagai fallback langsung lokal;gateway.auth.tokentetap saling eksklusif dengan mode trusted-proxy.gateway.auth.allowTailscale: ketikatrue, header identitas Tailscale Serve dapat memenuhi auth Control UI/WebSocket (diverifikasi melaluitailscale whois). Endpoint HTTP API tidak menggunakan auth header Tailscale tersebut; endpoint tersebut mengikuti mode auth HTTP normal gateway sebagai gantinya. Alur tanpa token ini mengasumsikan host gateway tepercaya. Default ketrueketikatailscale.mode = "serve".gateway.auth.rateLimit: pembatas auth-gagal opsional. Berlaku per IP klien dan per cakupan auth (shared-secret dan device-token dilacak secara independen). Upaya yang diblokir mengembalikan429+Retry-After.- Pada jalur Control UI Tailscale Serve async, upaya gagal untuk
{scope, clientIp}yang sama diserialkan sebelum penulisan kegagalan. Karena itu, upaya buruk bersamaan dari klien yang sama dapat memicu pembatas pada permintaan kedua alih-alih keduanya berlomba sebagai ketidakcocokan biasa. gateway.auth.rateLimit.exemptLoopbackdefault ketrue; aturfalseketika Anda memang ingin lalu lintas localhost juga dibatasi lajunya (untuk penyiapan pengujian atau deployment proxy yang ketat).
- Pada jalur Control UI Tailscale Serve async, upaya gagal untuk
- Upaya auth WS dari origin browser selalu dibatasi lajunya dengan pengecualian loopback dinonaktifkan (defense-in-depth terhadap brute force localhost berbasis browser).
- Pada loopback, penguncian dari origin browser tersebut diisolasi per nilai
Originyang dinormalisasi, sehingga kegagalan berulang dari satu origin localhost tidak otomatis mengunci origin yang berbeda. tailscale.mode:serve(hanya tailnet, bind loopback) ataufunnel(publik, memerlukan auth).tailscale.preserveFunnel: ketikatruedantailscale.mode = "serve", OpenClaw memeriksatailscale funnel statussebelum menerapkan ulang Serve saat startup dan melewatinya jika rute Funnel yang dikonfigurasi secara eksternal sudah mencakup port gateway. Defaultfalse.controlUi.allowedOrigins: allowlist origin browser eksplisit untuk koneksi WebSocket Gateway. Wajib ketika klien browser diharapkan berasal dari origin non-loopback.controlUi.chatMessageMaxWidth: max-width opsional untuk pesan chat Control UI yang dikelompokkan. Menerima nilai lebar CSS terbatas seperti960px,82%,min(1280px, 82%), dancalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: mode berbahaya yang mengaktifkan fallback origin header Host untuk deployment yang sengaja bergantung pada kebijakan origin header Host.remote.transport:ssh(default) ataudirect(ws/wss). Untukdirect,remote.urlharus berupaws://atauwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: override darurat lingkungan proses sisi klien yang mengizinkan plaintextws://ke IP jaringan privat tepercaya; default tetap hanya loopback untuk plaintext. Tidak ada padananopenclaw.json, dan konfigurasi jaringan privat browser sepertibrowser.ssrfPolicy.dangerouslyAllowPrivateNetworktidak memengaruhi klien WebSocket Gateway.gateway.remote.token/.passwordadalah kolom kredensial klien jarak jauh. Keduanya tidak mengonfigurasi auth gateway dengan sendirinya.gateway.push.apns.relay.baseUrl: URL HTTPS dasar untuk relay APNs eksternal yang digunakan oleh build iOS resmi/TestFlight setelah build tersebut menerbitkan registrasi berbasis relay ke gateway. URL ini harus cocok dengan URL relay yang dikompilasi ke dalam build iOS.gateway.push.apns.relay.timeoutMs: timeout pengiriman gateway-ke-relay dalam milidetik. Default ke10000.- Registrasi berbasis relay didelegasikan ke identitas gateway tertentu. Aplikasi iOS yang dipasangkan mengambil
gateway.identity.get, menyertakan identitas tersebut dalam registrasi relay, dan meneruskan grant pengiriman bercakupan registrasi ke gateway. Gateway lain tidak dapat menggunakan ulang registrasi tersimpan tersebut. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: override env sementara untuk konfigurasi relay di atas.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: celah khusus pengembangan untuk URL relay HTTP loopback. URL relay produksi sebaiknya tetap menggunakan HTTPS.gateway.handshakeTimeoutMs: timeout handshake WebSocket Gateway pra-auth dalam milidetik. Default:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MSdiprioritaskan ketika diatur. Tingkatkan ini pada host yang terbebani atau berdaya rendah ketika klien lokal dapat terhubung sementara pemanasan startup masih stabil.gateway.channelHealthCheckMinutes: interval monitor kesehatan channel dalam menit. Atur0untuk menonaktifkan restart monitor kesehatan secara global. Default:5.gateway.channelStaleEventThresholdMinutes: ambang soket basi dalam menit. Jaga ini lebih besar dari atau sama dengangateway.channelHealthCheckMinutes. Default:30.gateway.channelMaxRestartsPerHour: restart monitor kesehatan maksimum per channel/akun dalam satu jam bergulir. Default:10.channels.<provider>.healthMonitor.enabled: opt-out per channel untuk restart monitor kesehatan sambil tetap mengaktifkan monitor global.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: override per akun untuk channel multi-akun. Ketika diatur, ini diprioritaskan dibanding override tingkat channel.- Jalur panggilan gateway lokal dapat menggunakan
gateway.remote.*sebagai fallback hanya ketikagateway.auth.*belum diatur. - Jika
gateway.auth.token/gateway.auth.passworddikonfigurasi secara eksplisit melalui SecretRef dan tidak terselesaikan, resolusi gagal tertutup (tidak ada fallback jarak jauh yang menutupi). trustedProxies: IP reverse proxy yang menghentikan TLS atau menyuntikkan header klien yang diteruskan. Hanya cantumkan proxy yang Anda kendalikan. Entri loopback tetap valid untuk penyiapan proxy/deteksi lokal pada host yang sama (misalnya Tailscale Serve atau reverse proxy lokal), tetapi entri tersebut tidak membuat permintaan loopback memenuhi syarat untukgateway.auth.mode: "trusted-proxy".allowRealIpFallback: ketikatrue, gateway menerimaX-Real-IPjikaX-Forwarded-Fortidak ada. Defaultfalseuntuk perilaku gagal tertutup.gateway.nodes.pairing.autoApproveCidrs: allowlist CIDR/IP opsional untuk menyetujui otomatis pairing perangkat node pertama kali tanpa cakupan yang diminta. Ini dinonaktifkan ketika tidak diatur. Ini tidak menyetujui otomatis pairing operator/browser/Control UI/WebChat, dan tidak menyetujui otomatis peningkatan peran, cakupan, metadata, atau kunci publik.gateway.nodes.allowCommands/gateway.nodes.denyCommands: pembentukan allow/deny global untuk perintah node yang dideklarasikan setelah pairing dan evaluasi allowlist platform. GunakanallowCommandsuntuk memilih ikut memakai perintah node berbahaya seperticamera.snap,camera.clip, danscreen.record;denyCommandsmenghapus perintah meskipun default platform atau allow eksplisit semestinya menyertakannya. Setelah node mengubah daftar perintah yang dideklarasikannya, tolak dan setujui ulang pairing perangkat tersebut agar gateway menyimpan snapshot perintah yang diperbarui.gateway.tools.deny: nama alat tambahan yang diblokir untuk HTTPPOST /tools/invoke(memperluas daftar deny default).gateway.tools.allow: hapus nama alat dari daftar deny HTTP default.
Endpoint kompatibel OpenAI
- Chat Completions: dinonaktifkan secara default. Aktifkan dengan
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Penguatan input URL Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistAllowlist kosong diperlakukan sebagai belum diatur; gunakangateway.http.endpoints.responses.files.allowUrl=falsedan/ataugateway.http.endpoints.responses.images.allowUrl=falseuntuk menonaktifkan pengambilan URL.
- Header penguatan respons opsional:
gateway.http.securityHeaders.strictTransportSecurity(atur hanya untuk origin HTTPS yang Anda kendalikan; lihat Auth Proxy Tepercaya)
Isolasi multi-instans
Jalankan beberapa gateway pada satu host dengan port dan direktori state yang unik:--dev (menggunakan ~/.openclaw-dev + port 19001), --profile <name> (menggunakan ~/.openclaw-<name>).
Lihat Beberapa Gateway.
gateway.tls
enabled: mengaktifkan terminasi TLS pada listener gateway (HTTPS/WSS) (default:false).autoGenerate: menghasilkan otomatis pasangan cert/key self-signed lokal ketika file eksplisit tidak dikonfigurasi; hanya untuk penggunaan lokal/dev.certPath: path filesystem ke file sertifikat TLS.keyPath: path filesystem ke file kunci privat TLS; batasi izinnya.caPath: path bundle CA opsional untuk verifikasi klien atau rantai trust khusus.
gateway.reload
mode: mengontrol bagaimana edit konfigurasi diterapkan saat runtime."off": abaikan edit langsung; perubahan memerlukan restart eksplisit."restart": selalu restart proses gateway saat konfigurasi berubah."hot": terapkan perubahan dalam proses tanpa restart."hybrid"(default): coba hot reload terlebih dahulu; fallback ke restart jika diperlukan.
debounceMs: jendela debounce dalam ms sebelum perubahan konfigurasi diterapkan (bilangan bulat non-negatif).deferralTimeoutMs: waktu maksimum opsional dalam ms untuk menunggu operasi yang masih berjalan sebelum memaksa restart atau hot reload channel. Hilangkan untuk menggunakan tunggu berbatas default (300000); atur0untuk menunggu tanpa batas dan mencatat peringatan masih-tertunda secara berkala.
Hook
Authorization: Bearer <token> atau x-openclaw-token: <token>.
Token hook string kueri ditolak.
Catatan validasi dan keamanan:
hooks.enabled=truememerlukanhooks.tokenyang tidak kosong.hooks.tokenharus berbeda darigateway.auth.token; penggunaan ulang token Gateway ditolak.hooks.pathtidak boleh/; gunakan subjalur khusus seperti/hooks.- Jika
hooks.allowRequestSessionKey=true, batasihooks.allowedSessionKeyPrefixes(misalnya["hook:"]). - Jika mapping atau preset menggunakan
sessionKeybertemplat, aturhooks.allowedSessionKeyPrefixesdanhooks.allowRequestSessionKey=true. Kunci mapping statis tidak memerlukan opt-in tersebut.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeydari payload permintaan hanya diterima ketikahooks.allowRequestSessionKey=true(default:false).
POST /hooks/<name>→ diselesaikan melaluihooks.mappings- Nilai
sessionKeymapping yang dirender dari templat diperlakukan sebagai dipasok secara eksternal dan juga memerlukanhooks.allowRequestSessionKey=true.
- Nilai
Detail mapping
Detail mapping
match.pathmencocokkan subjalur setelah/hooks(mis./hooks/gmail→gmail).match.sourcemencocokkan field payload untuk jalur generik.- Templat seperti
{{messages[0].subject}}membaca dari payload. transformdapat menunjuk ke modul JS/TS yang mengembalikan aksi hook.transform.moduleharus berupa jalur relatif dan tetap berada di dalamhooks.transformsDir(jalur absolut dan traversal ditolak).- Simpan
hooks.transformsDirdi bawah~/.openclaw/hooks/transforms; direktori skill workspace ditolak. Jikaopenclaw doctormelaporkan jalur ini tidak valid, pindahkan modul transform ke direktori transform hook atau hapushooks.transformsDir.
agentIdmerutekan ke agen tertentu; ID yang tidak dikenal kembali ke default.allowedAgentIds: membatasi perutean eksplisit (*atau dihilangkan = izinkan semua,[]= tolak semua).defaultSessionKey: kunci sesi tetap opsional untuk eksekusi agen hook tanpasessionKeyeksplisit.allowRequestSessionKey: mengizinkan pemanggil/hooks/agentdan kunci sesi mapping berbasis templat untuk mengatursessionKey(default:false).allowedSessionKeyPrefixes: daftar izin prefiks opsional untuk nilaisessionKeyeksplisit (permintaan + mapping), mis.["hook:"]. Ini menjadi wajib ketika mapping atau preset apa pun menggunakansessionKeybertemplat.deliver: truemengirim balasan akhir ke kanal;channeldefault kelast.modelmenimpa LLM untuk eksekusi hook ini (harus diizinkan jika katalog model diatur).
Integrasi Gmail
- Preset Gmail bawaan menggunakan
sessionKey: "hook:gmail:{{messages[0].id}}". - Jika Anda mempertahankan perutean per pesan tersebut, atur
hooks.allowRequestSessionKey: truedan batasihooks.allowedSessionKeyPrefixesagar cocok dengan namespace Gmail, misalnya["hook:", "hook:gmail:"]. - Jika Anda memerlukan
hooks.allowRequestSessionKey: false, timpa preset dengansessionKeystatis, bukan default bertemplat.
- Gateway memulai otomatis
gog gmail watch servesaat boot ketika dikonfigurasi. AturOPENCLAW_SKIP_GMAIL_WATCHER=1untuk menonaktifkan. - Jangan jalankan
gog gmail watch serveterpisah bersama Gateway.
Host Plugin Canvas
- Menyajikan 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/
- Hanya lokal: pertahankan
gateway.bind: "loopback"(default). - Bind non-loopback: rute canvas memerlukan auth Gateway (token/password/trusted-proxy), sama seperti permukaan HTTP Gateway lainnya.
- Node WebViews biasanya tidak mengirim header auth; setelah node dipasangkan dan terhubung, Gateway mengiklankan URL kapabilitas bercakupan node untuk akses canvas/A2UI.
- URL kapabilitas terikat ke sesi WS node aktif dan cepat kedaluwarsa. Fallback berbasis IP tidak digunakan.
- Menyuntikkan klien live-reload ke HTML yang disajikan.
- Membuat otomatis
index.htmlawal saat kosong. - Juga menyajikan A2UI di
/__openclaw__/a2ui/. - Perubahan memerlukan restart Gateway.
- Nonaktifkan live reload untuk direktori besar atau kesalahan
EMFILE.
Penemuan
mDNS (Bonjour)
minimal(default ketika pluginbonjourbawaan diaktifkan): hilangkancliPath+sshPortdari catatan TXT.full: sertakancliPath+sshPort; iklan multicast LAN tetap memerlukan pluginbonjourbawaan untuk diaktifkan.off: menekan iklan multicast LAN tanpa mengubah pengaktifan plugin.- Plugin
bonjourbawaan memulai otomatis di host macOS dan bersifat opt-in di deployment Gateway Linux, Windows, dan terkontainerisasi. - Hostname default ke hostname sistem ketika berupa label DNS yang valid, dengan fallback ke
openclaw. Timpa denganOPENCLAW_MDNS_HOSTNAME.
Area luas (DNS-SD)
~/.openclaw/dns/. Untuk penemuan lintas jaringan, pasangkan dengan server DNS (CoreDNS direkomendasikan) + Tailscale split DNS.
Penyiapan: openclaw dns setup --apply.
Lingkungan
env (variabel env sebaris)
- Variabel env sebaris hanya diterapkan jika env proses tidak memiliki kunci tersebut.
- File
.env: CWD.env+~/.openclaw/.env(keduanya tidak menimpa variabel yang sudah ada). shellEnv: mengimpor kunci yang diharapkan tetapi belum ada dari profil shell login Anda.- Lihat Lingkungan untuk urutan prioritas lengkap.
Substitusi variabel env
Referensikan variabel env dalam string konfigurasi apa pun dengan${VAR_NAME}:
- Hanya nama huruf besar yang dicocokkan:
[A-Z_][A-Z0-9_]*. - Variabel yang hilang/kosong memunculkan kesalahan saat pemuatan konfigurasi.
- Escape dengan
$${VAR}untuk literal${VAR}. - Berfungsi dengan
$include.
Rahasia
Referensi rahasia bersifat aditif: nilai plaintext tetap berfungsi.SecretRef
Gunakan satu bentuk objek:
- Pola
provider:^[a-z][a-z0-9_-]{0,63}$ - Pola id
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - Id
source: "file": pointer JSON absolut (misalnya"/providers/openai/apiKey") - Pola id
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - Id
source: "exec"tidak boleh berisi segmen jalur berbatas slash berupa.atau..(misalnyaa/../bditolak)
Permukaan kredensial yang didukung
- Matriks kanonis: Permukaan Kredensial SecretRef
- Target
secrets applymendukung jalur kredensialopenclaw.json. - Referensi
auth-profiles.jsondisertakan dalam resolusi runtime dan cakupan audit.
Konfigurasi penyedia rahasia
- Penyedia
filemendukungmode: "json"danmode: "singleValue"(idharus berupa"value"dalam mode singleValue). - Jalur penyedia file dan exec gagal tertutup ketika verifikasi ACL Windows tidak tersedia. Tetapkan
allowInsecurePath: truehanya untuk jalur tepercaya yang tidak dapat diverifikasi. - Penyedia
execmemerlukan jalurcommandabsolut dan menggunakan payload protokol pada stdin/stdout. - Secara default, jalur perintah symlink ditolak. Tetapkan
allowSymlinkCommand: trueuntuk mengizinkan jalur symlink sambil memvalidasi jalur target yang di-resolve. - Jika
trustedDirsdikonfigurasi, pemeriksaan direktori tepercaya diterapkan pada jalur target yang di-resolve. - Lingkungan child
execbersifat minimal secara default; teruskan variabel yang diperlukan secara eksplisit denganpassEnv. - Referensi rahasia di-resolve pada waktu aktivasi menjadi snapshot dalam memori, lalu jalur permintaan hanya membaca snapshot tersebut.
- Pemfilteran permukaan aktif diterapkan selama aktivasi: referensi yang belum di-resolve pada permukaan yang diaktifkan menggagalkan startup/reload, sementara permukaan tidak aktif dilewati dengan diagnostik.
Penyimpanan auth
- Profil per agen disimpan di
<agentDir>/auth-profiles.json. auth-profiles.jsonmendukung referensi tingkat nilai (keyRefuntukapi_key,tokenRefuntuktoken) untuk mode kredensial statis.- Pemetaan datar lama
auth-profiles.jsonseperti{ "provider": { "apiKey": "..." } }bukan format runtime;openclaw doctor --fixmenulis ulangnya menjadi profil API-keyprovider:defaultkanonis dengan cadangan.legacy-flat.*.bak. - Profil mode OAuth (
auth.profiles.<id>.mode = "oauth") tidak mendukung kredensial profil-auth berbasis SecretRef. - Kredensial runtime statis berasal dari snapshot yang telah di-resolve dalam memori; entri
auth.jsonstatis lama dibersihkan saat ditemukan. - Impor OAuth lama berasal dari
~/.openclaw/credentials/oauth.json. - Lihat OAuth.
- Perilaku runtime rahasia dan tooling
audit/configure/apply: Manajemen Rahasia.
auth.cooldowns
billingBackoffHours: backoff dasar dalam jam ketika sebuah profil gagal karena kesalahan penagihan/kredit-tidak-mencukupi yang sebenarnya (default:5). Teks penagihan eksplisit tetap dapat masuk di sini bahkan pada respons401/403, tetapi pencocok teks khusus penyedia tetap dibatasi pada penyedia yang memilikinya (misalnya OpenRouterKey limit exceeded). Pesan HTTP402yang dapat dicoba ulang untuk jendela penggunaan atau batas belanja organisasi/workspace tetap berada di jalurrate_limitsebagai gantinya.billingBackoffHoursByProvider: override opsional per penyedia untuk jam backoff penagihan.billingMaxHours: batas dalam jam untuk pertumbuhan eksponensial backoff penagihan (default:24).authPermanentBackoffMinutes: backoff dasar dalam menit untuk kegagalanauth_permanentberkeyakinan tinggi (default:10).authPermanentMaxMinutes: batas dalam menit untuk pertumbuhan backoffauth_permanent(default:60).failureWindowHours: jendela bergulir dalam jam yang digunakan untuk penghitung backoff (default:24).overloadedProfileRotations: rotasi profil autentikasi penyedia-yang-sama maksimum untuk kesalahan kelebihan beban sebelum beralih ke fallback model (default:1). Bentuk penyedia-sibuk sepertiModelNotReadyExceptionmasuk di sini.overloadedBackoffMs: jeda tetap sebelum mencoba ulang rotasi penyedia/profil yang kelebihan beban (default:0).rateLimitedProfileRotations: rotasi profil autentikasi penyedia-yang-sama maksimum untuk kesalahan batas laju sebelum beralih ke fallback model (default:1). Bucket batas laju tersebut mencakup teks berpola penyedia sepertiToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceeded, danresource exhausted.
Pencatatan Log
- File log default:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Tetapkan
logging.fileuntuk jalur stabil. consoleLevelnaik menjadidebugketika--verbose.maxFileBytes: ukuran file log aktif maksimum dalam byte sebelum rotasi (bilangan bulat positif; default:104857600= 100 MB). OpenClaw menyimpan hingga lima arsip bernomor di samping file aktif.redactSensitive/redactPatterns: penyamaran upaya-terbaik untuk output konsol, log file, rekaman log OTLP, dan teks transkrip sesi yang dipersistenkan.redactSensitive: "off"hanya menonaktifkan kebijakan log/transkrip umum ini; permukaan keamanan UI/tool/diagnostik tetap menyensor rahasia sebelum emisi.
Diagnostik
enabled: toggle utama untuk output instrumentasi (default:true).flags: array string flag yang mengaktifkan output log bertarget (mendukung wildcard seperti"telegram.*"atau"*").stuckSessionWarnMs: ambang usia tanpa-kemajuan dalam ms untuk mengklasifikasikan sesi pemrosesan berjalan-lama sebagaisession.long_running,session.stalled, atausession.stuck. Balasan, tool, status, blok, dan progres ACP mengatur ulang timer; diagnostiksession.stuckberulang melakukan backoff selama tidak berubah.stuckSessionAbortMs: ambang usia tanpa-kemajuan dalam ms sebelum pekerjaan aktif terhenti yang memenuhi syarat dapat di-abort-drain untuk pemulihan. Jika tidak ditetapkan, OpenClaw menggunakan jendela embedded-run diperpanjang yang lebih aman, minimal 10 menit dan 5xstuckSessionWarnMs.otel.enabled: mengaktifkan pipeline ekspor OpenTelemetry (default:false). Untuk konfigurasi lengkap, katalog sinyal, dan model privasi, lihat ekspor OpenTelemetry.otel.endpoint: URL collector untuk ekspor OTel.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: endpoint OTLP opsional khusus sinyal. Ketika ditetapkan, endpoint tersebut menggantikanotel.endpointhanya untuk sinyal itu.otel.protocol:"http/protobuf"(default) atau"grpc".otel.headers: header metadata HTTP/gRPC ekstra yang dikirim dengan permintaan ekspor OTel.otel.serviceName: nama layanan untuk atribut resource.otel.traces/otel.metrics/otel.logs: mengaktifkan ekspor trace, metrik, atau log.otel.sampleRate: laju sampling trace0-1.otel.flushIntervalMs: interval flush telemetri berkala dalam ms.otel.captureContent: pengambilan konten mentah opt-in untuk atribut span OTEL. Default nonaktif. Booleantruemenangkap konten pesan/tool non-sistem; bentuk objek memungkinkan Anda mengaktifkaninputMessages,outputMessages,toolInputs,toolOutputs, dansystemPromptsecara eksplisit.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: toggle lingkungan untuk atribut penyedia span GenAI eksperimental terbaru. Secara default, span mempertahankan atribut legacygen_ai.systemuntuk kompatibilitas; metrik GenAI menggunakan atribut semantik berbatas.OPENCLAW_OTEL_PRELOADED=1: toggle lingkungan untuk host yang sudah mendaftarkan SDK OpenTelemetry global. OpenClaw kemudian melewati startup/shutdown SDK milik Plugin sambil tetap menjaga listener diagnostik aktif.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, danOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: variabel lingkungan endpoint khusus sinyal yang digunakan ketika kunci konfigurasi yang sesuai tidak ditetapkan.cacheTrace.enabled: mencatat snapshot trace cache untuk run tertanam (default:false).cacheTrace.filePath: jalur output untuk JSONL trace cache (default:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: mengontrol apa yang disertakan dalam output trace cache (semua default:true).
Pembaruan
channel: channel rilis untuk instalasi npm/git -"stable","beta", atau"dev".checkOnStart: memeriksa pembaruan npm ketika gateway dimulai (default:true).auto.enabled: mengaktifkan pembaruan otomatis latar belakang untuk instalasi paket (default:false).auto.stableDelayHours: jeda minimum dalam jam sebelum penerapan otomatis channel stabil (default:6; maks:168).auto.stableJitterHours: jendela sebaran rollout channel stabil ekstra dalam jam (default:12; maks:168).auto.betaCheckIntervalHours: seberapa sering pemeriksaan channel beta berjalan dalam jam (default:1; maks:24).
ACP
enabled: gate fitur ACP global (default:true; tetapkanfalseuntuk menyembunyikan dispatch ACP dan affordance spawn).dispatch.enabled: gate independen untuk dispatch giliran sesi ACP (default:true). Tetapkanfalseuntuk menjaga perintah ACP tetap tersedia sambil memblokir eksekusi.backend: id backend runtime ACP default (harus cocok dengan Plugin runtime ACP yang terdaftar). Instal Plugin backend terlebih dahulu, dan jikaplugins.allowditetapkan, sertakan id Plugin backend (misalnyaacpx) atau backend ACP tidak akan dimuat.defaultAgent: id agent target fallback ACP ketika spawn tidak menentukan target eksplisit.allowedAgents: allowlist id agent yang diizinkan untuk sesi runtime ACP; kosong berarti tidak ada pembatasan tambahan.maxConcurrentSessions: jumlah maksimum sesi ACP aktif secara bersamaan.stream.coalesceIdleMs: jendela flush idle dalam ms untuk teks yang di-stream.stream.maxChunkChars: ukuran chunk maksimum sebelum memecah proyeksi blok yang di-stream.stream.repeatSuppression: menekan baris status/tool berulang per giliran (default:true).stream.deliveryMode:"live"melakukan stream secara inkremental;"final_only"melakukan buffering hingga event terminal giliran.stream.hiddenBoundarySeparator: pemisah sebelum teks terlihat setelah event tool tersembunyi (default:"paragraph").stream.maxOutputChars: karakter output asisten maksimum yang diproyeksikan per giliran ACP.stream.maxSessionUpdateChars: karakter maksimum untuk baris status/pembaruan ACP yang diproyeksikan.stream.tagVisibility: rekaman nama tag ke override visibilitas boolean untuk event yang di-stream.runtime.ttlMinutes: TTL idle dalam menit untuk worker sesi ACP sebelum memenuhi syarat untuk pembersihan.runtime.installCommand: perintah instalasi opsional untuk dijalankan saat bootstrap lingkungan runtime ACP.
CLI
cli.banner.taglineModemengontrol gaya tagline banner:"random"(default): tagline lucu/musiman yang berotasi."default": tagline netral tetap (All your chats, one OpenClaw.)."off": tanpa teks tagline (judul/versi banner tetap ditampilkan).
- Untuk menyembunyikan seluruh banner (bukan hanya tagline), tetapkan env
OPENCLAW_HIDE_BANNER=1.
Wizard
Metadata yang ditulis oleh alur penyiapan terpandu CLI (onboard, configure, doctor):
Identitas
Lihat field identitasagents.list di bawah default Agent.
Jembatan (legacy, dihapus)
Build saat ini tidak lagi menyertakan jembatan TCP. Node terhubung melalui WebSocket Gateway. Kuncibridge.* tidak lagi menjadi bagian dari skema konfigurasi (validasi gagal hingga dihapus; openclaw doctor --fix dapat menghapus kunci yang tidak dikenal).
Konfigurasi jembatan legacy (referensi historis)
Konfigurasi jembatan legacy (referensi historis)
Cron
sessionRetention: berapa lama menyimpan sesi eksekusi Cron terisolasi yang selesai sebelum dipangkas darisessions.json. Juga mengontrol pembersihan transkrip Cron terhapus yang diarsipkan. Bawaan:24h; aturfalseuntuk menonaktifkan.runLog.maxBytes: ukuran maksimum per file log eksekusi (cron/runs/<jobId>.jsonl) sebelum pemangkasan. Bawaan:2_000_000byte.runLog.keepLines: baris terbaru yang dipertahankan saat pemangkasan log eksekusi dipicu. Bawaan:2000.webhookToken: token Bearer yang digunakan untuk pengiriman POST Webhook Cron (delivery.mode = "webhook"), jika dihilangkan tidak ada header autentikasi yang dikirim.webhook: URL Webhook cadangan lama yang sudah tidak digunakan (http/https), hanya digunakan untuk tugas tersimpan yang masih memilikinotify: true.
cron.retry
maxAttempts: percobaan ulang maksimum untuk tugas sekali jalan pada kesalahan sementara (bawaan:3; rentang:0-10).backoffMs: array jeda percobaan ulang dalam ms untuk setiap percobaan ulang (bawaan:[30000, 60000, 300000]; 1-10 entri).retryOn: jenis kesalahan yang memicu percobaan ulang -"rate_limit","overloaded","network","timeout","server_error". Hilangkan untuk mencoba ulang semua jenis sementara.
cron.failureAlert
enabled: aktifkan peringatan kegagalan untuk tugas Cron (bawaan:false).after: jumlah kegagalan beruntun sebelum peringatan dipicu (bilangan bulat positif, min:1).cooldownMs: jumlah milidetik minimum antara peringatan berulang untuk tugas yang sama (bilangan bulat non-negatif).includeSkipped: hitung eksekusi yang dilewati secara beruntun terhadap ambang peringatan (bawaan:false). Eksekusi yang dilewati dilacak secara terpisah dan tidak memengaruhi jeda percobaan ulang kesalahan eksekusi.mode: mode pengiriman -"announce"mengirim melalui pesan kanal;"webhook"memposting ke Webhook yang dikonfigurasi.accountId: akun atau ID kanal opsional untuk membatasi cakupan pengiriman peringatan.
cron.failureDestination
- Tujuan bawaan untuk notifikasi kegagalan Cron di semua tugas.
mode:"announce"atau"webhook"; default ke"announce"ketika data target yang cukup tersedia.channel: penggantian kanal untuk pengiriman announce."last"menggunakan kembali kanal pengiriman terakhir yang diketahui.to: target announce eksplisit atau URL Webhook. Wajib untuk mode Webhook.accountId: penggantian akun opsional untuk pengiriman.delivery.failureDestinationper tugas menimpa default global ini.- Ketika tujuan kegagalan global maupun per tugas tidak ditetapkan, tugas yang sudah mengirim melalui
announcekembali ke target announce utama tersebut saat gagal. delivery.failureDestinationhanya didukung untuk tugassessionTarget="isolated"kecualidelivery.modeutama tugas adalah"webhook".
Variabel templat model media
Penanda tempat templat yang diekspansi dalamtools.media.models[].args:
| Variabel | Deskripsi |
|---|---|
{{Body}} | Isi lengkap pesan masuk |
{{RawBody}} | Isi mentah (tanpa pembungkus riwayat/pengirim) |
{{BodyStripped}} | Isi dengan penyebutan grup dihapus |
{{From}} | Pengenal pengirim |
{{To}} | Pengenal tujuan |
{{MessageSid}} | ID pesan kanal |
{{SessionId}} | UUID sesi saat ini |
{{IsNewSession}} | "true" ketika sesi baru dibuat |
{{MediaUrl}} | URL semu media masuk |
{{MediaPath}} | Jalur media lokal |
{{MediaType}} | Jenis media (gambar/audio/dokumen/…) |
{{Transcript}} | Transkrip audio |
{{Prompt}} | Instruksi media hasil resolusi untuk entri CLI |
{{MaxChars}} | Karakter keluaran maksimum hasil resolusi untuk entri CLI |
{{ChatType}} | "direct" atau "group" |
{{GroupSubject}} | Subjek grup (upaya terbaik) |
{{GroupMembers}} | Pratinjau anggota grup (upaya terbaik) |
{{SenderName}} | Nama tampilan pengirim (upaya terbaik) |
{{SenderE164}} | Nomor telepon pengirim (upaya terbaik) |
{{Provider}} | Petunjuk penyedia (WhatsApp, Telegram, Discord, dll.) |
Penyertaan konfigurasi ($include)
Pecah konfigurasi menjadi beberapa file:
- File tunggal: menggantikan objek yang memuatnya.
- Array file: digabungkan secara mendalam sesuai urutan (yang belakangan menimpa yang lebih awal).
- Kunci sejajar: digabungkan setelah penyertaan (menimpa nilai yang disertakan).
- Penyertaan bersarang: hingga kedalaman 10 tingkat.
- Jalur: diresolusikan relatif terhadap file yang menyertakan, tetapi harus tetap berada di dalam direktori konfigurasi tingkat atas (
dirnamedariopenclaw.json). Bentuk absolut/../hanya diizinkan ketika masih teresolusi di dalam batas tersebut. - Penulisan yang dilakukan OpenClaw yang hanya mengubah satu bagian tingkat atas yang didukung oleh penyertaan file tunggal akan menulis langsung ke file yang disertakan tersebut. Misalnya,
plugins installmemperbaruiplugins: { $include: "./plugins.json5" }diplugins.json5dan membiarkanopenclaw.jsontetap utuh. - Penyertaan root, array penyertaan, dan penyertaan dengan penggantian kunci sejajar bersifat hanya baca untuk penulisan yang dilakukan OpenClaw; penulisan tersebut gagal tertutup alih-alih meratakan konfigurasi.
- Kesalahan: pesan jelas untuk file yang hilang, kesalahan penguraian, dan penyertaan melingkar.
Terkait: Konfigurasi · Contoh Konfigurasi · Doctor