Gateway
Yapılandırma referansı
OpenClaw temel yapılandırma başvurusu: ~/.openclaw/openclaw.json. Görev odaklı bir genel bakış için bkz. Yapılandırma.
Ana OpenClaw yapılandırma yüzeylerini kapsar ve bir alt sistemin kendi daha derin başvurusu olduğunda bağlantı verir. Kanal ve Plugin sahipli komut katalogları ile derin bellek/QMD ayarları bu sayfa yerine kendi sayfalarında yer alır.
Kod gerçeği:
openclaw config schema, doğrulama ve Control UI için kullanılan canlı JSON Schema'yı yazdırır; mevcut olduğunda paketle gelen/Plugin/kanal meta verileri birleştirilirconfig.schema.lookup, ayrıntıya inen araçlar için yol kapsamlı tek bir şema düğümü döndürürpnpm config:docs:check/pnpm config:docs:gen, yapılandırma belgeleri temel hash'ini geçerli şema yüzeyine göre doğrular
Ajan arama yolu: düzenlemelerden önce kesin alan düzeyi belgeleri ve kısıtlar için gateway araç eylemi config.schema.lookup kullanın. Görev odaklı rehberlik için Yapılandırma, daha geniş alan haritası, varsayılanlar ve alt sistem başvurularına bağlantılar için bu sayfayı kullanın.
Ayrılmış derin başvurular:
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsveplugins.entries.memory-core.config.dreamingaltındaki dreaming yapılandırması için Bellek yapılandırması başvurusu- Geçerli yerleşik + paketle gelen komut kataloğu için Slash komutları
- Kanala özel komut yüzeyleri için sahip kanal/Plugin sayfaları
Yapılandırma biçimi JSON5'tir (yorumlara + sondaki virgüllere izin verilir). Tüm alanlar isteğe bağlıdır - OpenClaw atlandıklarında güvenli varsayılanları kullanır.
Kanallar
Kanal başına yapılandırma anahtarları ayrılmış bir sayfaya taşındı - Slack, Discord, Telegram, WhatsApp, Matrix, iMessage ve diğer paketle gelen kanallar (kimlik doğrulama, erişim denetimi, çoklu hesap, bahsetme kapısı) dahil channels.* için bkz. Yapılandırma - kanallar.
Ajan varsayılanları, çoklu ajan, oturumlar ve iletiler
Ayrılmış bir sayfaya taşındı - şunlar için bkz. Yapılandırma - ajanlar:
agents.defaults.*(çalışma alanı, model, düşünme, Heartbeat, bellek, medya, Skills, sandbox)multiAgent.*(çoklu ajan yönlendirmesi ve bağlamaları)session.*(oturum yaşam döngüsü, Compaction, budama)messages.*(ileti teslimi, TTS, markdown işleme)talk.*(Talk modu)talk.consultThinkingLevel: Control UI Talk gerçek zamanlı danışmalarının arkasındaki tam OpenClaw ajan çalıştırması için düşünme düzeyi geçersiz kılmasıtalk.consultFastMode: Control UI Talk gerçek zamanlı danışmaları için tek seferlik hızlı mod geçersiz kılmasıtalk.speechLocale: iOS/macOS üzerinde Talk konuşma tanıma için isteğe bağlı BCP 47 yerel ayar kimliğitalk.silenceTimeoutMs: ayarlanmadığında Talk, dökümü göndermeden önce platformun varsayılan duraklama penceresini korur (700 ms on macOS and Android, 900 ms on iOS)talk.realtime.consultRouting:openclaw_agent_consultöğesini atlayan kesinleşmiş gerçek zamanlı Talk dökümleri için Gateway aktarma geri dönüşü
Araçlar ve özel sağlayıcılar
Araç politikası, deneysel anahtarlar, sağlayıcı destekli araç yapılandırması ve özel sağlayıcı / temel URL kurulumu ayrılmış bir sayfaya taşındı - bkz. Yapılandırma - araçlar ve özel sağlayıcılar.
Modeller
Sağlayıcı tanımları, model izin listeleri ve özel sağlayıcı kurulumu Yapılandırma - araçlar ve özel sağlayıcılar içinde yer alır. models kökü ayrıca global model kataloğu davranışına sahiptir.
{ models: { // Optional. Default: true. Requires a Gateway restart when changed. pricing: { enabled: false }, },}models.mode: sağlayıcı kataloğu davranışı (mergeveyareplace).models.providers: sağlayıcı kimliğine göre anahtarlanmış özel sağlayıcı haritası.models.providers.*.localService: yerel model sunucuları için isteğe bağlı isteğe bağlı süreç yöneticisi. OpenClaw yapılandırılmış sağlık uç noktasını yoklar, gerektiğinde mutlakcommandöğesini başlatır, hazır olmayı bekler ve ardından model isteğini gönderir. Bkz. Yerel model hizmetleri.models.pricing.enabled: sidecar'lar ve kanallar Gateway hazır yoluna ulaştıktan sonra başlayan arka plan fiyatlandırma önyüklemesini denetler.falseolduğunda Gateway, OpenRouter ve LiteLLM fiyatlandırma kataloğu getirmelerini atlar; yapılandırılmışmodels.providers.*.models[].costdeğerleri yerel maliyet tahminleri için çalışmaya devam eder.
MCP
OpenClaw tarafından yönetilen MCP sunucu tanımları mcp.servers altında yer alır ve gömülü OpenClaw ile diğer çalışma zamanı bağdaştırıcıları tarafından tüketilir. openclaw mcp list, show, set ve unset komutları, yapılandırma düzenlemeleri sırasında hedef sunucuya bağlanmadan bu bloğu yönetir.
{ mcp: { // Optional. Default: 600000 ms (10 minutes). Set 0 to disable idle eviction. sessionIdleTtlMs: 600000, servers: { docs: { command: "npx", args: ["-y", "@modelcontextprotocol/server-fetch"], }, remote: { url: "https://example.com/mcp", transport: "streamable-http", // streamable-http | sse timeout: 20, connectTimeout: 5, supportsParallelToolCalls: true, headers: { Authorization: "Bearer ${MCP_REMOTE_TOKEN}", }, auth: "oauth", oauth: { scope: "docs.read", }, sslVerify: true, clientCert: "/path/to/client.crt", clientKey: "/path/to/client.key", toolFilter: { include: ["search_*"], exclude: ["admin_*"], }, // Optional Codex app-server projection controls. codex: { agents: ["main"], defaultToolsApprovalMode: "approve", // auto | prompt | approve }, }, }, },}mcp.servers: yapılandırılmış MCP araçlarını açığa çıkaran çalışma zamanları için adlandırılmış stdio veya uzak MCP sunucu tanımları. Uzak girdilertransport: "streamable-http"veyatransport: "sse"kullanır;type: "http",openclaw mcp setveopenclaw doctor --fixtarafından kanoniktransportalanına normalleştirilen CLI'ye özgü bir diğer addır.mcp.servers.<name>.enabled: kaydedilmiş bir sunucu tanımını korurken onu gömülü OpenClaw MCP keşfi ve araç projeksiyonundan hariç tutmak içinfalseayarlayın.mcp.servers.<name>.timeout/requestTimeoutMs: sunucu başına MCP istek zaman aşımı, saniye veya milisaniye cinsinden.mcp.servers.<name>.connectTimeout/connectionTimeoutMs: sunucu başına bağlantı zaman aşımı, saniye veya milisaniye cinsinden.mcp.servers.<name>.supportsParallelToolCalls: paralel MCP araç çağrıları yapıp yapmamayı seçebilen bağdaştırıcılar için isteğe bağlı eşzamanlılık ipucu.mcp.servers.<name>.auth: OAuth gerektiren HTTP MCP sunucuları için"oauth"ayarlayın. Jetonları OpenClaw durumu altında saklamak içinopenclaw mcp login <name>çalıştırın.mcp.servers.<name>.oauth: isteğe bağlı OAuth kapsamı, yönlendirme URL'si ve istemci meta veri URL'si geçersiz kılmaları.mcp.servers.<name>.sslVerify,clientCert,clientKey: özel uç noktalar ve karşılıklı TLS için HTTP TLS denetimleri.mcp.servers.<name>.toolFilter: isteğe bağlı sunucu başına araç seçimi.include, keşfedilen MCP araçlarını eşleşen adlarla sınırlar;exclude, eşleşen adları gizler. Girdiler tam MCP araç adları veya basit*glob'larıdır. Kaynakları veya istemleri olan sunucular ayrıca yardımcı araç adları (resources_list,resources_read,prompts_list,prompts_get) üretir ve bu adlar aynı filtreyi kullanır.mcp.servers.<name>.codex: isteğe bağlı Codex uygulama sunucusu projeksiyon denetimleri. Bu blok yalnızca Codex uygulama sunucusu iş parçacıkları için OpenClaw meta verisidir; ACP oturumlarını, genel Codex harness yapılandırmasını veya diğer çalışma zamanı bağdaştırıcılarını etkilemez. Boş olmayancodex.agents, sunucuyu listelenen OpenClaw ajan kimlikleriyle sınırlar. Boş, boşluklardan oluşan veya geçersiz kapsamlı ajan listeleri yapılandırma doğrulaması tarafından reddedilir ve global olmak yerine çalışma zamanı projeksiyon yolu tarafından atlanır.codex.defaultToolsApprovalMode, o sunucu için Codex'in yereldefault_tools_approval_modedeğerini yayar. OpenClaw, yerelmcp_serversyapılandırmasını Codex'e geçirmeden öncecodexbloğunu çıkarır. Sunucuyu Codex'in varsayılan MCP onay davranışıyla her Codex uygulama sunucusu ajanı için projekte edilmiş tutmak üzere bloğu atlayın.mcp.sessionIdleTtlMs: oturum kapsamlı paketle gelen MCP çalışma zamanları için boşta TTL. Tek seferlik gömülü çalıştırmalar, çalıştırma sonu temizliği ister; bu TTL uzun ömürlü oturumlar ve gelecekteki çağıranlar için güvenlik ağıdır.mcp.*altındaki değişiklikler, önbelleğe alınmış oturum MCP çalışma zamanlarını elden çıkararak sıcak uygulanır. Sonraki araç keşfi/kullanımı bunları yeni yapılandırmadan yeniden oluşturur; böylece kaldırılanmcp.serversgirdileri boşta TTL beklenmeden hemen temizlenir.- Çalışma zamanı keşfi ayrıca o oturum için önbelleğe alınmış kataloğu düşürerek MCP araç listesi değişiklik bildirimlerine uyar. Kaynakları veya istemleri duyuran sunucular; kaynakları listeleme/okuma ve istemleri listeleme/getirme için yardımcı araçlar alır. Yinelenen araç çağrısı hataları, başka bir çağrı denenmeden önce etkilenen sunucuyu kısa süreliğine duraklatır.
Çalışma zamanı davranışı için bkz. MCP ve CLI arka uçları.
Skills
{ skills: { allowBundled: ["gemini", "peekaboo"], load: { extraDirs: ["~/Projects/agent-scripts/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, install: { preferBrew: true, nodeManager: "npm", // npm | pnpm | yarn | bun allowUploadedArchives: false, }, workshop: { allowSymlinkTargetWrites: false, }, entries: { "image-lab": { apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" }, }, peekaboo: { enabled: true }, sag: { enabled: false }, }, },}allowBundled: yalnızca paketle gelen Skills için isteğe bağlı izin listesi (yönetilen/çalışma alanı Skills etkilenmez).load.extraDirs: ek paylaşılan skill kökleri (en düşük öncelik).load.allowSymlinkTargets: bağlantı yapılandırılmış kaynak kökünün dışında yer aldığında skill sembolik bağlantılarının çözümlenebileceği güvenilir gerçek hedef kökler.workshop.allowSymlinkTargetWrites: Skill Workshop uygulamasının zaten güvenilir sembolik bağlantı hedefleri üzerinden yazmasına izin verir (varsayılan: false).install.preferBrew: true olduğunda,brewmevcutsa diğer yükleyici türlerine geri düşmeden önce Homebrew yükleyicilerini tercih eder.install.nodeManager:metadata.openclaw.installbelirtimleri için node yükleyici tercihi (npm|pnpm|yarn|bun).install.allowUploadedArchives: güveniliroperator.adminGateway istemcilerininskills.upload.*üzerinden hazırlanmış özel zip arşivlerini yüklemesine izin ver (varsayılan: false). Bu yalnızca yüklenen arşiv yolunu etkinleştirir; normal ClawHub yüklemeleri bunu gerektirmez.entries.<skillKey>.enabled: false, paketle gelmiş/yüklenmiş olsa bile bir skill'i devre dışı bırakır.entries.<skillKey>.apiKey: birincil env var bildiren Skills için kolaylık (düz metin dizesi veya SecretRef nesnesi).
Plugins
{ plugins: { enabled: true, allow: ["voice-call"], deny: [], load: { paths: ["~/Projects/oss/voice-call-plugin"], }, entries: { "voice-call": { enabled: true, hooks: { allowPromptInjection: false, }, config: { provider: "twilio" }, }, }, },}~/.openclaw/extensionsve<workspace>/.openclaw/extensionsaltındaki paket veya bundle dizinlerinden, ayrıcaplugins.load.pathsiçinde listelenen dosya ya da dizinlerden yüklenir.- Bağımsız Plugin dosyalarını
plugins.load.pathsiçine koyun; otomatik keşfedilen extension kökleri, bu köklerdeki yardımcı betiklerin başlatmayı engellememesi için üst düzey.js,.mjsve.tsdosyalarını yok sayar. - Keşif, yerel OpenClaw Plugin'lerini ve uyumlu Codex bundle'ları ile Claude bundle'larını, manifest içermeyen Claude varsayılan düzen bundle'ları dahil kabul eder.
- Yapılandırma değişiklikleri gateway yeniden başlatması gerektirir.
allow: isteğe bağlı izin listesi (yalnızca listelenen Plugin'ler yüklenir).denyüstün gelir.plugins.entries.<id>.apiKey: Plugin düzeyinde API anahtarı kolaylık alanı (Plugin tarafından desteklendiğinde).plugins.entries.<id>.env: Plugin kapsamlı env var haritası.plugins.entries.<id>.hooks.allowPromptInjection:falseolduğunda core,before_prompt_buildöğesini engeller ve eskibefore_agent_startiçinden prompt'u değiştiren alanları yok sayarken eskimodelOverrideveproviderOverridedeğerlerini korur. Yerel Plugin hook'ları ve desteklenen bundle tarafından sağlanan hook dizinleri için geçerlidir.plugins.entries.<id>.hooks.allowConversationAccess:trueolduğunda, güvenilen ve bundle olmayan Plugin'lerllm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeveagent_endgibi tiplendirilmiş hook'lardan ham konuşma içeriğini okuyabilir.plugins.entries.<id>.subagent.allowModelOverride: bu Plugin'e arka plan subagent çalıştırmaları için çalışma başınaprovidervemodelgeçersiz kılmaları istemesi konusunda açıkça güven.plugins.entries.<id>.subagent.allowedModels: güvenilen subagent geçersiz kılmaları için kanonikprovider/modelhedeflerinin isteğe bağlı izin listesi."*"değerini yalnızca bilerek herhangi bir modele izin vermek istediğinizde kullanın.plugins.entries.<id>.llm.allowModelOverride: bu Plugin'eapi.runtime.llm.completeiçin model geçersiz kılmaları istemesi konusunda açıkça güven.plugins.entries.<id>.llm.allowedModels: güvenilen Plugin LLM tamamlama geçersiz kılmaları için kanonikprovider/modelhedeflerinin isteğe bağlı izin listesi."*"değerini yalnızca bilerek herhangi bir modele izin vermek istediğinizde kullanın.plugins.entries.<id>.llm.allowAgentIdOverride: bu Plugin'eapi.runtime.llm.completeişlemini varsayılan olmayan bir agent id ile çalıştırması konusunda açıkça güven.plugins.entries.<id>.config: Plugin tarafından tanımlanan yapılandırma nesnesi (mevcut olduğunda yerel OpenClaw Plugin şeması tarafından doğrulanır).- Channel Plugin hesap/çalışma zamanı ayarları
channels.<id>altında bulunur ve merkezi bir OpenClaw seçenek kayıt defteriyle değil, sahibi olan Plugin'in manifestchannelConfigsmetadata'sı ile açıklanmalıdır.
Codex harness Plugin yapılandırması
Bundle olarak gelen codex Plugin'i, yerel Codex app-server harness ayarlarının sahibidir ve bunlar
plugins.entries.codex.config altında bulunur. Tam yapılandırma
yüzeyi için Codex harness başvurusu ve çalışma zamanı modeli için Codex harness sayfasına bakın.
codexPlugins yalnızca yerel Codex harness'ı seçen oturumlara uygulanır.
OpenClaw provider çalıştırmaları, ACP konuşma bağlamaları veya Codex dışı herhangi bir harness için Codex Plugin'lerini etkinleştirmez.
{ plugins: { entries: { codex: { enabled: true, config: { codexPlugins: { enabled: true, allow_destructive_actions: true, plugins: { "google-calendar": { enabled: true, marketplaceName: "openai-curated", pluginName: "google-calendar", allow_destructive_actions: false, }, }, }, }, }, }, },}plugins.entries.codex.config.codexPlugins.enabled: Codex harness için yerel Codex Plugin/uygulama desteğini etkinleştirir. Varsayılan:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: taşınan Plugin uygulama istemleri için varsayılan yıkıcı eylem ilkesi. Güvenli Codex onay şemalarını sormadan kabul etmek içintrue, reddetmek içinfalse, Codex tarafından gerekli onayları OpenClaw Plugin onayları üzerinden yönlendirmek için"auto"veya kalıcı onay olmadan her Plugin yazma/yıkıcı eylemi için sormak üzere"ask"kullanın."ask"modu, etkilenen uygulama için kalıcı Codex araç başına onay geçersiz kılmalarını temizler ve Codex thread'i başlamadan önce bu uygulama için insan onay reviewer'ını seçer. Varsayılan:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: globalcodexPlugins.enabledda true olduğunda taşınmış bir Plugin girdisini etkinleştirir. Varsayılan: açık girdiler içintrue.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: kararlı marketplace kimliği. V1 yalnızca"openai-curated"destekler.plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: migration'dan gelen kararlı Codex Plugin kimliği, örneğin"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: Plugin başına yıkıcı eylem geçersiz kılması. Atlandığında globalallow_destructive_actionsdeğeri kullanılır. Plugin başına değer aynıtrue,false,"auto"veya"ask"ilkelerini kabul eder.
"ask" kullanan her kabul edilmiş Plugin uygulaması, o uygulamanın onay isteklerini
insan reviewer'a yönlendirir. Diğer uygulamalar ve uygulama dışı thread onayları
yapılandırılmış reviewer'larını korur; böylece karma Plugin ilkeleri "ask" davranışını devralmaz.
codexPlugins.enabled global etkinleştirme yönergesidir. Migration tarafından yazılan açık Plugin
girdileri kalıcı kurulum ve onarım uygunluk kümesidir.
plugins["*"] desteklenmez, install anahtarı yoktur ve yerel
marketplacePath değerleri host'a özgü oldukları için bilerek yapılandırma alanları değildir.
app/list hazır olma denetimleri bir saat önbelleğe alınır ve eskidiklerinde
asenkron olarak yenilenir. Codex thread uygulama yapılandırması her turda değil, Codex harness
oturumu kurulurken hesaplanır; yerel Plugin yapılandırmasını değiştirdikten sonra /new, /reset veya gateway
yeniden başlatması kullanın.
plugins.entries.firecrawl.config.webFetch: Firecrawl web-fetch provider ayarları.apiKey: Daha yüksek limitler için isteğe bağlı Firecrawl API anahtarı (SecretRef kabul eder).plugins.entries.firecrawl.config.webSearch.apiKey, eskitools.web.fetch.firecrawl.apiKeyveyaFIRECRAWL_API_KEYenv var değerine geri döner.baseUrl: Firecrawl API temel URL'si (varsayılan:https://api.firecrawl.dev; self-hosted geçersiz kılmalar özel/dahili uç noktaları hedeflemelidir).onlyMainContent: sayfalardan yalnızca ana içeriği çıkarır (varsayılan:true).maxAgeMs: milisaniye cinsinden maksimum önbellek yaşı (varsayılan:172800000/ 2 gün).timeoutSeconds: scrape isteği zaman aşımı, saniye cinsinden (varsayılan:60).
plugins.entries.xai.config.xSearch: xAI X Search (Grok web araması) ayarları.enabled: X Search provider'ını etkinleştirir.model: arama için kullanılacak Grok modeli (örn."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: memory dreaming ayarları. Aşamalar ve eşikler için Dreaming sayfasına bakın.enabled: ana dreaming anahtarı (varsayılanfalse).frequency: her tam dreaming taraması için cron ritmi (varsayılan olarak"0 3 * * *").model: isteğe bağlı Dream Diary subagent model geçersiz kılması.plugins.entries.memory-core.subagent.allowModelOverride: truegerektirir; hedefleri sınırlamak içinallowedModelsile eşleştirin. Model-kullanılamaz hataları, oturum varsayılan modeliyle bir kez yeniden denenir; güven veya izin listesi hataları sessizce geri dönüş yapmaz.- aşama ilkesi ve eşikler uygulama ayrıntılarıdır (kullanıcıya dönük yapılandırma anahtarları değildir).
- Tam memory yapılandırması Memory yapılandırma başvurusu içinde bulunur:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Etkin Claude bundle Plugin'leri
settings.jsoniçinden gömülü OpenClaw varsayılanlarına da katkıda bulunabilir; OpenClaw bunları ham OpenClaw yapılandırma yamaları olarak değil, temizlenmiş agent ayarları olarak uygular. plugins.slots.memory: etkin memory Plugin id değerini seçin veya memory Plugin'lerini devre dışı bırakmak için"none"kullanın.plugins.slots.contextEngine: etkin context engine Plugin id değerini seçin; başka bir engine kurup seçmediğiniz sürece varsayılan"legacy"olur.
Plugins sayfasına bakın.
Commitments
commitments, çıkarımsal takip memory'sini kontrol eder: OpenClaw konuşma turlarından check-in'leri algılayabilir ve bunları heartbeat çalıştırmaları üzerinden iletebilir.
commitments.enabled: çıkarımsal takip commitments için gizli LLM çıkarımı, depolama ve heartbeat teslimini etkinleştirir. Varsayılan:false.commitments.maxPerDay: kayan bir günde agent oturumu başına teslim edilen maksimum çıkarımsal takip commitments sayısı. Varsayılan:3.
Inferred commitments sayfasına bakın.
Tarayıcı
{ browser: { enabled: true, evaluateEnabled: true, defaultProfile: "user", ssrfPolicy: { // dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access // allowPrivateNetwork: true, // legacy alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, tabCleanup: { enabled: true, idleMinutes: 120, maxTabsPerSession: 8, sweepMinutes: 5, }, profiles: { openclaw: { cdpPort: 18800, color: "#FF4500" }, work: { cdpPort: 18801, color: "#0066CC", executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", }, user: { driver: "existing-session", attachOnly: true, color: "#00AA00" }, brave: { driver: "existing-session", attachOnly: true, userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", color: "#FB542B", }, remote: { cdpUrl: "http://10.0.0.42:9222", color: "#00AA00" }, }, color: "#FF4500", // headless: false, // noSandbox: false, // extraArgs: [], // executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", // attachOnly: false, },}evaluateEnabled: false,act:evaluatevewait --fnöğelerini devre dışı bırakır.tabCleanup, boşta kalma süresinden sonra veya bir oturum sınırını aştığında izlenen birincil ajan sekmelerini geri kazanır. Bu ayrı temizleme modlarını devre dışı bırakmak içinidleMinutes: 0veyamaxTabsPerSession: 0ayarlayın.ssrfPolicy.dangerouslyAllowPrivateNetworkayarlanmamışsa devre dışıdır, bu nedenle tarayıcı gezinmesi varsayılan olarak katı kalır.ssrfPolicy.dangerouslyAllowPrivateNetwork: truedeğerini yalnızca özel ağ tarayıcı gezinmesine bilerek güvendiğinizde ayarlayın.- Katı modda, uzak CDP profil uç noktaları (
profiles.*.cdpUrl) erişilebilirlik/keşif kontrolleri sırasında aynı özel ağ engellemesine tabidir. ssrfPolicy.allowPrivateNetwork, eski bir takma ad olarak desteklenmeye devam eder.- Katı modda, açık istisnalar için
ssrfPolicy.hostnameAllowlistvessrfPolicy.allowedHostnameskullanın. - Uzak profiller yalnızca eklenebilir yapıdadır (başlatma/durdurma/sıfırlama devre dışıdır).
profiles.*.cdpUrl,http://,https://,ws://vewss://kabul eder. OpenClaw'un/json/versionkeşfetmesini istediğinizde HTTP(S) kullanın; sağlayıcınız size doğrudan DevTools WebSocket URL'si verdiğinde WS(S) kullanın.remoteCdpTimeoutMsveremoteCdpHandshakeTimeoutMs, uzak veattachOnlyCDP erişilebilirliğine ve sekme açma isteklerine uygulanır. Yönetilen loopback profilleri yerel CDP varsayılanlarını korur.- Harici olarak yönetilen bir CDP hizmetine loopback üzerinden erişilebiliyorsa, o profil için
attachOnly: trueayarlayın; aksi takdirde OpenClaw loopback bağlantı noktasını yerel yönetilen bir tarayıcı profili olarak değerlendirir ve yerel bağlantı noktası sahipliği hataları bildirebilir. existing-sessionprofilleri CDP yerine Chrome MCP kullanır ve seçilen ana makineye ya da bağlı bir tarayıcı düğümü üzerinden eklenebilir.existing-sessionprofilleri, Brave veya Edge gibi belirli bir Chromium tabanlı tarayıcı profilini hedeflemek içinuserDataDirayarlayabilir.- Chrome zaten bir DevTools HTTP(S) keşif uç noktasının veya doğrudan WS(S) uç noktasının arkasında çalışıyorsa
existing-sessionprofillericdpUrlayarlayabilir. Bu modda OpenClaw, otomatik bağlanmayı kullanmak yerine uç noktayı Chrome MCP'ye geçirir; Chrome MCP başlatma bağımsız değişkenleri içinuserDataDiryok sayılır. existing-sessionprofilleri mevcut Chrome MCP rota sınırlarını korur: CSS seçici hedefleme yerine anlık görüntü/ref odaklı eylemler, tek dosya yükleme kancaları, iletişim kutusu zaman aşımı geçersiz kılmaları yok,wait --load networkidleyok veresponsebody, PDF dışa aktarma, indirme yakalama veya toplu eylemler yok.- Yerel yönetilen
openclawprofillericdpPortvecdpUrldeğerlerini otomatik atar;cdpUrldeğerini yalnızca uzak CDP profilleri veya existing-session uç noktası ekleme için açıkça ayarlayın. - Yerel yönetilen profiller, o profil için global
browser.executablePathdeğerini geçersiz kılmak üzereexecutablePathayarlayabilir. Bunu bir profili Chrome'da, diğerini Brave'de çalıştırmak için kullanın. - Yerel yönetilen profiller, işlem başladıktan sonra Chrome CDP HTTP keşfi için
browser.localLaunchTimeoutMsve başlatma sonrası CDP websocket hazır oluşu içinbrowser.localCdpReadyTimeoutMskullanır. Chrome'un başarıyla başladığı ancak hazır olma kontrollerinin başlangıçla yarıştığı daha yavaş ana makinelerde bunları artırın. Her iki değer de120000ms'ye kadar pozitif tamsayı olmalıdır; geçersiz yapılandırma değerleri reddedilir. - Otomatik algılama sırası: Chromium tabanlıysa varsayılan tarayıcı → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathvebrowser.profiles.<name>.executablePath, Chromium başlatılmadan önce işletim sistemi ana dizininiz için hem~hem de~/...kabul eder.existing-sessionprofillerindeki profil başınauserDataDirde tilde genişletmesine tabi tutulur.- Denetim hizmeti: yalnızca loopback (bağlantı noktası
gateway.portdeğerinden türetilir, varsayılan18791). extraArgs, yerel Chromium başlangıcına ek başlatma bayrakları ekler (örneğin--disable-gpu, pencere boyutlandırma veya hata ayıklama bayrakları).
Arayüz
{ ui: { seamColor: "#FF4500", assistant: { name: "OpenClaw", avatar: "CB", // emoji, short text, image URL, or data URI }, },}seamColor: yerel uygulama UI çerçevesi için vurgu rengi (Talk Mode balon tonu vb.).assistant: Control UI kimliği geçersiz kılması. Etkin ajan kimliğine geri döner.
Gateway
{ gateway: { mode: "local", // local | remote port: 18789, bind: "loopback", auth: { mode: "token", // none | token | password | trusted-proxy token: "your-token", // password: "your-password", // or OPENCLAW_GATEWAY_PASSWORD // trustedProxy: { userHeader: "x-forwarded-user" }, // for mode=trusted-proxy; see /gateway/trusted-proxy-auth allowTailscale: true, rateLimit: { maxAttempts: 10, windowMs: 60000, lockoutMs: 300000, exemptLoopback: true, }, }, tailscale: { mode: "off", // off | serve | funnel resetOnExit: false, }, controlUi: { enabled: true, basePath: "/openclaw", // root: "dist/control-ui", // embedSandbox: "scripts", // strict | scripts | trusted // allowExternalEmbedUrls: false, // dangerous: allow absolute external http(s) embed URLs // chatMessageMaxWidth: "min(1280px, 82%)", // optional grouped chat message max-width // allowedOrigins: ["https://control.example.com"], // required for non-loopback Control UI // dangerouslyAllowHostHeaderOriginFallback: false, // dangerous Host-header origin fallback mode // allowInsecureAuth: false, // dangerouslyDisableDeviceAuth: false, }, remote: { url: "ws://127.0.0.1:18789", transport: "ssh", // ssh | direct token: "your-token", // password: "your-password", }, trustedProxies: ["10.0.0.1"], // Optional. Default false. allowRealIpFallback: false, nodes: { pairing: { // Optional. Default unset/disabled. autoApproveCidrs: ["192.168.1.0/24", "fd00:1234:5678::/64"], }, allowCommands: ["canvas.navigate"], denyCommands: ["system.run"], }, tools: { // Additional /tools/invoke HTTP denies deny: ["browser"], // Remove tools from the default HTTP deny list for owner/admin callers allow: ["gateway"], }, push: { apns: { relay: { baseUrl: "https://relay.example.com", timeoutMs: 10000, }, }, }, },}Gateway field details
mode:local(Gateway'i çalıştır) veyaremote(uzak Gateway'e bağlan). Gateway,localolmadığı sürece başlatmayı reddeder.port: WS + HTTP için tek çoklanmış port. Öncelik:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(varsayılan),lan(0.0.0.0),tailnet(yalnızca Tailscale IP'si) veyacustom.- Eski bind takma adları:
gateway.bindiçinde host takma adlarını (0.0.0.0,127.0.0.1,localhost,::,::1) değil, bind modu değerlerini (auto,loopback,lan,tailnet,custom) kullanın. - Docker notu: varsayılan
loopbackbind, konteyner içinde127.0.0.1üzerinde dinler. Docker bridge ağıyla (-p 18789:18789), trafiketh0üzerinden gelir; bu yüzden Gateway'e erişilemez. Tüm arayüzlerde dinlemek için--network hostkullanın ya dabind: "lan"(veyacustomBindHost: "0.0.0.0"ilebind: "custom") ayarlayın. - Kimlik doğrulama: varsayılan olarak zorunludur. Loopback olmayan bind'ler Gateway kimlik doğrulaması gerektirir. Pratikte bu, paylaşılan bir token/parola veya
gateway.auth.mode: "trusted-proxy"ile kimlik duyarlı bir reverse proxy anlamına gelir. Onboarding sihirbazı varsayılan olarak bir token üretir. - Hem
gateway.auth.tokenhem degateway.auth.passwordyapılandırılmışsa (SecretRef'ler dahil),gateway.auth.modedeğerini açıkçatokenveyapasswordolarak ayarlayın. İkisi de yapılandırılmışken mod ayarlanmamışsa başlatma ve servis kurulum/onarım akışları başarısız olur. gateway.auth.mode: "none": açık no-auth modu. Yalnızca güvenilir local loopback kurulumları için kullanın; bu seçenek bilinçli olarak onboarding istemlerinde sunulmaz.gateway.auth.mode: "trusted-proxy": tarayıcı/kullanıcı kimlik doğrulamasını kimlik duyarlı bir reverse proxy'ye devredin vegateway.trustedProxiesüzerinden gelen kimlik başlıklarına güvenin (bkz. Trusted Proxy Auth). Bu mod varsayılan olarak loopback olmayan bir proxy kaynağı bekler; aynı host üzerindeki loopback reverse proxy'ler açıkçagateway.auth.trustedProxy.allowLoopback = truegerektirir. Dahili aynı host çağıranları, yerel doğrudan fallback olarakgateway.auth.passwordkullanabilir;gateway.auth.token, trusted-proxy moduyla karşılıklı olarak dışlayıcı kalır.gateway.auth.allowTailscale:trueolduğunda, Tailscale Serve kimlik başlıkları Control UI/WebSocket kimlik doğrulamasını karşılayabilir (tailscale whoisile doğrulanır). HTTP API uç noktaları bu Tailscale başlık kimlik doğrulamasını kullanmaz; bunun yerine Gateway'in normal HTTP kimlik doğrulama modunu izler. Bu tokensiz akış, Gateway host'unun güvenilir olduğunu varsayar.tailscale.mode = "serve"olduğunda varsayılan değertrueolur.gateway.auth.rateLimit: isteğe bağlı başarısız kimlik doğrulama sınırlayıcısı. İstemci IP'si ve kimlik doğrulama kapsamı başına uygulanır (shared-secret ve device-token bağımsız izlenir). Engellenen denemeler429+Retry-Afterdöndürür.- Asenkron Tailscale Serve Control UI yolunda, aynı
{scope, clientIp}için başarısız denemeler, hata yazımı öncesinde seri hale getirilir. Bu nedenle aynı istemciden eşzamanlı kötü denemeler, ikisinin de düz uyuşmazlık olarak yarışıp geçmesi yerine ikinci istekte sınırlayıcıyı tetikleyebilir. gateway.auth.rateLimit.exemptLoopbackvarsayılan olaraktrueolur; localhost trafiğinin de bilerek rate-limit edilmesini istediğinizde (test kurulumları veya katı proxy dağıtımları için)falseayarlayın.- Tarayıcı kökenli WS kimlik doğrulama denemeleri, loopback muafiyeti devre dışı bırakılarak her zaman throttled olur (tarayıcı tabanlı localhost brute force'a karşı defense-in-depth).
- Loopback üzerinde, bu tarayıcı kökenli kilitlenmeler normalize edilmiş
Origindeğerine göre izole edilir; böylece bir localhost origin'inden tekrarlanan başarısızlıklar farklı bir origin'i otomatik olarak kilitlemez. tailscale.mode:serve(yalnızca tailnet, loopback bind) veyafunnel(genel, kimlik doğrulama gerektirir).tailscale.serviceName: Serve modu için isteğe bağlı Tailscale Service adı, örneğinsvc:openclaw. Ayarlandığında OpenClaw bunutailscale serve --servicekomutuna geçirir; böylece Control UI, cihaz host adı yerine adlandırılmış bir Service üzerinden dışa açılabilir. Değer Tailscale'insvc:<dns-label>Service adı biçimini kullanmalıdır; başlatma türetilen Service URL'sini raporlar.tailscale.preserveFunnel:trueolduğunda vetailscale.mode = "serve"iken OpenClaw, başlangıçta Serve'i yeniden uygulamadan öncetailscale funnel statuskontrol eder ve harici olarak yapılandırılmış bir Funnel rotası Gateway portunu zaten kapsıyorsa bunu atlar. Varsayılanfalse.controlUi.allowedOrigins: Gateway WebSocket bağlantıları için açık tarayıcı origin allowlist'i. Genel loopback olmayan tarayıcı origin'leri için zorunludur. Loopback, RFC1918/link-local,.local,.ts.netveya Tailscale CGNAT host'larından yüklenen özel same-origin LAN/Tailnet UI'ları, Host-header fallback etkinleştirilmeden kabul edilir.controlUi.chatMessageMaxWidth: gruplanmış Control UI sohbet mesajları için isteğe bağlı max-width.960px,82%,min(1280px, 82%)vecalc(100% - 2rem)gibi kısıtlı CSS genişlik değerlerini kabul eder.controlUi.dangerouslyAllowHostHeaderOriginFallback: bilinçli olarak Host-header origin ilkesine dayanan dağıtımlar için Host-header origin fallback'i etkinleştiren tehlikeli mod.remote.transport:ssh(varsayılan) veyadirect(ws/wss).directiçin, genel host'lardaremote.urlwss://olmalıdır; düz metinws://yalnızca loopback, LAN, link-local,.local,.ts.netve Tailscale CGNAT host'ları için kabul edilir.remote.remotePort: uzak SSH host'undaki Gateway portu. Varsayılan18789; yerel tünel portu uzak Gateway portundan farklı olduğunda bunu kullanın.remote.sshHostKeyPolicy: macOS SSH tüneli host-key ilkesi.strictvarsayılandır ve zaten güvenilen bir anahtar gerektirir.openssh, yönetilen takma adlar için etkin OpenSSH yapılandırmasına açık opt-in'dir; kullanmadan önce eşleşen kullanıcı ve sistem SSH ayarlarını gözden geçirin. macOS uygulaması veconfigure-remote, hedefleri değiştirirken açıkça yeniden opt-in yapılmadığı sürece bu ilkeyistrictolarak sıfırlar.gateway.remote.token/.passworduzak istemci kimlik bilgisi alanlarıdır. Kendi başlarına Gateway kimlik doğrulamasını yapılandırmazlar.gateway.push.apns.relay.baseUrl: relay destekli iOS build'leri kayıtları Gateway'e yayımladıktan sonra kullanılan harici APNs relay için temel HTTPS URL'si. Genel App Store build'leri barındırılan OpenClaw relay'ini kullanır. Özel relay URL'leri, relay URL'si o relay'i işaret eden bilinçli olarak ayrı bir iOS build/dağıtım yoluyla eşleşmelidir.gateway.push.apns.relay.timeoutMs: Gateway'den relay'e gönderim zaman aşımı, milisaniye cinsinden. Varsayılan10000.- Relay destekli kayıtlar belirli bir Gateway kimliğine devredilir. Eşleştirilmiş iOS uygulaması
gateway.identity.getgetirir, relay kaydına bu kimliği dahil eder ve kayıt kapsamlı bir gönderim iznini Gateway'e iletir. Başka bir Gateway bu saklanan kaydı yeniden kullanamaz. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: yukarıdaki relay yapılandırması için geçici env override'ları.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: loopback HTTP relay URL'leri için yalnızca geliştirme amaçlı kaçış yolu. Üretim relay URL'leri HTTPS üzerinde kalmalıdır.gateway.handshakeTimeoutMs: kimlik doğrulama öncesi Gateway WebSocket handshake zaman aşımı, milisaniye cinsinden. Varsayılan:15000. AyarlandığındaOPENCLAW_HANDSHAKE_TIMEOUT_MSönceliklidir. Yerel istemcilerin bağlanabildiği ancak başlangıç warmup'ının hâlâ oturduğu yüklü veya düşük güçlü host'larda bunu artırın.gateway.channelHealthCheckMinutes: kanal health-monitor aralığı, dakika cinsinden. Health-monitor yeniden başlatmalarını global olarak devre dışı bırakmak için0ayarlayın. Varsayılan:5.gateway.channelStaleEventThresholdMinutes: stale-socket eşiği, dakika cinsinden. Bunugateway.channelHealthCheckMinutesdeğerinden büyük veya ona eşit tutun. Varsayılan:30.gateway.channelMaxRestartsPerHour: kayan bir saat içinde kanal/hesap başına maksimum health-monitor yeniden başlatması. Varsayılan:10.channels.<provider>.healthMonitor.enabled: global monitor etkin kalırken health-monitor yeniden başlatmaları için kanal bazında opt-out.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: çok hesaplı kanallar için hesap bazında override. Ayarlandığında kanal düzeyi override'a göre öncelikli olur.- Yerel Gateway çağrı yolları, yalnızca
gateway.auth.*ayarlanmamışsa fallback olarakgateway.remote.*kullanabilir. gateway.auth.token/gateway.auth.passwordSecretRef üzerinden açıkça yapılandırılmışsa ve çözümlenemiyorsa, çözümleme kapalı biçimde başarısız olur (uzak fallback maskelemesi olmaz).trustedProxies: TLS'i sonlandıran veya forwarded-client başlıkları enjekte eden reverse proxy IP'leri. Yalnızca kontrol ettiğiniz proxy'leri listeleyin. Loopback girdileri aynı host proxy/local-detection kurulumları için hâlâ geçerlidir (örneğin Tailscale Serve veya yerel reverse proxy), ancak loopback isteklerinigateway.auth.mode: "trusted-proxy"için uygun hale getirmez.allowRealIpFallback:trueolduğunda Gateway,X-Forwarded-ForeksikseX-Real-IPkabul eder. Fail-closed davranış için varsayılanfalse.gateway.nodes.pairing.autoApproveCidrs: istenen kapsam olmadan ilk kez node cihaz eşleştirmesini otomatik onaylamak için isteğe bağlı CIDR/IP allowlist'i. Ayarlanmamışsa devre dışıdır. Bu, operatör/tarayıcı/Control UI/WebChat eşleştirmesini otomatik onaylamaz ve rol, kapsam, metadata veya public-key yükseltmelerini otomatik onaylamaz.gateway.nodes.allowCommands/gateway.nodes.denyCommands: eşleştirme ve platform allowlist değerlendirmesinden sonra bildirilen node komutları için global allow/deny şekillendirmesi.camera.snap,camera.clipvescreen.recordgibi tehlikeli node komutlarına opt-in yapmak içinallowCommandskullanın;denyCommands, bir platform varsayılanı veya açık izin aksi halde komutu dahil edecek olsa bile komutu kaldırır. Bir node bildirdiği komut listesini değiştirdikten sonra, Gateway'in güncellenmiş komut snapshot'ını saklaması için o cihaz eşleştirmesini reddedip yeniden onaylayın.gateway.tools.deny: HTTPPOST /tools/invokeiçin engellenen ek araç adları (varsayılan deny listesini genişletir).gateway.tools.allow: owner/admin çağıranları için varsayılan HTTP deny listesinden araç adlarını kaldırır. Bu, kimlik taşıyanoperator.writeçağıranlarını owner/admin erişimine yükseltmez;cron,gatewayvenodes, allowlist'e alınsa bile owner olmayan çağıranlar için kullanılamaz kalır.
OpenAI uyumlu uç noktalar
- Admin HTTP RPC: varsayılan olarak
admin-http-rpcPlugin'i olarak kapalıdır.POST /api/v1/admin/rpckaydetmek için Plugin'i etkinleştirin. Bkz. Admin HTTP RPC. - Chat Completions: varsayılan olarak devre dışıdır.
gateway.http.endpoints.chatCompletions.enabled: trueile etkinleştirin. - Responses API:
gateway.http.endpoints.responses.enabled. - Responses URL girdisi sertleştirmesi:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistBoş allowlist'ler ayarlanmamış kabul edilir; URL getirmeyi devre dışı bırakmak içingateway.http.endpoints.responses.files.allowUrl=falseve/veyagateway.http.endpoints.responses.images.allowUrl=falsekullanın.
- İsteğe bağlı yanıt sertleştirme başlığı:
gateway.http.securityHeaders.strictTransportSecurity(yalnızca kontrol ettiğiniz HTTPS origin'leri için ayarlayın; bkz. Trusted Proxy Auth)
Çoklu instance izolasyonu
Tek bir host üzerinde benzersiz portlar ve state dir'leriyle birden fazla Gateway çalıştırın:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \OPENCLAW_STATE_DIR=~/.openclaw-a \openclaw gateway --port 19001Kolaylık flag'leri: --dev (~/.openclaw-dev + port 19001 kullanır), --profile <name> (~/.openclaw-<name> kullanır).
Bkz. Multiple Gateways.
gateway.tls
{ gateway: { tls: { enabled: false, autoGenerate: false, certPath: "/etc/openclaw/tls/server.crt", keyPath: "/etc/openclaw/tls/server.key", caPath: "/etc/openclaw/tls/ca-bundle.crt", }, },}enabled: Gateway listener'da TLS sonlandırmasını etkinleştirir (HTTPS/WSS) (varsayılan:false).autoGenerate: açık dosyalar yapılandırılmadığında yerel self-signed cert/key çifti otomatik üretir; yalnızca yerel/dev kullanım içindir.certPath: TLS sertifika dosyasının dosya sistemi yolu.keyPath: TLS özel anahtar dosyasının dosya sistemi yolu; izinleri kısıtlı tutun.caPath: istemci doğrulaması veya özel güven zincirleri için isteğe bağlı CA bundle yolu.
gateway.reload
{ gateway: { reload: { mode: "hybrid", // off | restart | hot | hybrid debounceMs: 500, deferralTimeoutMs: 300000, }, },}mode: yapılandırma düzenlemelerinin çalışma zamanında nasıl uygulandığını denetler."off": canlı düzenlemeleri yok say; değişiklikler açık bir yeniden başlatma gerektirir."restart": yapılandırma değiştiğinde Gateway işlemini her zaman yeniden başlat."hot": değişiklikleri yeniden başlatmadan işlem içinde uygula."hybrid"(varsayılan): önce sıcak yeniden yüklemeyi dene; gerekiyorsa yeniden başlatmaya geri dön.
debounceMs: yapılandırma değişiklikleri uygulanmadan önce ms cinsinden debounce penceresi (negatif olmayan tam sayı).deferralTimeoutMs: yeniden başlatmayı veya kanal sıcak yeniden yüklemesini zorlamadan önce devam eden işlemler için beklenecek ms cinsinden isteğe bağlı azami süre. Varsayılan sınırlı beklemeyi (300000) kullanmak için bunu atlayın; süresiz beklemek ve düzenli olarak hâlâ beklemede uyarıları günlüğe yazmak için0olarak ayarlayın.
Hook'lar
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", maxBodyBytes: 262144, defaultSessionKey: "hook:ingress", allowRequestSessionKey: true, allowedSessionKeyPrefixes: ["hook:", "hook:gmail:"], allowedAgentIds: ["hooks", "main"], presets: ["gmail"], transformsDir: "~/.openclaw/hooks/transforms", mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "hooks", wakeMode: "now", name: "Gmail", sessionKey: "hook:gmail:{{messages[0].id}}", messageTemplate: "From: {{messages[0].from}}\nSubject: {{messages[0].subject}}\n{{messages[0].snippet}}", deliver: true, channel: "last", model: "openai/gpt-5.4-mini", }, ], },}Kimlik doğrulama: Authorization: Bearer <token> veya x-openclaw-token: <token>.
Sorgu dizesi hook token'ları reddedilir.
Doğrulama ve güvenlik notları:
hooks.enabled=true, boş olmayan birhooks.tokengerektirir.hooks.token, etkin Gateway paylaşılan gizli kimlik doğrulamasından (gateway.auth.token/OPENCLAW_GATEWAY_TOKENveyagateway.auth.password/OPENCLAW_GATEWAY_PASSWORD) farklı olmalıdır; başlangıç, yeniden kullanım algıladığında ölümcül olmayan bir güvenlik uyarısı günlüğe yazar.openclaw security audit, yalnızca denetim zamanında sağlanan Gateway parola kimlik doğrulaması (--auth password --password <password>) dahil olmak üzere hook/Gateway kimlik doğrulaması yeniden kullanımını kritik bulgu olarak işaretler. Kalıcı olarak saklanan yeniden kullanılmış birhooks.tokendeğerini döndürmek içinopenclaw doctor --fixçalıştırın, ardından harici hook göndericilerini yeni hook token'ını kullanacak şekilde güncelleyin.hooks.path,/olamaz;/hooksgibi ayrılmış bir alt yol kullanın.hooks.allowRequestSessionKey=trueisehooks.allowedSessionKeyPrefixesdeğerini kısıtlayın (örneğin["hook:"]).- Bir eşleme veya preset şablonlu bir
sessionKeykullanıyorsahooks.allowedSessionKeyPrefixesdeğerini ayarlayın vehooks.allowRequestSessionKey=trueyapın. Statik eşleme anahtarları bu açık katılımı gerektirmez.
Uç noktalar:
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }- İstek yükünden gelen
sessionKeyyalnızcahooks.allowRequestSessionKey=trueolduğunda kabul edilir (varsayılan:false).
- İstek yükünden gelen
POST /hooks/<name>→hooks.mappingsüzerinden çözümlenir- Şablondan işlenen eşleme
sessionKeydeğerleri harici olarak sağlanmış kabul edilir ve ayrıcahooks.allowRequestSessionKey=truegerektirir.
- Şablondan işlenen eşleme
Eşleme ayrıntıları
match.path,/hookssonrasındaki alt yolla eşleşir (örn./hooks/gmail→gmail).match.source, genel yollar için bir yük alanıyla eşleşir.{{messages[0].subject}}gibi şablonlar yükten okur.transform, bir hook eylemi döndüren bir JS/TS modülüne işaret edebilir.transform.modulegöreli bir yol olmalı vehooks.transformsDiriçinde kalmalıdır (mutlak yollar ve dizin aşımı reddedilir).hooks.transformsDirdeğerini~/.openclaw/hooks/transformsaltında tutun; çalışma alanı skill dizinleri reddedilir.openclaw doctorbu yolu geçersiz olarak bildirirse dönüştürme modülünü hooks dönüştürme dizinine taşıyın veyahooks.transformsDirdeğerini kaldırın.agentId, belirli bir ajana yönlendirir; bilinmeyen kimlikler varsayılan ajana geri döner.allowedAgentIds:agentIdatlandığında varsayılan ajan yolu dahil olmak üzere etkin ajan yönlendirmesini kısıtlar (*veya atlanmış = tümüne izin ver,[]= tümünü reddet).defaultSessionKey: açıksessionKeyolmadan hook ajan çalıştırmaları için isteğe bağlı sabit oturum anahtarı.allowRequestSessionKey:/hooks/agentçağıranlarının ve şablon güdümlü eşleme oturum anahtarlarınınsessionKeyayarlamasına izin verir (varsayılan:false).allowedSessionKeyPrefixes: açıksessionKeydeğerleri (istek + eşleme) için isteğe bağlı önek izin listesi, örn.["hook:"]. Herhangi bir eşleme veya preset şablonlusessionKeykullandığında zorunlu hale gelir.deliver: true, son yanıtı bir kanala gönderir;channelvarsayılan olaraklastdeğerine ayarlanır.model, bu hook çalıştırması için LLM'yi geçersiz kılar (model kataloğu ayarlanmışsa izin verilmiş olmalıdır).
Gmail entegrasyonu
- Yerleşik Gmail preset'i
sessionKey: "hook:gmail:{{messages[0].id}}"kullanır. - Bu ileti başına yönlendirmeyi korursanız
hooks.allowRequestSessionKey: trueayarlayın vehooks.allowedSessionKeyPrefixesdeğerini Gmail ad alanıyla eşleşecek şekilde kısıtlayın; örneğin["hook:", "hook:gmail:"]. hooks.allowRequestSessionKey: falsegerekiyorsa preset'i şablonlu varsayılan yerine statik birsessionKeyile geçersiz kılın.
{ hooks: { gmail: { account: "openclaw@gmail.com", topic: "projects/<project-id>/topics/gog-gmail-watch", subscription: "gog-gmail-watch-push", pushToken: "shared-push-token", hookUrl: "http://127.0.0.1:18789/hooks/gmail", includeBody: true, maxBytes: 20000, renewEveryMinutes: 720, serve: { bind: "127.0.0.1", port: 8788, path: "/" }, tailscale: { mode: "funnel", path: "/gmail-pubsub" }, model: "openrouter/meta-llama/llama-3.3-70b-instruct:free", thinking: "off", }, },}- Gateway, yapılandırıldığında başlangıçta
gog gmail watch servekomutunu otomatik başlatır. Devre dışı bırakmak içinOPENCLAW_SKIP_GMAIL_WATCHER=1ayarlayın. - Gateway ile birlikte ayrı bir
gog gmail watch serveçalıştırmayın.
Canvas Plugin ana bilgisayarı
{ plugins: { entries: { canvas: { config: { host: { root: "~/.openclaw/workspace/canvas", liveReload: true, // enabled: false, // or OPENCLAW_SKIP_CANVAS_HOST=1 }, }, }, }, },}- Ajan tarafından düzenlenebilir HTML/CSS/JS ve A2UI'yi Gateway bağlantı noktası altında HTTP üzerinden sunar:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Yalnızca yerel:
gateway.bind: "loopback"değerini koruyun (varsayılan). - local loopback olmayan bağlamalar: canvas rotaları, diğer Gateway HTTP yüzeyleriyle aynı şekilde Gateway kimlik doğrulaması (token/parola/güvenilir proxy) gerektirir.
- Node WebView'ları genellikle kimlik doğrulama üstbilgileri göndermez; bir node eşleştirilip bağlandıktan sonra Gateway, canvas/A2UI erişimi için node kapsamlı yetenek URL'lerini duyurur.
- Yetenek URL'leri etkin node WS oturumuna bağlıdır ve hızla sona erer. IP tabanlı geri dönüş kullanılmaz.
- Sunulan HTML'ye canlı yeniden yükleme istemcisi enjekte eder.
- Boş olduğunda başlangıç
index.htmldosyasını otomatik oluşturur. - Ayrıca A2UI'yi
/__openclaw__/a2ui/altında sunar. - Değişiklikler Gateway yeniden başlatması gerektirir.
- Büyük dizinler veya
EMFILEhataları için canlı yeniden yüklemeyi devre dışı bırakın.
Keşif
mDNS (Bonjour)
{ discovery: { mdns: { mode: "minimal", // minimal | full | off }, },}minimal(yerleşikbonjourPlugin etkin olduğunda varsayılan): TXT kayıtlarındancliPath+sshPortdeğerlerini çıkarır.full:cliPath+sshPortdeğerlerini dahil eder; LAN çok noktaya yayın duyurusu yine de yerleşikbonjourPlugin'in etkin olmasını gerektirir.off: Plugin etkinliğini değiştirmeden LAN çok noktaya yayın duyurusunu bastırır.- Yerleşik
bonjourPlugin macOS ana bilgisayarlarında otomatik başlar; Linux, Windows ve kapsayıcılı Gateway dağıtımlarında açık katılımlıdır. - Ana bilgisayar adı, geçerli bir DNS etiketi olduğunda varsayılan olarak sistem ana bilgisayar adına ayarlanır; aksi halde
openclawdeğerine geri döner.OPENCLAW_MDNS_HOSTNAMEile geçersiz kılın.
Geniş alan (DNS-SD)
{ discovery: { wideArea: { enabled: true }, },}~/.openclaw/dns/ altında tek noktaya yayın DNS-SD bölgesi yazar. Ağlar arası keşif için bir DNS sunucusu (CoreDNS önerilir) + Tailscale bölünmüş DNS ile eşleştirin.
Kurulum: openclaw dns setup --apply.
Ortam
env (satır içi ortam değişkenleri)
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-...", }, shellEnv: { enabled: true, timeoutMs: 15000, }, },}- Satır içi ortam değişkenleri yalnızca işlem ortamında anahtar eksikse uygulanır.
.envdosyaları: CWD.env+~/.openclaw/.env(hiçbiri mevcut değişkenleri geçersiz kılmaz).shellEnv: eksik beklenen anahtarları oturum açma kabuğu profilinizden içe aktarır.- Tam öncelik sırası için Ortam bölümüne bakın.
Ortam değişkeni ikamesi
Herhangi bir yapılandırma dizesinde ${VAR_NAME} ile ortam değişkenlerine başvurun:
{ gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" }, },}- Yalnızca büyük harfli adlar eşleşir:
[A-Z_][A-Z0-9_]*. - Eksik/boş değişkenler yapılandırma yüklenirken hata fırlatır.
- Değişmez
${VAR}için$${VAR}ile kaçış yapın. $includeile çalışır.
Gizli bilgiler
Gizli bilgi başvuruları eklemelidir: düz metin değerler hâlâ çalışır.
SecretRef
Tek bir nesne biçimi kullanın:
{ source: "env" | "file" | "exec", provider: "default", id: "..." }Doğrulama:
providerdeseni:^[a-z][a-z0-9_-]{0,63}$source: "env"kimlik deseni:^[A-Z][A-Z0-9_]{0,127}$source: "file"kimliği: mutlak JSON işaretçisi (örneğin"/providers/openai/apiKey")source: "exec"kimlik deseni:^[A-Za-z0-9][A-Za-z0-9._:/#-]{0,255}$(AWS tarzısecret#json_keyseçicilerini destekler)source: "exec"kimlikleri.veya..eğik çizgiyle ayrılmış yol segmentleri içermemelidir (örneğina/../breddedilir)
Desteklenen kimlik bilgisi yüzeyi
- Kanonik matris: SecretRef Kimlik Bilgisi Yüzeyi
secrets apply, desteklenenopenclaw.jsonkimlik bilgisi yollarını hedefler.auth-profiles.jsonbaşvuruları çalışma zamanı çözümlemesine ve denetim kapsamına dahildir.
Gizli bilgi sağlayıcıları yapılandırması
{ secrets: { providers: { default: { source: "env" }, // optional explicit env provider filemain: { source: "file", path: "~/.openclaw/secrets.json", mode: "json", timeoutMs: 5000, }, vault: { source: "exec", command: "/usr/local/bin/openclaw-vault-resolver", passEnv: ["PATH", "VAULT_ADDR"], }, }, defaults: { env: "default", file: "filemain", exec: "vault", }, },}Notlar:
filesağlayıcısımode: "json"vemode: "singleValue"değerlerini destekler (id, singleValue modunda"value"olmalıdır).- Windows ACL doğrulaması kullanılamadığında dosya ve exec sağlayıcı yolları kapalı başarısız olur.
allowInsecurePath: truedeğerini yalnızca doğrulanamayan güvenilir yollar için ayarlayın. execsağlayıcısı mutlak bircommandyolu gerektirir ve stdin/stdout üzerinde protokol yükleri kullanır.- Varsayılan olarak sembolik bağlantı komut yolları reddedilir. Çözümlenen hedef yolu doğrulanırken sembolik bağlantı yollarına izin vermek için
allowSymlinkCommand: trueayarlayın. trustedDirsyapılandırılmışsa güvenilir dizin denetimi çözümlenen hedef yola uygulanır.execalt ortamı varsayılan olarak minimaldir; gerekli değişkenleripassEnvile açıkça geçirin.- Gizli bilgi başvuruları etkinleştirme zamanında bellek içi bir anlık görüntüye çözümlenir; ardından istek yolları yalnızca anlık görüntüyü okur.
- Etkin yüzey filtreleme etkinleştirme sırasında uygulanır: etkin yüzeylerdeki çözümlenmemiş başvurular başlangıç/yeniden yüklemeyi başarısız kılar, etkin olmayan yüzeyler ise tanılamalarla atlanır.
Kimlik doğrulama depolaması
{ auth: { profiles: { "anthropic:default": { provider: "anthropic", mode: "api_key" }, "anthropic:work": { provider: "anthropic", mode: "api_key" }, "openai:personal": { provider: "openai", mode: "oauth" }, }, order: { anthropic: ["anthropic:default", "anthropic:work"], openai: ["openai:personal"], }, },}- Ajan başına profiller
<agentDir>/auth-profiles.jsonkonumunda saklanır. auth-profiles.json, statik kimlik bilgisi modları için değer düzeyinde başvuruları (api_keyiçinkeyRef,tokeniçintokenRef) destekler.{ "provider": { "apiKey": "..." } }gibi eski düzauth-profiles.jsoneşlemeleri çalışma zamanı biçimi değildir;openclaw doctor --fixbunları.legacy-flat.*.bakyedeğiyle kanonikprovider:defaultAPI anahtarı profillerine yeniden yazar.- OAuth modu profilleri (
auth.profiles.<id>.mode = "oauth"), SecretRef destekli auth-profile kimlik bilgilerini desteklemez. - Statik çalışma zamanı kimlik bilgileri, bellekte çözümlenmiş anlık görüntülerden gelir; eski statik
auth.jsongirdileri keşfedildiğinde temizlenir. - Eski OAuth içe aktarmaları
~/.openclaw/credentials/oauth.jsonkonumundan yapılır. - Bkz. OAuth.
- Secrets çalışma zamanı davranışı ve
audit/configure/applyaraçları: Secrets Yönetimi.
auth.cooldowns
{ auth: { cooldowns: { billingBackoffHours: 5, billingBackoffHoursByProvider: { anthropic: 3, openai: 8 }, billingMaxHours: 24, authPermanentBackoffMinutes: 10, authPermanentMaxMinutes: 60, failureWindowHours: 24, overloadedProfileRotations: 1, overloadedBackoffMs: 0, rateLimitedProfileRotations: 1, }, },}billingBackoffHours: bir profil gerçek faturalandırma/yetersiz kredi hataları nedeniyle başarısız olduğunda saat cinsinden temel geri çekilme süresi (varsayılan:5). Açık faturalandırma metni,401/403yanıtlarında bile buraya düşebilir, ancak sağlayıcıya özgü metin eşleştiricileri onları sahiplenen sağlayıcıyla sınırlı kalır (örneğin OpenRouterKey limit exceeded). Yeniden denenebilir HTTP402kullanım penceresi veya kuruluş/çalışma alanı harcama limiti iletileri bunun yerinerate_limityolunda kalır.billingBackoffHoursByProvider: faturalandırma geri çekilme saatleri için isteğe bağlı sağlayıcı başına geçersiz kılmalar.billingMaxHours: faturalandırma geri çekilmesinin üstel büyümesi için saat cinsinden üst sınır (varsayılan:24).authPermanentBackoffMinutes: yüksek güvenilirlikliauth_permanenthataları için dakika cinsinden temel geri çekilme süresi (varsayılan:10).authPermanentMaxMinutes:auth_permanentgeri çekilme büyümesi için dakika cinsinden üst sınır (varsayılan:60).failureWindowHours: geri çekilme sayaçları için kullanılan saat cinsinden kayan pencere (varsayılan:24).overloadedProfileRotations: model geri dönüşüne geçmeden önce aşırı yüklenme hataları için aynı sağlayıcıdaki auth-profile rotasyonlarının en yüksek sayısı (varsayılan:1).ModelNotReadyExceptiongibi sağlayıcı meşgul şekilleri buraya düşer.overloadedBackoffMs: aşırı yüklenmiş bir sağlayıcı/profil rotasyonunu yeniden denemeden önceki sabit gecikme (varsayılan:0).rateLimitedProfileRotations: model geri dönüşüne geçmeden önce hız sınırı hataları için aynı sağlayıcıdaki auth-profile rotasyonlarının en yüksek sayısı (varsayılan:1). Bu hız sınırı kovasıToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededveresource exhaustedgibi sağlayıcı biçimli metinleri içerir.
Günlük Kaydı
{ logging: { level: "info", file: "/tmp/openclaw/openclaw.log", consoleLevel: "info", consoleStyle: "pretty", // pretty | compact | json redactSensitive: "tools", // off | tools redactPatterns: ["\\bTOKEN\\b\\s*[=:]\\s*([\"']?)([^\\s\"']+)\\1"], },}- Varsayılan günlük dosyası:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Kararlı bir yol için
logging.fileayarlayın. --verbosekullanıldığındaconsoleLevel,debugdeğerine yükselir.maxFileBytes: döndürmeden önce etkin günlük dosyasının bayt cinsinden en büyük boyutu (pozitif tam sayı; varsayılan:104857600= 100 MB). OpenClaw, etkin dosyanın yanında en fazla beş numaralı arşiv tutar.redactSensitive/redactPatterns: konsol çıktısı, dosya günlükleri, OTLP günlük kayıtları ve kalıcı oturum dökümü metni için en iyi çaba maskeleme.redactSensitive: "off"yalnızca bu genel günlük/döküm politikasını devre dışı bırakır; UI/araç/tanı güvenliği yüzeyleri, yaymadan önce sırları yine de redakte eder.
Tanılama
{ diagnostics: { enabled: true, flags: ["telegram.*"], stuckSessionWarnMs: 30000, stuckSessionAbortMs: 300000, memoryPressureSnapshot: false, otel: { enabled: false, endpoint: "https://otel-collector.example.com:4318", tracesEndpoint: "https://traces.example.com/v1/traces", metricsEndpoint: "https://metrics.example.com/v1/metrics", logsEndpoint: "https://logs.example.com/v1/logs", protocol: "http/protobuf", // http/protobuf | grpc headers: { "x-tenant-id": "my-org" }, serviceName: "openclaw-gateway", traces: true, metrics: true, logs: false, logsExporter: "otlp", sampleRate: 1.0, flushIntervalMs: 5000, captureContent: { enabled: false, inputMessages: false, outputMessages: false, toolInputs: false, toolOutputs: false, systemPrompt: false, toolDefinitions: false, }, }, cacheTrace: { enabled: false, filePath: "~/.openclaw/logs/cache-trace.jsonl", includeMessages: true, includePrompt: true, includeSystem: true, }, },}enabled: enstrümantasyon çıktısı için ana anahtar (varsayılan:true).flags: hedefli günlük çıktısını etkinleştiren bayrak dizeleri dizisi ("telegram.*"veya"*"gibi joker karakterleri destekler).stuckSessionWarnMs: uzun süren işleme oturumlarınısession.long_running,session.stalledveyasession.stuckolarak sınıflandırmak için ms cinsinden ilerleme olmaması yaşı eşiği. Yanıt, araç, durum, blok ve ACP ilerlemesi zamanlayıcıyı sıfırlar; tekrarlanansession.stucktanılamaları değişiklik olmadığında geri çekilir.stuckSessionAbortMs: kurtarma için uygun durmuş etkin işlerin abort-drain uygulanmasından önce ms cinsinden ilerleme olmaması yaşı eşiği. Ayarlanmadığında OpenClaw, en az 5 dakika ve 3xstuckSessionWarnMsdeğerindeki daha güvenli genişletilmiş gömülü çalışma penceresini kullanır.memoryPressureSnapshot: bellek baskısıcriticaldüzeyine ulaştığında redakte edilmiş OOM öncesi kararlılık anlık görüntüsü yakalar (varsayılan:false). Normal bellek baskısı olaylarını korurken kararlılık paketi dosya tarama/yazmasını eklemek içintrueolarak ayarlayın.otel.enabled: OpenTelemetry dışa aktarma işlem hattını etkinleştirir (varsayılan:false). Tam yapılandırma, sinyal kataloğu ve gizlilik modeli için bkz. OpenTelemetry dışa aktarma.otel.endpoint: OTel dışa aktarımı için toplayıcı URL’si.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: isteğe bağlı sinyale özgü OTLP uç noktaları. Ayarlandığında, yalnızca ilgili sinyal içinotel.endpointdeğerini geçersiz kılarlar.otel.protocol:"http/protobuf"(varsayılan) veya"grpc".otel.headers: OTel dışa aktarma istekleriyle gönderilen ek HTTP/gRPC meta veri başlıkları.otel.serviceName: kaynak öznitelikleri için hizmet adı.otel.traces/otel.metrics/otel.logs: iz, metrik veya günlük dışa aktarımını etkinleştirir.otel.logsExporter: günlük dışa aktarma hedefi:"otlp"(varsayılan), stdout satırı başına bir JSON nesnesi için"stdout"veya"both".otel.sampleRate: iz örnekleme oranı0-1.otel.flushIntervalMs: ms cinsinden periyodik telemetri boşaltma aralığı.otel.captureContent: OTEL span öznitelikleri için açık onaylı ham içerik yakalama. Varsayılan olarak kapalıdır. Booletrue, sistem dışı ileti/araç içeriğini yakalar; nesne biçimiinputMessages,outputMessages,toolInputs,toolOutputs,systemPromptvetoolDefinitionsdeğerlerini açıkça etkinleştirmenizi sağlar.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental:{gen_ai.operation.name} {gen_ai.request.model}span adları,CLIENTspan türü ve eskigen_ai.systemyerinegen_ai.provider.namedahil olmak üzere en yeni deneysel GenAI çıkarım span şekli için ortam anahtarı. Varsayılan olarak span’ler uyumluluk içinopenclaw.model.callvegen_ai.systemdeğerlerini korur; GenAI metrikleri sınırlı semantik öznitelikler kullanır.OPENCLAW_OTEL_PRELOADED=1: zaten global bir OpenTelemetry SDK kaydetmiş ana makineler için ortam anahtarı. OpenClaw, tanılama dinleyicilerini etkin tutarken Plugin sahipli SDK başlatma/kapatma adımlarını atlar.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINTveOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: eşleşen yapılandırma anahtarı ayarlanmadığında kullanılan sinyale özgü uç nokta ortam değişkenleri.cacheTrace.enabled: gömülü çalışmalar için önbellek izleme anlık görüntülerini günlüğe kaydeder (varsayılan:false).cacheTrace.filePath: önbellek izleme JSONL çıktısı için çıktı yolu (varsayılan:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: önbellek izleme çıktısına nelerin dahil edileceğini denetler (tümünün varsayılanı:true).
Güncelleme
{ update: { channel: "stable", // stable | beta | dev checkOnStart: true, auto: { enabled: false, stableDelayHours: 6, stableJitterHours: 12, betaCheckIntervalHours: 1, }, },}channel: npm/git kurulumları için sürüm kanalı -"stable","beta"veya"dev".checkOnStart: gateway başlatıldığında npm güncellemelerini denetler (varsayılan:true).auto.enabled: paket kurulumları için arka planda otomatik güncellemeyi etkinleştirir (varsayılan:false).auto.stableDelayHours: stable kanalında otomatik uygulamadan önce saat cinsinden en düşük gecikme (varsayılan:6; en yüksek:168).auto.stableJitterHours: saat cinsinden ek stable kanal dağıtım yayılım penceresi (varsayılan:12; en yüksek:168).auto.betaCheckIntervalHours: beta kanal denetimlerinin saat cinsinden ne sıklıkta çalışacağı (varsayılan:1; en yüksek:24).
ACP
{ acp: { enabled: true, dispatch: { enabled: true }, backend: "acpx", defaultAgent: "main", allowedAgents: ["main", "ops"], maxConcurrentSessions: 10, stream: { coalesceIdleMs: 50, maxChunkChars: 1000, repeatSuppression: true, deliveryMode: "live", // live | final_only hiddenBoundarySeparator: "paragraph", // none | space | newline | paragraph maxOutputChars: 50000, maxSessionUpdateChars: 500, }, runtime: { ttlMinutes: 30, }, },}enabled: global ACP özellik kapısı (varsayılan:true; ACP dispatch ve spawn olanaklarını gizlemek içinfalseayarlayın).dispatch.enabled: ACP oturum turu dispatch işlemi için bağımsız kapı (varsayılan:true). Yürütmeyi engellerken ACP komutlarını kullanılabilir tutmak içinfalseayarlayın.backend: varsayılan ACP çalışma zamanı arka uç kimliği (kayıtlı bir ACP çalışma zamanı Plugin ile eşleşmelidir). Önce arka uç Plugin’ini kurun veplugins.allowayarlanmışsa arka uç Plugin kimliğini (örneğinacpx) ekleyin; aksi takdirde ACP arka ucu yüklenmez.defaultAgent: spawn işlemleri açık bir hedef belirtmediğinde yedek ACP hedef ajan kimliği.allowedAgents: ACP çalışma zamanı oturumları için izin verilen ajan kimliklerinin allowlist’i; boş olması ek kısıtlama olmadığı anlamına gelir.maxConcurrentSessions: aynı anda etkin olabilecek en fazla ACP oturumu sayısı.stream.coalesceIdleMs: akışlı metin için ms cinsinden boşta boşaltma penceresi.stream.maxChunkChars: akışlı blok projeksiyonunu bölmeden önceki en büyük parça boyutu.stream.repeatSuppression: tur başına tekrarlanan durum/araç satırlarını bastırır (varsayılan:true).stream.deliveryMode:"live"artımlı olarak akış yapar;"final_only"tur sonlanma olaylarına kadar tamponlar.stream.hiddenBoundarySeparator: gizli araç olaylarından sonra görünür metinden önceki ayırıcı (varsayılan:"paragraph").stream.maxOutputChars: ACP turu başına projekte edilen en fazla asistan çıktı karakteri.stream.maxSessionUpdateChars: projekte edilen ACP durum/güncelleme satırları için en fazla karakter.stream.tagVisibility: akışlı olaylar için etiket adlarından boole görünürlük geçersiz kılmalarına kayıt.runtime.ttlMinutes: ACP oturum çalışanları için uygun temizlemeden önce dakika cinsinden boşta TTL.runtime.installCommand: bir ACP çalışma zamanı ortamını önyüklerken çalıştırılacak isteğe bağlı kurulum komutu.
CLI
{ cli: { banner: { taglineMode: "off", // random | default | off }, },}cli.banner.taglineMode, banner sloganı stilini kontrol eder:"random"(varsayılan): dönüşümlü esprili/mevsimsel sloganlar."default": sabit nötr slogan (All your chats, one OpenClaw.)."off": slogan metni yoktur (banner başlığı/sürümü yine gösterilir).
- Banner'ın tamamını gizlemek için (yalnızca sloganları değil),
OPENCLAW_HIDE_BANNER=1env değerini ayarlayın.
Sihirbaz
CLI rehberli kurulum akışları (onboard, configure, doctor) tarafından yazılan meta veriler:
{ wizard: { lastRunAt: "2026-01-01T00:00:00.000Z", lastRunVersion: "2026.1.4", lastRunCommit: "abc1234", lastRunCommand: "configure", lastRunMode: "local", securityAcknowledgedAt: "2026-01-01T00:00:00.000Z", },}Kimlik
Agent varsayılanları altında agents.list kimlik alanlarına bakın.
Köprü (eski, kaldırıldı)
Güncel derlemeler artık TCP köprüsünü içermez. Node'lar Gateway WebSocket üzerinden bağlanır. bridge.* anahtarları artık yapılandırma şemasının parçası değildir (kaldırılana kadar doğrulama başarısız olur; openclaw doctor --fix bilinmeyen anahtarları çıkarabilir).
Legacy bridge config (historical reference)
{"bridge": { "enabled": true, "port": 18790, "bind": "tailnet", "tls": { "enabled": true, "autoGenerate": true }}}Cron
{ cron: { enabled: true, maxConcurrentRuns: 8, // default; cron dispatch + isolated cron agent-turn execution webhook: "https://example.invalid/legacy", // deprecated fallback for stored notify:true jobs webhookToken: "replace-with-dedicated-token", // optional bearer token for outbound webhook auth sessionRetention: "24h", // duration string or false runLog: { maxBytes: "2mb", // default 2_000_000 bytes keepLines: 2000, // default 2000 }, },}sessionRetention: tamamlanan yalıtılmış cron çalıştırma oturumlarınınsessions.jsoniçinden budanmadan önce ne kadar süre tutulacağını belirtir. Arşivlenmiş silinmiş cron transkriptlerinin temizlenmesini de kontrol eder. Varsayılan:24h; devre dışı bırakmak içinfalseolarak ayarlayın.runLog.maxBytes: eski dosya destekli cron çalıştırma günlükleriyle uyumluluk için kabul edilir. Varsayılan:2_000_000bayt.runLog.keepLines: iş başına tutulan en yeni SQLite çalıştırma geçmişi satırları. Varsayılan:2000.webhookToken: cron Webhook POST teslimi (delivery.mode = "webhook") için kullanılan bearer token; atlanırsa kimlik doğrulama başlığı gönderilmez.webhook: hâlânotify: trueiçeren depolanmış işleri taşımak içinopenclaw doctor --fixtarafından kullanılan, kullanımdan kaldırılmış eski yedek Webhook URL'si (http/https); çalışma zamanı teslimi, iş başınadelivery.mode="webhook"iledelivery.todeğerini veya duyuru teslimini korurkendelivery.completionDestinationdeğerini kullanır.
cron.retry
{ cron: { retry: { maxAttempts: 3, backoffMs: [30000, 60000, 300000], retryOn: ["rate_limit", "overloaded", "network", "timeout", "server_error"], }, },}maxAttempts: geçici hatalarda cron işleri için en fazla yeniden deneme sayısı (varsayılan:3; aralık:0-10).backoffMs: her yeniden deneme girişimi için ms cinsinden geri çekilme gecikmeleri dizisi (varsayılan:[30000, 60000, 300000]; 1-10 giriş).retryOn: yeniden denemeleri tetikleyen hata türleri -"rate_limit","overloaded","network","timeout","server_error". Tüm geçici türleri yeniden denemek için atlayın.
Tek seferlik işler, yeniden deneme girişimleri tükenene kadar etkin kalır; ardından son hata durumunu koruyarak devre dışı kalır. Yinelenen işler, bir sonraki zamanlanmış aralıklarından önce geri çekilme sonrasında yeniden çalışmak için aynı geçici yeniden deneme ilkesini kullanır; kalıcı hatalar veya tükenen geçici yeniden denemeler, hata geri çekilmesiyle normal yinelenen zamanlamaya döner.
cron.failureAlert
{ cron: { failureAlert: { enabled: false, after: 3, cooldownMs: 3600000, includeSkipped: false, mode: "announce", accountId: "main", }, },}enabled: cron işleri için hata uyarılarını etkinleştirir (varsayılan:false).after: bir uyarı tetiklenmeden önceki ardışık hata sayısı (pozitif tam sayı, min:1).cooldownMs: aynı iş için yinelenen uyarılar arasındaki en az milisaniye (negatif olmayan tam sayı).includeSkipped: ardışık atlanan çalıştırmaları uyarı eşiğine dahil eder (varsayılan:false). Atlanan çalıştırmalar ayrı izlenir ve yürütme hatası geri çekilmesini etkilemez.mode: teslim modu -"announce"bir kanal mesajı üzerinden gönderir;"webhook"yapılandırılmış Webhook'a gönderir.accountId: uyarı teslimini kapsamlandırmak için isteğe bağlı hesap veya kanal kimliği.
cron.failureDestination
{ cron: { failureDestination: { mode: "announce", channel: "last", to: "channel:C1234567890", accountId: "main", }, },}- Tüm işler genelinde cron hata bildirimleri için varsayılan hedef.
mode:"announce"veya"webhook"; yeterli hedef verisi mevcut olduğunda varsayılan"announce"olur.channel: duyuru teslimi için kanal geçersiz kılma."last"son bilinen teslim kanalını yeniden kullanır.to: açık duyuru hedefi veya Webhook URL'si. Webhook modu için gereklidir.accountId: teslim için isteğe bağlı hesap geçersiz kılması.- İş başına
delivery.failureDestination, bu genel varsayılanı geçersiz kılar. - Ne genel ne de iş başına hata hedefi ayarlanmışsa, zaten
announceüzerinden teslim eden işler hata durumunda o birincil duyuru hedefine geri döner. delivery.failureDestination, işin birincildelivery.modedeğeri"webhook"değilse yalnızcasessionTarget="isolated"işleri için desteklenir.
Cron İşleri bölümüne bakın. Yalıtılmış cron yürütmeleri arka plan görevleri olarak izlenir.
Medya modeli şablon değişkenleri
tools.media.models[].args içinde genişletilen şablon yer tutucuları:
| Değişken | Açıklama |
|---|---|
{{Body}} |
Gelen mesaj gövdesinin tamamı |
{{RawBody}} |
Ham gövde (geçmiş/gönderen sarmalayıcıları yok) |
{{BodyStripped}} |
Grup bahsetmeleri çıkarılmış gövde |
{{From}} |
Gönderen tanımlayıcısı |
{{To}} |
Hedef tanımlayıcısı |
{{MessageSid}} |
Kanal mesajı kimliği |
{{SessionId}} |
Geçerli oturum UUID'si |
{{IsNewSession}} |
Yeni oturum oluşturulduğunda "true" |
{{MediaUrl}} |
Gelen medya sözde URL'si |
{{MediaPath}} |
Yerel medya yolu |
{{MediaType}} |
Medya türü (görüntü/ses/belge/...) |
{{Transcript}} |
Ses transkripti |
{{Prompt}} |
CLI girişleri için çözümlenmiş medya istemi |
{{MaxChars}} |
CLI girişleri için çözümlenmiş en fazla çıktı karakteri |
{{ChatType}} |
"direct" veya "group" |
{{GroupSubject}} |
Grup konusu (en iyi çaba) |
{{GroupMembers}} |
Grup üyeleri önizlemesi (en iyi çaba) |
{{SenderName}} |
Gönderen görünen adı (en iyi çaba) |
{{SenderE164}} |
Gönderen telefon numarası (en iyi çaba) |
{{Provider}} |
Sağlayıcı ipucu (whatsapp, telegram, discord vb.) |
Yapılandırma include'ları ($include)
Yapılandırmayı birden fazla dosyaya bölün:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/mueller.json5", "./clients/schmidt.json5"], },}Birleştirme davranışı:
- Tek dosya: içeren nesnenin yerine geçer.
- Dosya dizisi: sırayla derin birleştirilir (sonrakiler öncekileri geçersiz kılar).
- Kardeş anahtarlar: include'lardan sonra birleştirilir (include edilen değerleri geçersiz kılar).
- İç içe include'lar: en fazla 10 seviye derinliğe kadar.
- Yollar: include eden dosyaya göre çözümlenir, ancak üst düzey yapılandırma dizininin (
openclaw.jsondosyasınındirnamedeğeri) içinde kalmalıdır. Mutlak/../biçimlerine yalnızca bu sınır içinde çözümlendiklerinde izin verilir. Yollar null bayt içeremez ve çözümlemeden önce ve sonra kesinlikle 4096 karakterden kısa olmalıdır. - OpenClaw'a ait, tek dosyalı bir include ile desteklenen yalnızca bir üst düzey bölümü değiştiren yazmalar, doğrudan o include edilen dosyaya yazılır. Örneğin
plugins install,plugins: { $include: "./plugins.json5" }değeriniplugins.json5içinde günceller veopenclaw.jsondosyasını olduğu gibi bırakır. - Kök include'lar, include dizileri ve kardeş geçersiz kılmaları olan include'lar, OpenClaw'a ait yazmalar için salt okunurdur; bu yazmalar yapılandırmayı düzleştirmek yerine kapalı başarısız olur.
- Hatalar: eksik dosyalar, ayrıştırma hataları, döngüsel include'lar, geçersiz yol biçimi ve aşırı uzunluk için net iletiler.
İlgili: Yapılandırma · Yapılandırma Örnekleri · Doctor