~/.openclaw/openclaw.json.
Het actieve configuratiepad moet een normaal bestand zijn. Gesymlinkte openclaw.json-
indelingen worden niet ondersteund voor schrijfacties die eigendom zijn van OpenClaw; een atomische schrijfaanroep kan
het pad vervangen in plaats van de symlink te behouden. Als je configuratie buiten de
standaard statusmap bewaart, laat OPENCLAW_CONFIG_PATH dan rechtstreeks naar het echte bestand wijzen.
Als het bestand ontbreekt, gebruikt OpenClaw veilige standaardwaarden. Veelvoorkomende redenen om een configuratie toe te voegen:
- Kanalen verbinden en bepalen wie de bot berichten mag sturen
- Modellen, tools, sandboxing of automatisering instellen (cron, hooks)
- Sessies, media, netwerken of UI afstemmen
config.schema.lookup gebruiken voor exacte docs
op veldniveau voordat ze configuratie bewerken. Gebruik deze pagina voor taakgerichte richtlijnen en
Configuratiereferentie voor de bredere
veldenkaart en standaardwaarden.
Minimale configuratie
Configuratie bewerken
- Interactieve wizard
- CLI (one-liners)
- Control UI
- Direct bewerken
Strikte validatie
openclaw config schema print het canonieke JSON Schema dat door Control UI
en validatie wordt gebruikt. config.schema.lookup haalt één padgescope node plus
samenvattingen van kinderen op voor drill-down tooling. Docs-metadata voor velden title/description
wordt doorgegeven via geneste objecten, wildcard- (*), array-item- ([]) en anyOf/
oneOf/allOf-takken. Runtime plugin- en kanaalschema’s worden samengevoegd wanneer het
manifestregister is geladen.
Wanneer validatie mislukt:
- De Gateway start niet op
- Alleen diagnostische opdrachten werken (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Voer
openclaw doctoruit om exacte problemen te zien - Voer
openclaw doctor --fix(of--yes) uit om reparaties toe te passen
openclaw.json
validatie niet doorstaat (inclusief plugin-lokale validatie), mislukt het starten van de Gateway of
wordt het herladen overgeslagen en behoudt de huidige runtime de laatst geaccepteerde configuratie.
Voer openclaw doctor --fix (of --yes) uit om geprefixte/overschreven configuratie te repareren of
de laatst-bekende-goede kopie te herstellen. Promotie naar laatst-bekende-goed wordt overgeslagen wanneer een
kandidaat geredigeerde geheime placeholders bevat, zoals ***.
Veelvoorkomende taken
Een kanaal instellen (WhatsApp, Telegram, Discord, enz.)
Een kanaal instellen (WhatsApp, Telegram, Discord, enz.)
channels.<provider>. Zie de specifieke kanaalpagina voor installatiestappen:- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
Modellen kiezen en configureren
Modellen kiezen en configureren
agents.defaults.modelsdefinieert de modelcatalogus en fungeert als allowlist voor/model;provider/*-vermeldingen filteren/model,/modelsen modelkiezers naar geselecteerde providers, terwijl ze nog steeds dynamische modelontdekking gebruiken.- Gebruik
openclaw config set agents.defaults.models '<json>' --strict-json --mergeom allowlist-vermeldingen toe te voegen zonder bestaande modellen te verwijderen. Gewone vervangingen die vermeldingen zouden verwijderen, worden geweigerd tenzij je--replacedoorgeeft. - Modelrefs gebruiken de indeling
provider/model(bijv.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxbepaalt het verkleinen van transcript-/toolafbeeldingen (standaard1200); lagere waarden verminderen meestal het gebruik van vision-tokens bij runs met veel screenshots.- Zie Models CLI voor het wisselen van modellen in chat en Model Failover voor auth-rotatie en fallbackgedrag.
- Zie Custom providers in de referentie voor aangepaste/zelfgehoste providers.
Bepalen wie de bot berichten mag sturen
Bepalen wie de bot berichten mag sturen
dmPolicy:"pairing"(standaard): onbekende afzenders krijgen een eenmalige koppelcode om goed te keuren"allowlist": alleen afzenders inallowFrom(of de gekoppelde allow-opslag)"open": alle binnenkomende DM’s toestaan (vereistallowFrom: ["*"])"disabled": alle DM’s negeren
groupPolicy + groupAllowFrom of kanaalspecifieke allowlists.Zie de volledige referentie voor details per kanaal.Vermeldingsgating voor groepschats instellen
Vermeldingsgating voor groepschats instellen
- Metadatavermeldingen: native @-vermeldingen (WhatsApp tik-om-te-vermelden, Telegram @bot, enz.)
- Tekstpatronen: veilige regex-patronen in
mentionPatterns - Zichtbare antwoorden:
messages.visibleReplieskan message-tool-verzendingen globaal verplicht maken;messages.groupChat.visibleRepliesoverschrijft dat voor groepen/kanalen. - Zie volledige referentie voor zichtbare-antwoordmodi, overschrijvingen per kanaal en self-chat-modus.
Skills per agent beperken
Skills per agent beperken
agents.defaults.skills voor een gedeelde basislijn en overschrijf daarna specifieke
agents met agents.list[].skills:- Laat
agents.defaults.skillsweg voor standaard onbeperkte skills. - Laat
agents.list[].skillsweg om de standaardwaarden te erven. - Stel
agents.list[].skills: []in voor geen skills. - Zie Skills, Skills-configuratie en de Configuratiereferentie.
Gateway-kanaalgezondheidsbewaking afstemmen
Gateway-kanaalgezondheidsbewaking afstemmen
- Stel
gateway.channelHealthCheckMinutes: 0in om health-monitor-herstarts globaal uit te schakelen. channelStaleEventThresholdMinutesmoet groter zijn dan of gelijk zijn aan het controle-interval.- Gebruik
channels.<provider>.healthMonitor.enabledofchannels.<provider>.accounts.<id>.healthMonitor.enabledom automatische herstarts voor één kanaal of account uit te schakelen zonder de globale monitor uit te schakelen. - Zie Health Checks voor operationeel debuggen en de volledige referentie voor alle velden.
Gateway WebSocket-handshaketime-out afstemmen
Gateway WebSocket-handshaketime-out afstemmen
- Standaard is
15000milliseconden. OPENCLAW_HANDSHAKE_TIMEOUT_MSblijft voorrang hebben voor eenmalige service- of shell-overschrijvingen.- Los bij voorkeur eerst startup-/event-loop-haperingen op; deze knop is voor hosts die gezond zijn maar traag tijdens het opwarmen.
Sessies en resets configureren
Sessies en resets configureren
dmScope:main(gedeeld) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globale standaardinstellingen voor sessierouting die aan threads is gebonden (Discord ondersteunt/focus,/unfocus,/agents,/session idleen/session max-age).- Zie Sessiebeheer voor scoping, identiteitskoppelingen en verzendbeleid.
- Zie volledige referentie voor alle velden.
Sandboxing inschakelen
Sandboxing inschakelen
scripts/sandbox-setup.sh uit, of zie vanuit een npm-installatie de inline docker build-opdracht in Sandboxing § Images en installatie.Zie Sandboxing voor de volledige gids en volledige referentie voor alle opties.Relay-ondersteunde push inschakelen voor officiele iOS-builds
Relay-ondersteunde push inschakelen voor officiele iOS-builds
https://ios-push-relay.openclaw.ai.Aangepaste relay-implementaties vereisen een bewust gescheiden iOS-build-/implementatiepad waarvan de relay-URL overeenkomt met de Gateway-relay-URL. Als je een aangepaste relay-build gebruikt, stel dit dan in de Gateway-configuratie in:- Laat de Gateway
push.test, wake nudges en reconnect wakes verzenden via de externe relay. - Gebruikt een registratiegebonden verzendmachtiging die wordt doorgestuurd door de gekoppelde iOS-app. De Gateway heeft geen implementatiebrede relay-token nodig.
- Bindt elke relay-ondersteunde registratie aan de Gateway-identiteit waarmee de iOS-app is gekoppeld, zodat een andere Gateway de opgeslagen registratie niet opnieuw kan gebruiken.
- Houdt lokale/handmatige iOS-builds op directe APNs. Relay-ondersteunde verzendingen gelden alleen voor officieel gedistribueerde builds die via de relay zijn geregistreerd.
- Moet overeenkomen met de relay-basis-URL die in de iOS-build is ingebakken, zodat registratie- en verzendverkeer dezelfde relay-implementatie bereiken.
- Installeer de officiele iOS-app.
- Optioneel: configureer
gateway.push.apns.relay.baseUrlop de Gateway alleen wanneer je een bewust gescheiden aangepaste relay-build gebruikt. - Koppel de iOS-app aan de Gateway en laat zowel node- als operatorsessies verbinding maken.
- De iOS-app haalt de Gateway-identiteit op, registreert zich bij de relay met App Attest plus de app-bon, en publiceert daarna de relay-ondersteunde
push.apns.register-payload naar de gekoppelde Gateway. - De Gateway slaat de relay-handle en verzendmachtiging op en gebruikt deze daarna voor
push.test, wake nudges en reconnect wakes.
- Als je de iOS-app naar een andere Gateway overschakelt, verbind de app dan opnieuw zodat deze een nieuwe relay-registratie kan publiceren die aan die Gateway is gebonden.
- Als je een nieuwe iOS-build uitbrengt die naar een andere relay-implementatie wijst, vernieuwt de app de gecachte relay-registratie in plaats van de oude relay-origin opnieuw te gebruiken.
OPENCLAW_APNS_RELAY_BASE_URLenOPENCLAW_APNS_RELAY_TIMEOUT_MSblijven werken als tijdelijke env-overrides.- Aangepaste Gateway-relay-URL’s moeten overeenkomen met de relay-basis-URL die in de iOS-build is ingebakken. De openbare App Store-release-lane weigert aangepaste iOS-relay-URL-overrides.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueblijft een ontwikkelingsuitweg alleen voor local loopback; sla geen HTTP-relay-URL’s permanent op in configuratie.
Heartbeat instellen (periodieke check-ins)
Heartbeat instellen (periodieke check-ins)
every: duurtekenreeks (30m,2h). Stel0min om uit te schakelen.target:last|none|<channel-id>(bijvoorbeelddiscord,matrix,telegramofwhatsapp)directPolicy:allow(standaard) ofblockvoor DM-achtige Heartbeat-doelen- Zie Heartbeat voor de volledige gids.
Cron-jobs configureren
Cron-jobs configureren
sessionRetention: ruim voltooide geisoleerde runsessies op uitsessions.json(standaard24h; stelfalsein om uit te schakelen).runLog: ruim bewaarde Cron-runhistorierijen per taak op.maxBytesblijft geaccepteerd voor oudere bestandsgebaseerde runlogs.- Zie Cron-jobs voor een functieoverzicht en CLI-voorbeelden.
Webhooks (hooks) instellen
Webhooks (hooks) instellen
- Behandel alle hook-/Webhook-payloadinhoud als niet-vertrouwde invoer.
- Gebruik een specifieke
hooks.token; hergebruik geen actieve Gateway-authgeheimen (gateway.auth.token/OPENCLAW_GATEWAY_TOKENofgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Hook-authenticatie werkt alleen via headers (
Authorization: Bearer ...ofx-openclaw-token); querystring-tokens worden geweigerd. hooks.pathmag niet/zijn; houd Webhook-ingress op een specifiek subpad zoals/hooks.- Houd bypass-vlaggen voor onveilige inhoud uitgeschakeld (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), behalve bij strak afgebakende debugging. - Als je
hooks.allowRequestSessionKeyinschakelt, stel dan ookhooks.allowedSessionKeyPrefixesin om door callers gekozen sessiesleutels te begrenzen. - Geef voor hook-gestuurde agents de voorkeur aan sterke moderne modeltiers en strikt toolbeleid (bijvoorbeeld alleen berichten plus sandboxing waar mogelijk).
Multi-agent-routing configureren
Multi-agent-routing configureren
Configuratie opsplitsen in meerdere bestanden ($include)
Configuratie opsplitsen in meerdere bestanden ($include)
$include om grote configuraties te organiseren:- Enkel bestand: vervangt het bevattende object
- Array van bestanden: diep samengevoegd in volgorde (latere wint)
- Zusterkeys: samengevoegd na includes (overschrijven opgenomen waarden)
- Geneste includes: ondersteund tot 10 niveaus diep
- Relatieve paden: opgelost relatief aan het include-bestand
- Padindeling: include-paden mogen geen null-bytes bevatten en moeten strikt korter zijn dan 4096 tekens voor en na resolutie
- OpenClaw-beheerde writes: wanneer een write slechts een top-levelsectie wijzigt
die wordt ondersteund door een enkelbestand-include zoals
plugins: { $include: "./plugins.json5" }, werkt OpenClaw dat opgenomen bestand bij en laat hetopenclaw.jsonintact - Niet-ondersteunde write-through: root-includes, include-arrays en includes met zuster-overschrijvingen falen gesloten voor OpenClaw-beheerde writes in plaats van de configuratie af te vlakken
- Insluiting:
$include-paden moeten oplossen onder de directory dieopenclaw.jsonbevat. Om een boom tussen machines of gebruikers te delen, stel jeOPENCLAW_INCLUDE_ROOTSin op een padenlijst (:op POSIX,;op Windows) van extra directories waarnaar includes mogen verwijzen. Symlinks worden opgelost en opnieuw gecontroleerd, dus een pad dat lexicaal in een configuratiedirectory staat maar waarvan het echte doel buiten elke toegestane root valt, wordt nog steeds geweigerd. - Foutafhandeling: duidelijke fouten voor ontbrekende bestanden, parsefouten, circulaire includes, ongeldige padindeling en overmatige lengte
Configuratie hot reload
De Gateway bewaakt~/.openclaw/openclaw.json en past wijzigingen automatisch toe: voor de meeste instellingen is geen handmatige herstart nodig.
Directe bestandsbewerkingen worden als niet-vertrouwd behandeld totdat ze valideren. De watcher wacht
tot editor-temp-write-/rename-ruis is gestabiliseerd, leest het definitieve bestand en weigert
ongeldige externe bewerkingen zonder openclaw.json te herschrijven. OpenClaw-beheerde configuratie-
writes gebruiken dezelfde schemagate voordat ze schrijven; destructieve overschrijvingen zoals
het verwijderen van gateway.mode of het met meer dan de helft verkleinen van het bestand worden geweigerd en
opgeslagen als .rejected.* voor inspectie.
Als je config reload skipped (invalid config) ziet of het opstarten Invalid config meldt, inspecteer dan de configuratie, voer openclaw config validate uit en voer daarna openclaw doctor --fix uit voor reparatie. Zie Gateway-probleemoplossing
voor de checklist.
Reload-modi
| Modus | Gedrag |
|---|---|
hybrid (standaard) | Past veilige wijzigingen direct hot toe. Herstart automatisch voor kritieke wijzigingen. |
hot | Past alleen veilige wijzigingen hot toe. Logt een waarschuwing wanneer een herstart nodig is: jij handelt dit af. |
restart | Herstart de Gateway bij elke configuratiewijziging, veilig of niet. |
off | Schakelt bestandsbewaking uit. Wijzigingen worden actief bij de volgende handmatige herstart. |
Wat hot wordt toegepast versus wat een herstart nodig heeft
De meeste velden worden zonder downtime hot toegepast. Inhybrid-modus worden wijzigingen waarvoor een herstart nodig is automatisch afgehandeld.
| Categorie | Velden | Herstart nodig? |
|---|---|---|
| Kanalen | channels.*, web (WhatsApp) - alle ingebouwde en Plugin-kanalen | Nee |
| Agent en modellen | agent, agents, models, routing | Nee |
| Automatisering | hooks, cron, agent.heartbeat | Nee |
| Sessies en berichten | session, messages | Nee |
| Tools en media | tools, browser, skills, mcp, audio, talk | Nee |
| UI en overig | ui, logging, identity, bindings | Nee |
| Gateway-server | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Ja |
| Infrastructuur | discovery, plugins | Ja |
gateway.reload en gateway.remote zijn uitzonderingen - als je ze wijzigt, wordt er geen herstart geactiveerd.Herlaadplanning
Wanneer je een bronbestand bewerkt waarnaar via$include wordt verwezen, plant OpenClaw
het herladen op basis van de door de bron gedefinieerde indeling, niet op basis van de afgevlakte weergave in het geheugen.
Daardoor blijven hot-reload-beslissingen (direct toepassen versus herstarten) voorspelbaar, zelfs wanneer een
enkele sectie op het hoogste niveau in een eigen opgenomen bestand staat, zoals
plugins: { $include: "./plugins.json5" }. Herlaadplanning faalt gesloten als de
bronindeling dubbelzinnig is.
Config-RPC (programmatische updates)
Voor tooling die configuratie via de Gateway-API schrijft, heeft deze flow de voorkeur:config.schema.lookupom één subtree te inspecteren (ondiepe schemanode + samenvattingen van children)config.getom de huidige snapshot plushashop te halenconfig.patchvoor gedeeltelijke updates (JSON merge patch: objecten worden samengevoegd,nullverwijdert, arrays worden vervangen wanneer dit expliciet is bevestigd metreplacePathsals entries zouden worden verwijderd)config.applyalleen wanneer je de volledige configuratie wilt vervangenupdate.runvoor expliciete zelfupdate plus herstart; voegcontinuationMessagetoe wanneer de sessie na de herstart nog één vervolgronde moet uitvoerenupdate.statusom de nieuwste update-herstartsentinel te inspecteren en de draaiende versie na een herstart te verifiëren
config.schema.lookup behandelen als het eerste startpunt voor exacte
documentatie en beperkingen op veldniveau. Gebruik Configuratiereferentie
wanneer ze de bredere configuratiekaart, standaardwaarden of links naar specifieke
subsystem-referenties nodig hebben.
config.apply, config.patch, update.run) zijn
beperkt tot 3 requests per 60 seconden per deviceId+clientIp. Herstartrequests
worden samengevoegd en dwingen daarna een cooldown van 30 seconden af tussen herstartcycli.
update.status is alleen-lezen, maar admin-scoped omdat de herstartsentinel
samenvattingen van updatestappen en staarten van commandoutput kan bevatten.config.apply als config.patch accepteert raw, baseHash, sessionKey,
note en restartDelayMs. baseHash is vereist voor beide methoden wanneer er al een
configuratie bestaat.
config.patch accepteert ook replacePaths, een array met configuratiepaden waarvan arrayvervanging
bedoeld is. Als een patch een bestaande array zou vervangen of verwijderen
met minder entries, wijst de Gateway de schrijfactie af tenzij dat exacte pad voorkomt
in replacePaths; geneste arrays onder array-entries gebruiken [], zoals
agents.list[].skills. Dit voorkomt dat afgekorte config.get-snapshots
routing- of allowlist-arrays stilzwijgend overschrijven. Gebruik config.apply wanneer je
de volledige configuratie wilt vervangen.
Omgevingsvariabelen
OpenClaw leest env-vars uit het bovenliggende proces plus:.envuit de huidige werkdirectory (indien aanwezig)~/.openclaw/.env(globale fallback)
Shell-env importeren (optioneel)
Shell-env importeren (optioneel)
OPENCLAW_LOAD_SHELL_ENV=1Env-var-substitutie in configuratiewaarden
Env-var-substitutie in configuratiewaarden
${VAR_NAME}:- Alleen namen in hoofdletters matchen:
[A-Z_][A-Z0-9_]* - Ontbrekende/lege vars veroorzaken een fout tijdens het laden
- Escape met
$${VAR}voor letterlijke output - Werkt binnen
$include-bestanden - Inline-substitutie:
"${BASE}/v1"→"https://api.example.com/v1"
Secret refs (env, bestand, exec)
Secret refs (env, bestand, exec)
secrets.providers voor env/file/exec) staan in Secrets Management.
Ondersteunde credentialpaden staan vermeld in SecretRef Credential Surface.Volledige referentie
Zie Configuratiereferentie voor de volledige referentie per veld.Gerelateerd: Configuratievoorbeelden · Configuratiereferentie · Doctor