Naar hoofdinhoud gaan
OpenClaw is een zelfgehoste Gateway die Discord, Google Chat, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo en meer verbindt met AI-agents. Deze gids behandelt de setup voor een “persoonlijke assistent”: een speciaal WhatsApp-nummer dat zich gedraagt als je altijd beschikbare AI-assistent.

⚠️ Veiligheid eerst

Je plaatst een agent in een positie waarin die het volgende kan doen:
  • opdrachten uitvoeren op je machine (afhankelijk van je toolbeleid)
  • bestanden lezen/schrijven in je workspace
  • berichten terugsturen via WhatsApp/Telegram/Discord/Mattermost en andere meegeleverde kanalen
Begin conservatief:
  • Stel altijd channels.whatsapp.allowFrom in (draai nooit open-voor-de-wereld op je persoonlijke Mac).
  • Gebruik een speciaal WhatsApp-nummer voor de assistent.
  • Heartbeats staan nu standaard op elke 30 minuten. Schakel dit uit totdat je de setup vertrouwt door agents.defaults.heartbeat.every: "0m" in te stellen.

Vereisten

  • OpenClaw geïnstalleerd en geonboard - zie Aan de slag als je dit nog niet hebt gedaan
  • Een tweede telefoonnummer (SIM/eSIM/prepaid) voor de assistent

De setup met twee telefoons (aanbevolen)

Je wilt dit: Als je je persoonlijke WhatsApp koppelt aan OpenClaw, wordt elk bericht aan jou “agent-invoer”. Dat is zelden wat je wilt.

Snelstart in 5 minuten

  1. Koppel WhatsApp Web (toont QR; scan met de assistenttelefoon):
openclaw channels login
  1. Start de Gateway (laat deze draaien):
