Skip to content

HomeKit Smart Home Control

HomeKit Smart Home Control

Lobster can control HomeKit accessories (lights, locks, thermostats, blinds, scenes) via the HomeClaw plugin.

Architecture

User → Lobster → homekit-cli → Unix socket → HomeClaw.app → Apple HomeKit
  • HomeClaw.app — macOS app that connects to Apple HomeKit via native frameworks
  • homeclaw-cli — CLI binary bundled in the app, communicates over /tmp/homekit-bridge.sock
  • HomeClaw plugin — OpenClaw skill-only plugin that teaches the agent how to use the CLI

Setup

Prerequisites

  • macOS with HomeKit accessories configured in the Home app
  • HomeClaw.app installed and running

Installation

  1. Install the plugin:

    Terminal window
    openclaw plugin install /Applications/HomeClaw.app/Contents/Resources/openclaw
  2. Symlink the CLI into PATH:

    Terminal window
    ln -sf '/Applications/HomeClaw.app/Contents/MacOS/homeclaw-cli' /opt/homebrew/bin/homekit-cli
  3. Restart the gateway:

    Terminal window
    openclaw gateway restart
  4. Verify:

    Terminal window
    homekit-cli status

No config needed

The plugin is skill-only — no binDir or other config entries required. Just the symlink so the CLI is in PATH.

Usage

The agent uses homekit-cli device-map --json to discover all devices, then homekit-cli set to control them. Examples:

  • “Turn off the staircase light”
  • “Lock all doors”
  • “Set the thermostat to 70”
  • “Close the bedroom blinds”
  • “Run the movie scene”
  • “What’s the temperature outside?”

Device Map

The device map is the key discovery tool. It returns every device organized by home/zone/room with semantic types, aliases, and current state. The agent should always consult it before acting to resolve ambiguous names.

Notes

  • Many Lutron/Caseta “lights” are actually switches — they have power but not brightness
  • Multiple devices can share the same name across rooms — use display_name (room-prefixed) for disambiguation
  • HomeClaw.app must be running for the CLI to work (it communicates over the Unix socket)
  • Unreachable devices return nil for all state values

Our Setup

  • Devices: 104 (101 reachable)
  • Homes: 1
  • Zones: Basement Floor, Main Floor, Upstairs, Outdoor, plus unzoned rooms
  • Agent access: lobster (full), lobster-groups/lobster-family (not yet enabled)