Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
One binary that controls Blackmagic Design ATEM switchers, HyperDeck recorders, Videohub routers and Ultimatte keyers over the network, from a terminal, scripts and AI agents.
Developer toolsGo · PythonGitHub @lucas-romanenkoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
One CLI for Blackmagic ATEM, HyperDeck, Videohub and Ultimatte. Native protocols, no SDK. MCP server included.
Taken from the repository README
Loading the full README.
Read the full README ↗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.
$ 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
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
scoop install https://raw.githubusercontent.com/lucas-romanenko/bmdctl/main/scoop/bmdctl.json.deb or .rpm from the
latest release
(sudo apt install ./bmdctl_*_amd64.deb), with the man page and
completions.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 install github.com/lucas-romanenko/bmdctl/cmd/bmdctl@latestThe 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.
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
bmdctl profile save show.xml writes 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 restore loads one
back; parts of it have run on hardware, and docs/HARDWARE.md says which.)bmdctl mcp gives 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:
exec cue file run from cron; every line is checked before the first is sent.bmdctl from Companion's shell action, Node-RED's exec node or Home Assistant's shell_command.bmdctl watch --json prints each program, preview and tally change as one JSON line.bmdctl hosts --json and run the same command, or profile save, on every switcher.--dry-run prints a command's bytes with no switcher; the tests run against a fake switcher.bmdctl engine --serve).The documentation is also a site, https://lucas-romanenko.github.io/bmdctl/
(built from docs/ by mkdocs.yml).
bmdctl man prints the same).atem/ ports, is a fork of it (atem/NOTICE).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.