Tools & plugins

Using GitHub with OpenClaw

4 min read

Browse more in Tools & plugins.

All tools & plugins guides →

This guide shows you how to work with OpenClaw plugins so you can wire your agents into external systems like GitHub using the plugin system. You will install plugins, control them from the CLI and chat commands, and configure plugin entries in your OpenClaw config.

By the end, you will know how to list, install, enable, and configure plugins that expose tools for GitHub or any other integration.

Prerequisites

  • An OpenClaw Gateway already installed and runnable with the `openclaw` CLI available on your PATH.
  • Access to your OpenClaw configuration file so you can edit the `plugins` section and restart the gateway.
  • Network access from your OpenClaw host to npm and any external services your plugins will call.

Steps

  1. 1

    Inspect which plugins OpenClaw already loads

    Before you add a GitHub-related plugin, see what OpenClaw already ships and which plugins are active. This helps you avoid duplicate installs and understand whether a capability is coming from a bundled plugin or something you added.

    bash
    openclaw plugins list
  2. 2

    Install a plugin from npm or a local path

    Use the plugin installer to pull plugins from npm or from a local directory/archive. This is how you would bring in a GitHub integration plugin published on npm or one you are developing locally.

    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

    Restart the OpenClaw Gateway after installing plugins

    OpenClaw only picks up new plugins and config changes after a gateway restart. If you forget this, you will wonder why your new plugin or updated config is not taking effect.

    bash
    openclaw gateway restart
  4. 4

    Configure plugin entries and allowlists in your config file

    After installation, configure plugins under the `plugins` section so OpenClaw knows which ones to enable and how to pass provider-specific settings. This is where you would enable a GitHub plugin by id and set any required config fields.

    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" } },
        },
      },
    }
  5. 5

    Control plugins from chat with slash commands

    If you prefer to manage plugins without leaving your chat client, enable chat-native plugin commands. This lets you install, inspect, and enable plugins (including any GitHub integration) directly from a conversation.

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

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

    Once your plugins are installed, use the CLI to inspect details, enable or disable them, and run diagnostics. This is essential when debugging why a GitHub plugin is not loading or appears disabled.

    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>
  7. 7

    Set plugin slots when you need exclusive categories

    Some plugin categories are exclusive, like memory and context engines. If your GitHub integration ships as a context engine or memory plugin, you need to select it explicitly in the `slots` section so OpenClaw uses it instead of the default.

    json
    {
      plugins: {
        slots: {
          memory: "memory-core", // or "none" to disable
          contextEngine: "legacy", // or a plugin 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 looks for plugin code.
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.memory-core
plugins.slots.contextEngineSelects the active context engine implementation.legacy

Troubleshooting

A plugin you configured does not appear in `openclaw plugins list --enabled`.

OpenClaw treats plugins as disabled if enablement rules turn them off. enabled` is not set to `false`.

bash
openclaw plugins list --verbose

Config changes for a plugin do not seem to take effect after editing the config file.

Plugin config changes require a gateway restart before they apply. Restart the gateway so it reloads the updated `plugins` section; if config watch is enabled, the restart usually happens automatically after the write.

bash
openclaw gateway restart

Plugin install fails with a message about invalid config and suggests running a doctor command.

When plugin config is invalid, installs fail closed and point you at the doctor command. Run the doctor with the fix flag so OpenClaw can diagnose and repair common configuration issues.

bash
openclaw doctor --fix

A plugin you referenced in config shows as missing in diagnostics.

OpenClaw marks a plugin as missing when discovery cannot find its id in any of the scan locations. openclaw` directory.

bash
openclaw plugins doctor

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