The team dev key

August 10, 2026 · View on GitHub

team.dev.pub — the public half of the key CI signs branch builds with, so robotctl update apply --ref <branch> works on a board that trusts it.

Not in ../trusted_keys/, deliberately. That directory is copied onto every robot by scripts/install.sh, and a robot that trusts this key installs anything anyone on the team builds. This one is here instead, where nothing installs it by default — provision-board.sh sends it, and --no-dev-key declines.

Committing a public key gives nothing away. Signing a build needs the private half, which lives in ~/.duck-keys and never leaves it. A board still only accepts dev builds if two separate things are true — the key is in that board's trusted_keys_dir, and allow_dev_keys = true in its updater.toml. Both are off on a customer robot, and neither is changed by this file existing.

It was previously kept out of the repository entirely. That protected nothing the two flags above do not already protect, and cost every new developer a round trip asking someone for a file.

Regenerating it, if the private half is ever lost — every existing dev board then needs the new public half installed by hand, because a board only trusts what is already in its trusted_keys_dir:

minisign -R -s ~/.duck-keys/team.dev.key -p team.dev.pub