bmdctl guide¶
This walks through bmdctl one task at a time. Each page shows a command and what it prints at a terminal. The examples use one switcher, STUDIO A at 192.168.1.20 (an ATEM 1 M/E Constellation HD at 1080p25), one HyperDeck, Deck 1 at 192.168.1.50, a Videohub, Studio Router at 192.168.1.60, and an Ultimatte, Keyer A at 192.168.1.41; your names, sources and times will differ.
At a terminal, and in the documentation site's samples, the value now on
program is red, the value now on preview green, the switcher's name
bold, and ids, times and hints dim; read on GitHub, the samples are
plain. Piped into another program, a command prints the
plain line format instead, and --json prints the engine's JSON
(Scripting). COMMANDS.md lists every
command and flag; bmdctl <command> --help prints one with examples.
- Hosts: the devices bmdctl knows and their names, which one a command goes to, connecting and the session.
- Switching: program, preview, cut, auto and the transition, fade to black, every way to name a source, the aux outputs.
- Keys and DSKs: upstream and downstream keyers, their fill and key, on air.
- Media pool: stills uploaded, downloaded and cleared, what each media player shows.
- Macros: running, recording, and moving macros to and from files.
- Profiles: the switcher's setup saved as ATEM Software Control's XML, and restored.
- watch: what changes on the switcher, from any panel, as it happens.
- exec: cue files: a file of commands, checked before
the first is sent;
-ttimestamps. - undo: putting back the last change.
- HyperDeck: a deck's transport, clips and slots.
- Videohub: a router's routes, labels and locks.
- Ultimatte: a keyer's presets and controls, archive and restore, its network settings.
- Scripting: the line format a pipe gets,
--json, exit status, the state,--dry-run. - The engine: the background process that holds the sessions, running it as a service, and the HTTP API.
Claude Code, Claude Desktop and other AI agents use bmdctl through its MCP server: AGENTS.md.