openclaw gateway --port 18789
  1. Zet een minimale configuratie in ~/.openclaw/openclaw.json:
{
  gateway: { mode: "local" },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Stuur nu een bericht naar het assistentnummer vanaf je telefoon op de allowlist. Wanneer onboarding klaar is, opent OpenClaw automatisch het dashboard en print het een schone (niet-getokeniseerde) link. Als het dashboard om authenticatie vraagt, plak dan het geconfigureerde gedeelde geheim in de Control UI-instellingen. Onboarding gebruikt standaard een token (gateway.auth.token), maar wachtwoordauthenticatie werkt ook als je gateway.auth.mode hebt gewijzigd naar password. Later opnieuw openen: openclaw dashboard.

Geef de agent een workspace (AGENTS)

OpenClaw leest bedieningsinstructies en “geheugen” uit de workspace-directory. Standaard gebruikt OpenClaw ~/.openclaw/workspace als agent-workspace en maakt deze automatisch aan (plus startbestanden AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) tijdens setup/eerste agent-run. BOOTSTRAP.md wordt alleen aangemaakt wanneer de workspace helemaal nieuw is (het hoort niet terug te komen nadat je het verwijdert). MEMORY.md is optioneel (wordt niet automatisch aangemaakt); wanneer aanwezig, wordt het geladen voor normale sessies. Subagent-sessies injecteren alleen AGENTS.md en TOOLS.md.
Behandel deze map als het geheugen van OpenClaw en maak er een git-repo van (idealiter privé), zodat je AGENTS.md en geheugenbestanden zijn geback-upt. Als git is geïnstalleerd, worden gloednieuwe workspaces automatisch geïnitialiseerd.
openclaw setup
Volledige workspace-indeling + backupgids: Agent-workspace Geheugenworkflow: Geheugen Optioneel: kies een andere workspace met agents.defaults.workspace (ondersteunt ~).
{
  agents: {
    defaults: {
      workspace: "~/.openclaw/workspace",
    },
  },
}
Als je al je eigen workspace-bestanden vanuit een repo levert, kun je het aanmaken van bootstrap-bestanden volledig uitschakelen:
{
  agents: {
    defaults: {
      skipBootstrap: true,
    },
  },
}

De configuratie die er “een assistent” van maakt

OpenClaw staat standaard op een goede assistent-setup, maar meestal wil je dit afstemmen:
  • persona/instructies in SOUL.md
  • denkstandaarden (indien gewenst)
  • Heartbeats (zodra je het vertrouwt)
Voorbeeld:
{
  logging: { level: "info" },
  agents: {
    defaults: {
      model: { primary: "anthropic/claude-opus-4-6" },
      workspace: "~/.openclaw/workspace",
      thinkingDefault: "high",
      timeoutSeconds: 1800,
      // Start with 0; enable later.
      heartbeat: { every: "0m" },
    },
    list: [
      {
        id: "main",
        default: true,
        groupChat: {
          mentionPatterns: ["@openclaw", "openclaw"],
        },
      },
    ],
  },
  channels: {
    whatsapp: {
      allowFrom: ["+15555550123"],
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  session: {
    scope: "per-sender",
    resetTriggers: ["/new", "/reset"],
    reset: {
      mode: "daily",
      atHour: 4,
      idleMinutes: 10080,
    },
  },
}

Sessies en geheugen

  • Sessiebestanden: ~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl
  • Sessiemetadata (tokengebruik, laatste route, enzovoort): ~/.openclaw/agents/<agentId>/sessions/sessions.json (legacy: ~/.openclaw/sessions/sessions.json)
  • /new of /reset start een nieuwe sessie voor die chat (configureerbaar via resetTriggers). Als dit alleen wordt verzonden, bevestigt OpenClaw de reset zonder het model aan te roepen.
  • /compact [instructions] comprimeert de sessiecontext en rapporteert het resterende contextbudget.

Heartbeats (proactieve modus)

Standaard voert OpenClaw elke 30 minuten een Heartbeat uit met de prompt: Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. Stel agents.defaults.heartbeat.every: "0m" in om dit uit te schakelen.
  • Als HEARTBEAT.md bestaat maar effectief leeg is (alleen lege regels en markdownkoppen zoals # Heading), slaat OpenClaw de Heartbeat-run over om API-aanroepen te besparen.
  • Als het bestand ontbreekt, wordt de Heartbeat nog steeds uitgevoerd en bepaalt het model wat er moet gebeuren.
  • Als de agent antwoordt met HEARTBEAT_OK (optioneel met korte padding; zie agents.defaults.heartbeat.ackMaxChars), onderdrukt OpenClaw uitgaande levering voor die Heartbeat.
  • Standaard is Heartbeat-levering aan DM-achtige user:<id>-doelen toegestaan. Stel agents.defaults.heartbeat.directPolicy: "block" in om levering aan directe doelen te onderdrukken terwijl Heartbeat-runs actief blijven.
  • Heartbeats voeren volledige agent-beurten uit - kortere intervallen verbruiken meer tokens.
{
  agents: {
    defaults: {
      heartbeat: { every: "30m" },
    },
  },
}

Media in en uit

Binnenkomende bijlagen (afbeeldingen/audio/docs) kunnen via templates aan je command worden aangeboden:
  • {{MediaPath}} (lokaal tijdelijk bestandspad)
  • {{MediaUrl}} (pseudo-URL)
  • {{Transcript}} (als audiotranscriptie is ingeschakeld)
Uitgaande bijlagen van de agent: voeg MEDIA:<path-or-url> toe op een eigen regel (geen spaties). Voorbeeld:
Here's the screenshot.
MEDIA:https://example.com/screenshot.png
OpenClaw extraheert deze en verzendt ze als media naast de tekst. Gedrag voor lokale paden volgt hetzelfde vertrouwensmodel voor bestandslezen als de agent:
  • Als tools.fs.workspaceOnly true is, blijven uitgaande lokale MEDIA:-paden beperkt tot de tijdelijke root van OpenClaw, de mediacache, agent-workspacepaden en door de sandbox gegenereerde bestanden.
  • Als tools.fs.workspaceOnly false is, kan uitgaande MEDIA: host-lokale bestanden gebruiken die de agent al mag lezen.
  • Lokale paden kunnen absoluut, relatief aan de workspace of relatief aan de homemap met ~/ zijn.
  • Host-lokale verzending staat nog steeds alleen media en veilige documenttypen toe (afbeeldingen, audio, video, PDF en Office-documenten). Platte tekst en bestanden die op geheimen lijken, worden niet behandeld als verzendbare media.
Dat betekent dat gegenereerde afbeeldingen/bestanden buiten de workspace nu kunnen worden verzonden wanneer je fs-beleid die leesacties al toestaat, zonder willekeurige exfiltratie van hosttekstbijlagen opnieuw mogelijk te maken.

Operationele checklist

openclaw status          # local status (creds, sessions, queued events)
openclaw status --all    # full diagnosis (read-only, pasteable)
openclaw status --deep   # asks the gateway for a live health probe with channel probes when supported
openclaw health --json   # gateway health snapshot (WS; default can return a fresh cached snapshot)
Logs staan onder /tmp/openclaw/ (standaard: openclaw-YYYY-MM-DD.log).

Volgende stappen

Gerelateerd