Local home automation built for tinkerers and agents
HomeCmdr is a Rust-powered home automation server you run on your own hardware. Adapter-driven, Lua-scriptable, with a built-in MCP server so your AI agent can control your home alongside you.
curl -sSf https://raw.githubusercontent.com/homecmdr/homecmdr-cli/main/install.sh | bashLinux • x86-64, aarch64, armv7Why HomeCmdr
Everything in one place, nothing in the cloud
HomeCmdr runs entirely on your local network. Your device state, your history, your automations — all on hardware you control.
Local-first
Runs on a Raspberry Pi, home server, or any Linux box. No account sign-up, no subscription, no data leaving your network.
Compile-time plugins
Adapters are Rust crates linked into your binary at build time. You get one lean, self-contained executable with only the integrations you actually use.
Lua scripting
Write scenes and automations in Lua 5.4. Trigger on device state changes, cron schedules, sunrise/sunset, or a plain time interval — no custom DSL to learn.
AI-ready
A built-in MCP server exposes device control, scene execution, and adapter management to any MCP-compatible AI agent. HomeCmdr speaks both human and machine.
Getting started
Up and running in four commands
The CLI handles everything: downloading source, configuring plugins, building the binary, and installing the systemd service.
Install the CLI
Download the pre-built homecmdr binary for your architecture with a single curl command.
Initialise your workspace
Download the API source, answer a few prompts for timezone and location, and get a generated master key automatically.
Add plugins
Pull official plugins from the registry. The CLI prompts for each config value and patches your workspace automatically.
Build & deploy
Compile an optimised binary and install it as a systemd service that starts on boot.
Official plugins
Ready-made integrations
Pull any official plugin with one command. More are added to the registry regularly.
Elgato Key Light
Control Elgato Key Light and Key Light Air devices over the local network. Supports power, brightness, and colour temperature.
ZigbeeZigbee2MQTT
MQTT-backed adapter for the full range of Zigbee devices managed by your Zigbee2MQTT instance.
MediaRoku TV
Power control for Roku TVs via the ECP HTTP API. Turn your TV on or off as part of scenes and automations.
AI / LLMOllama
Service-style Lua access to a local Ollama instance. Ask questions, analyse images, and build LLM-powered automations.
BundledOpen-Meteo Weather
Fetches local weather conditions and forecasts from the free Open-Meteo API. No API key required.
DIYBuild your own
The adapter API is straightforward Rust. Read the authoring guide and add any device or service your home needs.
Dashboard
A reference dashboard, ready to extend
HomeCmdr ships a fully functional reference dashboard built with Alpine.js and vanilla CSS — no build step, no npm, just a static directory you serve. Use it as-is or as the starting point for your own interface.
Devices & rooms
All devices grouped by room. Toggle power, set brightness, adjust colour temperature — live via WebSocket.
Scenes
List all loaded Lua scenes and execute them with a single click.
Live event feed
Stream of real-time events from the WebSocket endpoint — device state changes, adapter lifecycle, and more.
Ecosystem
All the pieces
homecmdr-api
The runtime: HTTP API, WebSocket event stream, Lua host, MCP server, persistence.
homecmdr-cli
The installer and workspace manager. Handles plugins, builds, and systemd deployment.
homecmdr-dash
Reference dashboard. Alpine.js + vanilla CSS. No build step — just serve the directory.
adapters
Official adapter registry. Browse available plugins, view source, or submit your own.