Single binary 🔒 No cloud 🤖 AI-ready 📦 ~4MB

lox

Fast, scriptable CLI for Loxone Miniserver.
Control lights, blinds, and more from your terminal.

macOS / Linux brew install discostu105/lox/lox
Windows irm https://raw.githubusercontent.com/discostu105/lox/main/install.ps1 | iex
💡
Script your home
Bash, Python, cron — use any tool. Chain commands with pipes and exit codes like any Unix CLI.
🤖
AI agent ready
JSON output, schema discovery, fuzzy matching, dry-run mode, and structured errors designed for LLM tool use.
📡
Real-time streaming
WebSocket state streaming with NDJSON output. Filter by room, type, or specific controls.
📊
OpenTelemetry
Push metrics, logs, and traces to Dynatrace, Datadog, Grafana Cloud, or any OTLP backend.
📄
Config versioning
GitOps for your Miniserver. Track config changes with semantic diffs and git history.
🔗
Multi-context
Manage multiple Miniservers with named contexts. Switch with lox ctx use or override per-command with --ctx.
Fast
~80ms warm, ~1.2s cold. Structure cache with 24h TTL. Static Rust binary with zero runtime dependencies.

See it in action

Terminal
# Discover your controls
$ lox ls --type LightControllerV2 -o json | jq '.[].name'

# Control devices
$ lox on "Licht Wohnzimmer"
$ lox blind "Beschattung Sud" pos 50
$ lox thermostat "Heizung" temp 22.5

# Conditional automation
$ lox if "Temperatur" gt 28 && lox blind "Beschattung Sud" pos 70

# Real-time monitoring
$ lox stream --room "Kitchen" -o json

# GitOps config backup
$ lox config pull

Supported control types

Type Commands
LightControllerV2 on, off, mood plus/minus/off/<id>
Jalousie / CentralJalousie up, down, stop, pos <0-100>, shade, full-up, full-down
Switch on, off, pulse
Dimmer dimmer <name> <0-100>
Gate / CentralGate gate <name> open/close/stop
ColorPickerV2 color <name> #RRGGBB or hsv(h,s,v)
IRoomControllerV2 thermostat <name> --temp/--mode/--override
Alarm alarm <name> arm/disarm/quit
InfoOnlyAnalog / Meter get (read-only)
Any send <uuid> <raw-command>, lock, unlock

Benchmarks

Structure cache at ~/.lox/cache/structure.json (24h TTL):

Operation Cold Warm
lox on "Licht" ~1.2s ~80ms
lox ls ~1.2s ~80ms
lox ls --values ~1.2s + N reqs slower
lox status ~120ms ~120ms