Skip to content

Command line tools

monikapurpl3 edited this page Aug 21, 2026 · 1 revision

Command-line tools

breeze-core

Installed by every package, and present in the containers as docker exec -it <container> breeze-core ….

breeze-core serve      run the API + web UI (foreground)
breeze-core pair       discover units and write config.json
breeze-core diag       run the diagnostic battery against the server
breeze-core approve    approve a device pairing code   (admin, LAN-only)
breeze-core devices    list enrolled device credentials (admin, LAN-only)
breeze-core revoke     revoke one by id                (admin, LAN-only)
breeze-core version    print the version and build commit

It is pair, not setup. Configuration is by AC_* environment variables — see Configuration.

pair

sudo breeze-core pair                     # UDP broadcast; finds everything
sudo breeze-core pair --ip 192.168.1.73   # one unit, no discovery
sudo breeze-core pair --no-prompt         # don't ask for friendly names

Writes config.json. The broadcast needs the same L2 network as the units, so in a container use host networking. See First run and pairing.

diag

The closest thing to a test suite: connectivity, auth posture (that a missing key is refused and the right one accepted), unit-count parity between the API and the config, per-unit state validity and latency, and enum sanity.

breeze-core diag --auto            # no prompts, skips the control round-trip
breeze-core diag --unit "Bedroom"  # one unit
breeze-core diag --control         # include the harmless control round-trip

It self-enrols a credential the first time (that is why it needs the LAN), caches it, and --forget-token throws it away. --no-pair skips anything token-gated.

approve / devices / revoke

breeze-core approve BONG-W3GN
breeze-core devices
breeze-core revoke 7f3c9a21

Admin operations, gated to private addresses. Behind a reverse proxy they need the real client IP to reach the app — see Reverse proxy and TLS.

ac-diag.zsh

The original diagnostic tool, and still shipped: tools/ac-diag.zsh. A single self-contained zsh script that speaks only HTTP — it never imports the Python package — so it can be copied to a laptop (~/.local/bin/acdiag) and pointed at any server:

./tools/ac-diag.zsh --base-url http://192.168.1.10:8420 --config ./config.json --auto

Needs curl and jq. It deliberately avoids bc and other outside maths, using native zsh arithmetic instead, so it runs on a stripped-down box.

ac-approve.zsh

tools/ac-approve.zsh — the same approve/list/revoke operations over plain HTTP, for when you would rather not install anything:

./tools/ac-approve.zsh --base-url http://127.0.0.1:8420 --config ./config.json approve <CODE>

In the containers

breeze-setup wraps the whole first-run sequence — key, pairing, admitting the first client, and (in the nginx image) the certificate and server name. It is safe to re-run and every step can be skipped:

docker exec -it breeze-core breeze-setup

Clone this wiki locally