Skip to content

Import cerberus - #2

Merged
keyldev merged 2 commits into
masterfrom
import-cerberus
Oct 13, 2026
Merged

keyldev merged 2 commits into
masterfrom
import-cerberus

Conversation

@keyldev

@keyldev keyldev commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

…eases

The agent's U-Boot keys become cerberus_* and its variables CERBERUS_*. Cameras
installed under the old names keep working with nothing to do: on start the
agent copies its own keys (device key, claim code, join material) from streq_*
to cerberus_*, checks each copy, and leaves the old ones in place so an older
init script or a rolled-back binary still finds a working camera. S99cerberus
reads cerberus_<name> and falls back to streq_<name>; STREQ_* variables are
still accepted. Forgetting an enrolment, `clean` and uninstall.sh remove both
names, so an old copy can never bring a revoked node back. Once nothing is left
to copy, a start writes nothing to flash.

Releases now carry one static musl binary per CPU architecture - arm (ARMv5TE
soft-float, so every ARM camera from ARMv5 to ARMv7), mipsel (Ingenic),
aarch64, x86_64 - built with Bootlin toolchains against mbedTLS 3.6.7, both
pinned by sha256. Each binary is run under QEMU and its X25519 key checked
against `wg pubkey`. A v* tag publishes them with install.sh, uninstall.sh,
S99cerberus and SHA256SUMS; names carry no version, so the installer can fetch
releases/latest/download/<name>.

install.sh (formerly bootstrap.sh) picks the build by CPU instead of by chip
name, verifies it against SHA256SUMS, and now waits for the enrolment itself
before printing the claim code: the code exists before the camera ever reaches
the cloud, so E21 never fired when it did not. uninstall.sh only rewrites keys
that exist instead of 21 blind flash writes.

The suite covers the migration against a fake U-Boot environment, the installer
end to end from a release laid out on disk, and E21.
Every page carries the same header - logo, a language bar listing all three,
badges - and ends with License and Support. The content follows the new
release layout: install from releases/latest, one static binary per CPU
architecture, the cerberus_* keys and how cameras with streq_* keys are moved.
@keyldev
keyldev merged commit f82f83e into master Oct 13, 2026
7 checks passed
@keyldev
keyldev deleted the import-cerberus branch October 13, 2026 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant