Tools & plugins

Using Notion with OpenClaw

3 min read

Browse more in Tools & plugins.

All tools & plugins guides →

This guide shows you how to install, enable, and configure plugins so your OpenClaw agents can call external tools like Notion. You will use the OpenClaw plugin system, CLI, and config file to control which plugins load and how they behave.

By the end, you will have plugins wired into your gateway and know how to debug common plugin issues.

Setup flow

Prerequisites

  • An existing OpenClaw installation with the `openclaw` CLI available in your shell.
  • A running OpenClaw Gateway started with `openclaw gateway` so config changes trigger automatic restarts.
  • Access to your OpenClaw config file where you can edit the `plugins` section.

Steps

  1. 1

    Inspect which plugins OpenClaw already loads

    Start by checking what plugins your gateway already sees before you add anything new. This helps you avoid duplicate installs and confirms that plugin discovery works in your environment.

    bash
    openclaw plugins list
  2. 2

    Install a new plugin into OpenClaw

    Use the plugin installer to add new capabilities from npm or a local directory. The resolver checks ClawHub first, then falls back to npm, and you can also install from a local path or archive when developing your own plugin.

    bash
    # From npm
    openclaw plugins install @openclaw/voice-call
    
    # From a local directory or archive
    openclaw plugins install ./my-plugin
    openclaw plugins install ./my-plugin.tgz
  3. 3

    Configure plugin loading and per-plugin settings

    After installation, wire the plugin into your config under the `plugins` key. You control global enablement, allow/deny lists, extra load paths, and per-plugin config in one place.

    json
    {
      plugins: {
        enabled: true,
        allow: ["voice-call"],
        deny: ["untrusted-plugin"],
        load: { paths: ["~/Projects/oss/voice-call-extension"] },
        entries: {
          "voice-call": { enabled: true, config: { provider: "twilio" } },
        },
      },
    }
  4. 4

    Restart the OpenClaw Gateway to apply plugin changes

    Config changes only take effect after a gateway restart. Even if you run with config watch enabled, forcing a restart ensures the new plugin and its config are active.

    bash
    openclaw gateway restart
  5. 5

    Control plugins from chat with slash commands

    If you prefer to manage plugins from inside a chat channel, enable chat-native plugin commands. This lets you install, inspect, and enable plugins without dropping to a shell.

    text
    /plugin install clawhub:@openclaw/voice-call
    /plugin show voice-call
    /plugin enable voice-call
  6. 6

    Tune plugin discovery and precedence

    OpenClaw searches several locations for plugins, and the first match wins. Understanding this order helps you override bundled plugins with workspace or global extensions when you need custom behavior.

    text
    <workspace>/.openclaw/<plugin-root>/*.ts and <workspace>/.openclaw/<plugin-root>/*/index.ts.
    
    ~/.openclaw/<plugin-root>/*.ts and ~/.openclaw/<plugin-root>/*/index.ts.
  7. 7

    Set exclusive plugin slots like memory and context engine

    Some plugin categories are exclusive, so you must pick exactly one implementation. slots` to choose which memory plugin and context engine OpenClaw should activate.

    json
    {
      plugins: {
        slots: {
          memory: "memory-core", // or "none" to disable
          contextEngine: "legacy", // or a plugin id
        },
      },
    }
  8. 8

    Use the plugin CLI to inspect, enable, and update plugins

    Once plugins are installed, the CLI gives you detailed visibility and lifecycle control. You can list, inspect, enable, disable, update, and uninstall plugins, as well as run diagnostics and query marketplaces.

    bash
    openclaw plugins list                       # compact inventory
    openclaw plugins list --enabled            # only loaded plugins
    openclaw plugins list --verbose            # per-plugin detail lines
    openclaw plugins list --json               # machine-readable inventory
    openclaw plugins inspect <id>              # deep detail
    openclaw plugins inspect <id> --json       # machine-readable
    openclaw plugins inspect --all             # fleet-wide table
    openclaw plugins info <id>                 # inspect alias
    openclaw plugins doctor                    # diagnostics
    
    openclaw plugins install <package>         # install (ClawHub first, then npm)
    openclaw plugins install clawhub:<pkg>     # install from ClawHub only
    openclaw plugins install <spec> --force    # overwrite existing install
    openclaw plugins install <path>            # install from local path
    openclaw plugins install -l <path>         # link (no copy) for dev
    openclaw plugins install <plugin> --marketplace <source>
    openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
    openclaw plugins install <spec> --pin      # record exact resolved npm spec
    openclaw plugins install <spec> --dangerously-force-unsafe-install
    openclaw plugins update <id>             # update one plugin
    openclaw plugins update <id> --dangerously-force-unsafe-install
    openclaw plugins update --all            # update all
    openclaw plugins uninstall <id>          # remove config/install records
    openclaw plugins uninstall <id> --keep-files
    openclaw plugins marketplace list <source>
    openclaw plugins marketplace list <source> --json
    
    openclaw plugins enable <id>
    openclaw plugins disable <id>

Configuration

OptionDescriptionExample
plugins.enabledMaster toggle that turns all plugins on or off.
plugins.allowAllowlist of plugin IDs that are permitted to run.
plugins.denyDenylist of plugin IDs that are always blocked, even if allowed elsewhere.
plugins.load.pathsExtra file or directory paths where OpenClaw should look for plugins.
plugins.entries.voice-call.enabledPer-plugin toggle that enables or disables the `voice-call` plugin.
plugins.entries.voice-call.config.providerProvider setting for the `voice-call` plugin.twilio
plugins.slots.memorySelects the active memory plugin or disables memory when set to "none".memory-core
plugins.slots.contextEngineSelects the active context engine implementation.legacy

Troubleshooting

A plugin you configured does not appear in `openclaw plugins list` and shows as missing.

<id>`. ts`.

bash
openclaw plugins list --verbose

A plugin shows as invalid and fails to load after you edit its config.

Invalid means the plugin exists but its config does not match the declared schema. config`, then rerun diagnostics and restart the gateway so the plugin can validate again.

bash
openclaw plugins doctor

You install a plugin but it never activates in the gateway.

Config changes require a gateway restart before plugins activate. Restart the gateway with the CLI; if you run `openclaw gateway` with config watch, it usually restarts automatically after the config write.

bash
openclaw gateway restart

Workspace-origin plugins do not run even though they are present under `.openclaw`.

Workspace-origin plugins are disabled by default. enabled: true` or use `openclaw plugins enable <id>` so OpenClaw activates them.

bash
openclaw plugins enable <id>

Frequently asked questions

Powered by Mem0

Add persistent memory to OpenClaw

Official Mem0 plugin for OpenClaw keeps context across chats and tools. Smaller prompts, lower cost, better continuity for your agents.

More in Tools & plugins