home

Getting started

Install home, initialize the config root, configure modules, and run the first commands.

Requirements

Prebuilt binaries are published for:

  • Linux x86_64 (bun-linux-x64-baseline, with no AVX requirement)
  • macOS arm64

The installer writes to ~/.local/bin/home when that directory is on your PATH. It can offer /usr/local/bin/home on an interactive install when needed.

Install

curl -fsSL https://home.uptonm.dev/install.sh | bash

This redirects to the canonical installer; you can also run the raw URL directly:

curl -fsSL https://raw.githubusercontent.com/uptonm/home/main/scripts/install.sh | bash

Confirm the binary is available:

home --version
home --help

Initialize

Create ~/.config/home/ and choose a secrets backend:

home init

Then configure every module interactively:

home configure

You can configure only the services you use:

home unifi configure
home protect configure
home assistant configure
home sonos configure
home beszel configure

Sonos can discover players over SSDP multicast without configuration. Configure its subnet only when the CLI needs cross-VLAN discovery.

Check readiness

home status
home doctor

status gives a concise readiness view. doctor adds configuration, dependency, version, and update diagnostics.

Exit codes are stable:

CodeMeaning
0Success
1User or input error
2System or service error
3Module not configured

Use structured output

Every command accepts --json:

home unifi devices list --json
home protect events recent --type motion --limit 5 --json
home assistant logbook list --since 24h --json
home sonos players list --json

That output is intended for jq, scripts, and local agents. The human-readable view and the machine contract come from the same command implementation.

Install agent skills

home skill install

This writes one focused skill per configured module. See Agent skills for the contract and safety model.

Update

home upgrade --check
home upgrade --yes

The CLI checks for releases at most once per day in a detached background refresh. It stays silent for --json, pipes, and CI.

On this page