Getting Started

Table of contents

  1. Requirements
  2. Installation
    1. Windows (PowerShell)
    2. Homebrew (macOS / Linux)
    3. Build from source (all platforms)
  3. Setup
    1. Environment variables
  4. Multiple Miniservers
  5. Aliases
  6. Shell completions
  7. Token authentication
  8. Discover Miniservers
  9. Next steps

Requirements

  • Loxone Miniserver Gen 1 or Gen 2, firmware 12.0+
  • Local network access (or DynDNS with serial configured)
  • For lox log: Admin user required
  • Platforms: Windows (x86_64, ARM64), macOS (x86_64, Apple Silicon), Linux (x86_64, ARM64)

Installation

Windows (PowerShell)

One-liner — downloads the latest release and adds it to your PATH:

irm https://raw.githubusercontent.com/discostu105/lox/main/install.ps1 | iex

Or install manually: download lox-windows-x86_64.exe from the latest release, rename to lox.exe, and place it somewhere on your PATH (e.g. C:\Users\<YOU>\AppData\Local\lox\).

Homebrew (macOS / Linux)

brew tap discostu105/lox https://github.com/discostu105/lox
brew install discostu105/lox/lox

Build from source (all platforms)

git clone https://github.com/discostu105/lox
cd lox
cargo build --release

The binary is at target/release/lox (or lox.exe on Windows). Copy it somewhere on your PATH.

Build requirements: Rust 1.91+. No OpenSSL. No runtime dependencies.


Setup

Configure your Miniserver connection:

lox setup set --host https://192.168.1.100 --user USER --pass PASS

With serial number for correct TLS hostname (avoids cert warnings):

lox setup set --host https://192.168.1.100 --user USER --pass PASS --serial YOUR_SERIAL

Verify the connection:

lox status

Config is stored at:

  • macOS/Linux: ~/.lox/config.yaml
  • Windows: C:\Users\<YOU>\.lox\config.yaml

Environment variables

All config fields can be overridden via environment variables:

LOX_HOST=https://192.168.1.100 LOX_USER=admin LOX_PASS=secret lox status
Variable Config field
LOX_HOST host
LOX_USER user
LOX_PASS pass
LOX_SERIAL serial

Multiple Miniservers

Manage multiple Miniserver connections with named contexts (similar to kubectl config use-context):

lox ctx add home --host https://192.168.1.100 --user admin --pass secret
lox ctx add office --host https://10.0.0.50 --user admin --pass secret
lox ctx use home              # switch active context
lox ctx home                  # shortcut for `lox ctx use home`
lox --ctx office status       # one-off command against a different context

Existing single-Miniserver configs continue to work. Use lox ctx migrate to convert a flat config to a named context when you’re ready.

See the Context Management reference for all options.


Aliases

Add short names for frequently-used controls:

lox alias add wz "1d8af56e-036e-e9ad-ffffed57184a04d2"
lox alias add kueche "20236c09-0055-6e94-ffffed57184a04d2"
lox alias ls

Then use them directly:

lox on wz
lox off kueche

Aliases are stored in ~/.lox/config.yaml:

host: https://192.168.1.100
user: admin
pass: secret
aliases:
  wz: "1d8af56e-036e-e9ad-ffffed57184a04d2"
  kueche: "20236c09-0055-6e94-ffffed57184a04d2"

Shell completions

Homebrew installs completions automatically.

Manual install (auto-detects your shell):

lox completions --install

Or generate to stdout for custom setups:

lox completions bash
lox completions zsh
lox completions fish
lox completions powershell

Manual installation paths:

# Bash
lox completions bash > /etc/bash_completion.d/lox

# Zsh
lox completions zsh > ~/.zfunc/_lox

# Fish
lox completions fish > ~/.config/fish/completions/lox.fish

PowerShell — add this to your $PROFILE:

lox completions powershell | Out-String | Invoke-Expression

Token authentication

For better security than Basic Auth, use token authentication (valid ~20 days):

lox token fetch    # acquire and save token
lox token info     # check token status
lox token refresh  # extend validity

Once fetched, the token is used automatically for all requests. See the Token Auth section for all token commands.


Discover Miniservers

Find Miniservers on your local network:

lox discover
lox discover --timeout 5

Next steps