openhome local gateway from the OpenHome CLI, runs on your PC and provides that connection. Its built-in openclaw handler detects your running OpenClaw gateway and forwards tasks to it. There’s no separate client to download.
For a short task-oriented quickstart, see Getting Started → OpenClaw. This page is the full reference.
Local Link holds a single persistent connection to OpenClaw’s Gateway for as long as it’s running, rather than starting OpenClaw fresh for every command. Requests sent through ask_openclaw() share a session, so OpenClaw retains context across calls the same way Hermes retains context across turns: no per-command cold start, and no need to repeat context you’ve already given it.
What you can build
- Application launcher and manager
- System monitoring and diagnostics
- File and folder automation
- Development environment controller
- Custom workflow automations
- Smart home integration via computer
- Screenshot and screen recording tools
- Clipboard and text manipulation
How it works
The integration has two pieces:
Local Link routes each incoming request to a local handler:
- local-link: a raw shell executor. Always available, and the default if a request doesn’t say otherwise.
- openclaw: used when OpenClaw is installed and its gateway is running.
- hermes: used when Hermes is installed and configured.
local-link is the default handler, reaching OpenClaw specifically means the Ability must ask for it by name. That’s what target: "openclaw" in the examples below does, see The exec_local_command() API.
- Trigger: you say a command by voice. OpenHome captures it as text.
- Send: the Ability sends the command to
exec_local_command(), targeting theopenclawhandler. - Execute: OpenClaw runs it on your computer through its gateway.
- Reply: OpenClaw returns the result (success, failure, or output).
- Speak: an LLM converts the technical output into a short, natural spoken response.
Setup
1. Install and start OpenClaw
OpenClaw must be installed, configured with an LLM API key, and running its gateway:2. Install and log in to the OpenHome CLI
Local Link ships with the OpenHome CLI. Install it with the one-line installer, or from the repo if you need Python 3.10+ directly:3. Start OpenHome Local Link
Run the gateway on the same machine where OpenClaw is installed, and keep it running:openhome local run runs it in the foreground for debugging. start and run accept --client-id (device name, default laptop), --role (default agent), and --timeout (per-request seconds, default 30). Give each device a distinct --client-id if you run more than one.
4. Add the OpenClaw Ability
Install the OpenClaw Ability from the Marketplace on your Agent, set Trigger Words, and this is the template you’ll customize for your use case.The exec_local_command() API
One function carries every command from the Ability to Local Link.
command(str | dict, required): the request. A plain string goes to the defaultlocal-linkshell handler. To reach OpenClaw, send a dict (or its JSON string) shaped like{"type": "command", "target": "openclaw", "data": "<your command>"}.target_id(str | None): which device to reach, if you run Local Link on more than one machine (default:"laptop", matching--client-id).timeout(float): max seconds to wait for a response (default:10.0).
{"type": "response", "data": {"status": "ok" | "error", "data": "<reply>", "error": "<message>"}}. Unwrap both layers before reading the reply, see ask_openclaw() below.
Usage
Set the target once in a small helper like
ask_openclaw() above, then every call in your Ability reaches OpenClaw without repeating the payload shape.Example abilities
1. Development environment controller
2. System health monitor
3. Smart screenshot
4. App manager with confirmation
Best practices
1. Define clear trigger words
Specific, unambiguous triggers beat generic ones:- ✅
start development session,launch dev environment,open my coding setup - ❌
start,go,do it
2. Validate before executing
3. Confirm destructive actions
4. Tune timeouts
5. Format responses for voice
Don’t just echo raw OpenClaw output. Parse and shape:6. Handle errors and timeouts
7. Chain commands for workflows
Troubleshooting
"openclaw" not detected as a handler
"openclaw" not detected as a handler
The gateway isn’t running. Run
openclaw gateway start, then openclaw gateway status, and restart Local Link: openhome local stop && openhome local start."OpenHome Local Link isn't connected"
"OpenHome Local Link isn't connected"
Local Link isn’t running, or you’re logged out. Start it with
openhome local start, and run openhome login if needed.Commands time out or fail
Commands time out or fail
OpenClaw requests already get an automatic 120-second floor, regardless of the timeout you pass, so this is rarely a plain timeout issue: commands with several tool calls can genuinely take a while. If a request does time out, it’s properly cancelled on the Gateway side rather than just abandoned locally. Watch
openhome local logs for what actually happened, and raise the timeout further only if you’re seeing genuinely longer runs.Permission errors on macOS
Permission errors on macOS
System Settings → Privacy & Security → find the blocked app → Open Anyway. Grant Accessibility and Automation permissions when prompted.
Commands not executing
Commands not executing
Confirm
openhome local status shows OpenClaw detected, test a safe command first (“what time is it”), and review openhome local logs.Security & privacy
- Commands run locally, not sent to external servers (the LLM used by OpenClaw may receive the natural-language text for command generation).
- Your OpenHome API key authenticates the OpenHome → Local Link connection. Treat it as a secret, and rotate it if it’s ever been pasted somewhere public.
- Always add validation for user-provided input.
- Use confirmation prompts for destructive operations (restart, delete, format).
- Anyone with access to your OpenHome account can reach OpenClaw through your gateway while it’s running.
Architecture
openclaw vs local-link
Both run through the same openhome local gateway, as two handlers:
Use
openclaw for LLM-driven automation. For direct terminal commands, see Local Connect.
Resources
- OpenClaw template on GitHub: openhome-dev/abilities/templates/openclaw
- OpenClaw gateway help:
openclaw --help· Check status:openclaw gateway status - OpenHome CLI: Install and command reference
- Quick start checklist: Getting Started → OpenClaw
- Lightweight alternative: Local Connect

