Tools & plugins

Using Home Assistant with OpenClaw

4 min read

Browse more in Tools & plugins.

All tools & plugins guides →

This guide shows you how to work with OpenClaw’s plugin system so you can wire external tools like Home Assistant into your agents. You’ll install plugins, control them from the CLI or chat commands, and understand how OpenClaw discovers and prioritizes plugins.

config` so your Home Assistant integration can sit alongside other OpenClaw plugins cleanly.

Setup flow

Prerequisites

  • An existing OpenClaw installation with the `openclaw` CLI available in your shell.
  • A running OpenClaw Gateway process so plugin changes can be loaded and restarted.
  • Access to edit your OpenClaw config file where `plugins` settings live.

Steps

  1. 1

    Inspect which plugins OpenClaw already loads

    Before you add anything for Home Assistant, see what plugins OpenClaw already discovers. This helps you avoid naming collisions and confirms that the plugin system itself is working.

    Run the list command and skim for bundled providers and any existing external plugins.

    bash
    openclaw plugins list
  2. 2

    Install an external plugin package

    OpenClaw installs external plugins from npm, ClawHub, or a local path. Use the install command to pull in a plugin that will talk to Home Assistant or any other external system.

    The same resolver works for bare package specs, `clawhub:` prefixes, or local directories and archives.

    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 entries and allowlists in your config file

    After install, you control which plugins can run and how they’re configured via the `plugins` block. This is where you’ll eventually add a Home Assistant plugin id and its `config` object.

    config`.

    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 and new installs only take effect after the Gateway restarts. Use the gateway restart command so your updated `plugins` config and any new Home Assistant-related plugin code are loaded.

    If you run the Gateway with config watch, it usually restarts itself shortly after the write, but this command is the explicit way to force it.

    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 is handy when you want to toggle a Home Assistant plugin on the fly without shell access.

    plugins: true` is set, you can install, inspect, and enable plugins directly from the conversation.

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

    Use CLI discovery and enablement rules to debug plugin loading

    When your Home Assistant plugin doesn’t show up, use the richer CLI flags to see what OpenClaw discovered and why. The verbose and JSON modes expose plugin states like disabled, missing, or invalid, and `inspect` gives per-plugin details.

    This is the fastest way to confirm that your plugin id, config, and discovery paths line up.

    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

Configuration

OptionDescriptionExample
plugins.enabledMaster toggle that turns all plugins on or off globally.
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 plugin code.
plugins.entries.voice-call.enabledPer-plugin toggle that enables or disables the `voice-call` plugin.
plugins.entries.voice-call.config.providerProvider selection for the `voice-call` plugin.twilio
plugins.slots.memorySelects which memory plugin occupies the exclusive `memory` slot.memory-core
plugins.slots.contextEngineSelects which context engine implementation OpenClaw uses.legacy

Troubleshooting

A plugin you configured under plugins.entries.<id> does not appear in `openclaw plugins list`.

OpenClaw treats that as a missing plugin when discovery cannot find the id you referenced. paths`, then rerun the list command.

bash
openclaw plugins list --verbose

A plugin shows up but refuses to run because its config is invalid.

OpenClaw marks plugins with schema-mismatched config as invalid and fails closed on install. config` block, then use the doctor command to get guided fixes if the install path pointed you there.

bash
openclaw plugins doctor

After editing the plugins config, your changes do not take effect in the Gateway.

Config changes require a Gateway restart before OpenClaw reloads plugin state. Restart the Gateway process so it picks up the new `plugins` settings and reactivates your plugins.

bash
openclaw gateway restart

Workspace-origin plugins under `.openclaw` never activate even though they are discovered.

Workspace-origin plugins are disabled by default due to the enablement rules. enabled: true` or the `openclaw plugins enable <id>` command 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