Install & sign in

Install bmc with one command and sign in from the terminal.

Install bmc with a single command from the dashboard installer, then sign in once from your terminal.

Install

The installer is served live by the dashboard, so you always get the latest published build.

macOS / Linux:

bash
curl -fsSL https://cdp.busymate.net/install.sh | sh

Windows (PowerShell):

powershell
irm https://cdp.busymate.net/install.ps1 | iex

Both fetch the bmc package, link the bmc command onto your PATH, and run a production install. You'll need Node 18 or newer (and the built-in tar — Windows 10 1803+).

Note: The same installer is also served from dash.busymate.net (/install.sh, /install.ps1), so either host works. Later, bmc update re-runs whichever installer matches your OS — see Update & remove.

You don't need Chrome installed in any particular place — bmc auto-detects Chrome, and falls back to Edge, Brave, or Chromium. To point it at a specific binary, use --chrome <path> or the CDP_CHROME_BIN environment variable (see External proxy & custom Chrome).

Sign in

Sign in once per machine:

bash
bmc login

This opens your browser to https://dash.busymate.net/cli. After you authenticate, the session is handed back to a local loopback callback and stored at ~/.busymate-cdp/auth.json (access token + refresh token + expiry). From then on, creating devices reuses this session — bmc refreshes the access token automatically when it expires.

If the browser doesn't open, the sign-in URL is also printed in the terminal — paste it into any browser on the same machine.

[bmc] Sign in to Busymate:
  https://dash.busymate.net/cli?port=54123&state=…
  (opening your browser…)

Sign out any time with bmc logout — that clears the saved session, but leaves your per-folder device files (.bmc.json) untouched.

Headless / CI sign-in

On a machine with no browser (a build agent, a remote box), set one of these before running bmc login or any capture command, and the browser step is skipped:

  • CDP_USER_JWT — a Busymate user access token (no refresh; expires when the token does).
  • CDP_PAIR_EMAIL + CDP_PAIR_PASSWORD — an email/password pair, exchanged for a full refreshable session.
bash
# token-based (single access token)
CDP_USER_JWT="$BUSYMATE_TOKEN" bmc login
 
# email + password (full session, can refresh)
CDP_PAIR_EMAIL="ci@example.com" CDP_PAIR_PASSWORD="$CI_PASS" bmc login

Heads up: In headless mode, first-run device creation skips the interactive name prompt and uses the folder name. Pass an explicit name with bmc start "<name>" if you want a specific label.

Where things live

PathWhat it holds
~/.busymate-cdp/auth.jsonYour signed-in session (access + refresh + expiry).
./.bmc.jsonPer-folder device (UUID + 365-day device JWT). Created on first capture in a folder.

Both files carry credentials and are written with owner-only permissions. Add .bmc.json to your project's .gitignore.

Next