BMCLI Execution Modes
| Mode | When | Channel open/close | Latency |
|---|---|---|---|
| Standalone | Daemon not running | Per-command (~2.75s overhead) | Slow |
| Daemon | Daemon running | Once at startup | ~50ms |
When a daemon is running, commands that support persistent execution are forwarded to it. Some discovery, file-only, Help, update, and health commands remain local; some stateful operations require the daemon. Consult command Help for the installed-version execution requirement. The daemon avoids repeated USB open/close and preserves channel/protocol state.
If no live daemon PID exists, BMCLI may execute the command in standalone mode.
If a daemon PID is live but TCP communication fails, BMCLI returns a non-zero
IPC error and does not fall back to standalone. This prevents an enumeration
index such as 0 from resolving to a different physical device while the daemon
holds the originally selected device exclusively. Connection attempts may be
retried only before any command bytes are sent; BMCLI never automatically
re-sends a command that may perform a hardware action.
Explicit start: BMCLI does not automatically create a daemon. Start it with
bmcli daemon start when a workflow needs persistent channel state, and stop
only a daemon owned by that workflow.
Source of truth: bmcli_reference.md in the BMCLI repository. Run bmcli help <category> <action> --format=json for the exact contract of the installed version.