Command reference

Every bmc command and flag.

Every bmc command and flag, transcribed from the CLI's built-in help. Run bmc help to see the same list with your installed version.

Commands

CommandWhat it does
bmc loginSign in (opens the browser). One-time per machine.
bmc start [name]Capture in this directory. First run here asks for a device name (default: folder name) or pass one; pass a different name later to rename. Reuses ./.bmc.json after.
bmc [name]Same as bmc start [name].
bmc attach [name]Attach to an already-running Chrome on the debug port — or wait for one to appear — then capture. Never launches Chrome itself; use when you start Chrome yourself.
bmc list (bmc ls)Devices configured on this machine — name, folder, CDP host:port, Chrome binary. --all for every device you own (+ live status/version); --json for scripts.
bmc statusShow sign-in + this directory's device + Chrome.
bmc remove [name]Remove this directory's device, or a named daemon device, + all its captures.

Named devices

A background daemon manages many Chromes by name.

CommandWhat it does
bmc setupInteractively add / edit / rename / remove named devices (map each to a Chrome binary; auto-detects installs).
bmcWith no arguments: bring the daemon up in the background (releases the terminal) and list this machine's devices. Run it again any time — it never starts a second daemon.
bmc autostartLaunch the daemon automatically at login (--linger keeps it running after logout where supported); off to remove.
bmc create <name>Provision a new named device (auto port + profile). --from <existing> clones a device's binary/flags onto a fresh port + profile; --chrome <path> sets the binary.
bmc start <name>Start a named device via the daemon (launches its Chrome).
bmc stop <name>Stop a running named device.
bmc stopWith no name: stop the daemon (and every running device).
bmc psList named devices + which are running (--json).
bmc updateInstall the latest bmc + refresh this machine's devices' version shown in the dashboard.
bmc logoutSign out (clears the saved session; device files stay).
bmc helpShow the help (also shown when no command is given).

Options (for start)

FlagWhat it does
--host <h>Chrome host (default 127.0.0.1, or CDP_HOST).
--port <p>Chrome remote-debugging port (default 9222, or CDP_PORT). Without an explicit port, bmc auto-claims the next free port so multiple bmc instances each get their own Chrome.
--chrome <path>Chrome/Chromium binary to launch (or CDP_CHROME_BIN; auto-detected per-OS otherwise).
--client <name>Tag captured requests with this client label (or CDP_CLIENT). Internal marker shown as a dashboard badge; never sent upstream. Persisted; --client "" clears it.
-- <chrome flags…>Everything after a bare -- is passed verbatim to Chrome, e.g. bmc start "Dev" -- --lang=en-US --incognito.

Chrome launch

If no Chrome is already listening on the debug port, bmc launches one itself so it can apply your device's external proxy + any -- flags. Its profile defaults to the directory you run bmc in (so it's local + persists per project; override with CDP_USER_DATA_DIR or -- --user-data-dir=…). If the device has an external proxy configured in the dashboard, Chrome starts with --proxy-server (auth proxies prompt once in Chrome); changing it in the dashboard auto-restarts Chrome. To attach to your own Chrome instead, launch it first with remote debugging (proxy/flags then ignored):

bash
open -na "Google Chrome" --args --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-cdp

Environment variables

All optional; sensible defaults are baked in.

VariableMeaning (default)
CDP_HOST / CDP_PORTChrome debug endpoint default (127.0.0.1 / 9222).
CDP_CHROME_BINChrome/Chromium binary path (same as --chrome).
CDP_CLIENTClient tag for captured requests (same as --client).
CDP_USER_DATA_DIRChrome profile dir (default: the directory you run in).
CDP_AUTH_URLDashboard auth host (https://dash.busymate.net).
SUPABASE_URL / SUPABASE_PUBLISHABLE_KEYBackend URL + publishable key (defaults baked in; SUPABASE_URL defaults to https://api.busymate.net).
CDP_USER_JWTHeadless sign-in (CI): a user access token.
CDP_PAIR_EMAIL + CDP_PAIR_PASSWORDHeadless sign-in (CI): email + password for a full session.

Note: bmc create also accepts --from <existing> and --chrome <path>; bmc autostart accepts --linger and off; bmc list/bmc ls accept --all (-a) and --json; bmc ps accepts --json; bmc remove accepts --yes (-y). See Update & remove and Named devices & the daemon for details.