bmdctl
One CLI for Blackmagic ATEM, HyperDeck, Videohub and Ultimatte. Native protocols, no SDK. MCP server included.
Install / Use
claude mcp add lucas-romanenko -- npx -y github:lucas-romanenko/bmdctlIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of bmdctl
bmdctl scores 74/100 on our quality scale, 3754th of 4,659 Development & Engineering skills we index.
Its MCP Server is 6.3 KB long, split into 7 sections with 3 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated yesterday, so bmdctl is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
bmdctl compared with similar skills
All 4 of these similar skills score higher than bmdctl; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| bmdctl (this skill)by lucas-romanenko | 74 | 3 | 1d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.8k | 5d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 106.2k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.4k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 67.9k | 3d ago | CLAUDE.md |
Frequently asked questions
- How do I install bmdctl?
- Run
claude mcp add lucas-romanenko -- npx -y github:lucas-romanenko/bmdctl. The install tabs above show the steps for each supported agent. - Which AI agents does bmdctl work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is bmdctl safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is bmdctl still maintained?
- The repository was last updated yesterday, so bmdctl is actively maintained.
Skill content
View source on GitHubbmdctl
<!-- --8<-- [start:intro] -->bmdctl is one binary that controls Blackmagic Design production equipment over the network: ATEM switchers, HyperDeck recorders, Videohub routers and Ultimatte keyers. It talks each device's own protocol (UDP 9910 to an ATEM, TCP to the others), so no Blackmagic SDK, driver or ATEM Software Control is involved. A background engine keeps a session open to each switcher, deck and router, and every command is also served over HTTP and to AI agents over MCP.
It's for the people who run and automate studios, live events and broadcast rooms: an engineer at a terminal or over SSH, a cron job, a show controller such as Companion, or an AI agent, all with the same commands.
Run on an ATEM, a HyperDeck and an Ultimatte; Videohub ported, not yet run on a router.
<!-- --8<-- [end:intro] --> <!-- --8<-- [start:sample] -->$ bmdctl connect 192.168.1.20
STUDIO A PGM CAM2 · PVW CAM1 · 1080p25 · connected 328 ms
saved as "STUDIO A", now the default
$ bmdctl preview cam3
STUDIO A PGM CAM2 · PVW CAM1
preview CAM1 → CAM3 27 ms
$ bmdctl cut
STUDIO A PGM CAM2 · PVW CAM3
cut CAM3 on program · CAM2 on preview 30 ms
$ bmdctl status
STUDIO A 1080p25 · session 14s, idle 3s, pinned
ME 1 PGM CAM3 PVW CAM2
mix 1:00 · next background · FTB off
<!-- --8<-- [end:sample] -->
Install
macOS and Linux, into ~/.local/bin (/usr/local/bin as root), checked
against the release's checksums.txt:
curl -fsSL https://raw.githubusercontent.com/lucas-romanenko/bmdctl/main/install.sh | sh
- Windows (Scoop):
scoop install https://raw.githubusercontent.com/lucas-romanenko/bmdctl/main/scoop/bmdctl.json - Debian, Ubuntu, Fedora: the
.debor.rpmfrom the latest release (sudo apt install ./bmdctl_*_amd64.deb), with the man page and completions. - Docker:
ghcr.io/lucas-romanenko/bmdctl, which runs the engine and the HTTP API (docker run -d --network host -v bmdctl:/data ghcr.io/lucas-romanenko/bmdctl). - Go 1.27:
go install github.com/lucas-romanenko/bmdctl/cmd/bmdctl@latest
The releases also install atemctl, hdctl, vhctl and ultctl:
bmdctl for one device (hdctl play is bmdctl hyperdeck play).
docs/INSTALL.md covers PATH, completion, upgrading and
removal.
Quick start
bmdctl connect 192.168.1.20 # asks what answers there, saves it by its own name
bmdctl status # program, preview, transition, keyers, aux
bmdctl program cam2 # a number, cam2, mp1, bars, or the input's name
Why
- Control over SSH. Anything that can reach the switcher's network can run it from a shell: a jump host, a laptop on the VPN, a script. Nothing needs a desktop session or ATEM Software Control.
- Switcher configs in git.
bmdctl profile save show.xmlwrites ATEM Software Control's XML and the media pool stills beside it. Commit them, and a change to a show's setup is a diff. (profile restoreloads one back; parts of it have run on hardware, and docs/HARDWARE.md says which.) - AI agents over MCP.
bmdctl mcpgives Claude Code, Claude Desktop or any MCP client a tool per command group. Destructive commands do nothing until a person confirms. See docs/AGENTS.md.
Also:
- Scheduled changes: an
execcue file run from cron; every line is checked before the first is sent. - Show control: call
bmdctlfrom Companion's shell action, Node-RED's exec node or Home Assistant'sshell_command. - Tally:
bmdctl watch --jsonprints each program, preview and tally change as one JSON line. - Fleets: loop over
bmdctl hosts --jsonand run the same command, orprofile save, on every switcher. - Teaching and CI:
--dry-runprints a command's bytes with no switcher; the tests run against a fake switcher. - A Raspberry Pi (64-bit OS) beside the switcher can run the engine and the HTTP API (
bmdctl engine --serve).
Documentation
The documentation is also a site, https://lucas-romanenko.github.io/bmdctl/
(built from docs/ by mkdocs.yml).
- docs/GUIDE.md: a walkthrough, task by task, with what each command prints.
- docs/COMMANDS.md: every command and flag, generated
from the command table (
bmdctl manprints the same). - docs/AGENTS.md: the MCP server and the Claude skill.
- docs/HARDWARE.md: what has run on real hardware (an ATEM, a HyperDeck, an Ultimatte and a Videohub's routing) and what hasn't.
- docs/ARCHITECTURE.md: how the packages, the engine and the tests fit together.
- CONTRIBUTING.md: building, testing and adding a command.
Credits
- bmdwire, the Python original by the same author. bmdctl's device packages are a port of its libraries (atemwire, hyperdeckwire, videohubwire, ultimattewire), following v1.8.0.
- pyatem by Martijn Braam and the
OpenAtem contributors, for the ATEM protocol groundwork. atemwire, which
atem/ports, is a fork of it (atem/NOTICE). - Skaarhoj and the ATEM community, for early protocol notes.
Licence
bmdctl is MIT (LICENSE), except for two directories that are
LGPL-3.0-only: atem/ (atem/LICENSE), as atemwire, the
pyatem fork it ports, is, and internal/fixtures/, data copied from
atemwire's tests. NOTICE maps them.
Not affiliated with or endorsed by Blackmagic Design Pty Ltd. ATEM, HyperDeck, Videohub and Ultimatte are trademarks of Blackmagic Design.
Related Skills
Agent-Reach
106.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
106.2kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
78.4kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
67.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
