Named devices & the daemon

Provision named devices and let the background daemon keep them running across reboots.

Provision named devices and let a background daemon keep them running across reboots — no folder required, no terminal tied up.

Two ways to run devices

The folder model is great for a quick capture: cd somewhere, run bmc start, Ctrl-C when done. But for devices you want to keep around — named, supervised, restarting after a reboot — there's the daemon.

A named device lives in a per-machine registry, maps to a Chrome binary, and is launched and supervised by a background daemon. You manage them by name from anywhere, without cd-ing into a folder.

Bring the daemon up

Run bmc with no arguments:

bash
bmc

This starts the daemon in the background (releasing your terminal) and lists this machine's named devices. Run it again any time — it never starts a second daemon, so it's safe to repeat.

To stop the daemon (and every running device under it):

bash
bmc stop

Provision a named device

The interactive way is bmc setup — a small terminal UI to add, edit, rename, and remove named devices, mapping each to a Chrome binary (it auto-detects your installed browsers):

bash
bmc setup

Or do it directly:

bash
bmc create "Staging"                         # auto port + profile
bmc create "Staging EU" --from "Staging"     # clone binary/flags onto a fresh port + profile
bmc create "Canary" --chrome /path/to/chrome # pin a specific binary

bmc create provisions the device (pairs its device JWT, allocates a port and profile) but does not start it.

Start, stop, list

bash
bmc start "Staging"     # launch the named device's Chrome via the daemon
bmc stop "Staging"      # stop just that device
bmc ps                  # list named devices + which are running
bmc ps --json           # machine-readable

bmc start "<name>" is the same command you'd use for a folder device — when <name> matches a registered named device (and the daemon is up), it's routed to the daemon instead of creating a folder device. bmc ps works even when the daemon is down: it shows the registry, all marked stopped.

[bmc] daemon: running
  NAME       STATE     PORT   UUID
  Staging    running   9301   8f3c…
  Canary     stopped   9302   1a7e…

Start automatically at login

Wire the daemon to launch when you log in, and start it now:

bash
bmc autostart            # install the login agent + start the daemon
bmc autostart --linger   # also keep it running after logout (where supported)
bmc autostart off        # remove the login agent

The mechanism is per-OS:

  • macOS — a launchd LaunchAgent in ~/Library/LaunchAgents, tied to your GUI login session. --linger is a no-op here (surviving logout would need a root LaunchDaemon).
  • Linux — a systemd --user unit. --linger runs loginctl enable-linger so the daemon survives logout.
  • Windows — a Scheduled Task that runs at logon. --linger is a no-op.

Note: bmc autostart only wires up the daemon; bmc autostart off removes that. To bring the daemon up or down by hand, use bmc and bmc stop.

Folder devices vs. named devices

Folder deviceNamed device
Created bybmc start in a folderbmc create / bmc setup
Identity stored in./.bmc.json in the folderper-machine registry
Started withbmc start (foreground, in that folder)bmc start "<name>" (via the daemon)
Survives rebootnoyes, with bmc autostart
Terminalholds the terminal until Ctrl-Cruns in the background

Both stream into the same dashboard feed and show up under Devices — they're the same kind of device, just provisioned and supervised differently.

Next