Retire the cloudnode name — the binary finally matches the product - #31
Merged
Conversation
No Dependabot config existed here, and this is the repo where that matters most. CameraNode ships as a BINARY onto customers' own machines, so a vulnerable dependency is not something we fix by redeploying — it sits on hardware we do not control until each operator updates. The lag between "advisory published" and "our build is clean" is the part that actually costs something. The gap was concrete, not theoretical: RUSTSEC advisories in this tree were cleared BY HAND earlier today (reqwest, tokio-tungstenite and warp were all moved), and nothing has watched them since. `cargo audit` in CI catches a known advisory against what is already pinned; it does nothing about a lockfile ageing out of support. Three ecosystems, and the npm one is easy to overlook: web/ is built INTO the binary at compile time, so a vulnerable frontend dependency ships to customer hardware too rather than being served from somewhere we can patch centrally. github-actions is on the supply path as well — the Release workflow builds the artifacts customers download. No auto-merge: a Cargo bump changes a binary customers install. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`cloudnode` was the name minted under the SourceBox Sentry brand.
`cameranode` replaced it when the repo was renamed in May 2026, and it
is the better word regardless: this binary drives cameras. It was never
a cloud node.
The code never followed. Cargo.toml still declared
`sourcebox-sentry-cloudnode`, so every release asset shipped under the
dead name, and the split identity had started costing real things:
- install.sh carried a workaround — extract the archive, then RENAME
the binary to cameranode before installing, purely to hide this.
- The MSI does no such rename, so Windows installs landed as
"Sentinel CloudNode" running sourcebox-sentry-cloudnode.exe while
the README documented the Linux name. Every Windows instruction was
wrong: the file you download, the Start-menu entry you click, where
the binary lives, the command you run.
Cargo.toml's own comment deferred this to "probably alongside a v1.0.0
release" because renaming orphans systemd units, Windows service
registrations and Docker volumes. There is nothing to orphan — no
customers, no installs — so the deferral was protecting against a cost
that does not exist yet and would only have grown. Done now instead.
255 occurrences, 62 files. Three things were NOT renamed, deliberately:
- `SOURCEBOX_SENTRY_*` and `C:\ProgramData\SourceBoxSentry\` — these
never contained "cloudnode" and are correctly preserved.
- `opensentry-cloud-node` in two brand-history comments — that really
was the old GitHub repo name; falsifying history to satisfy a grep
would be worse than the inconsistency.
The two AES key-derivation domains in storage/database.rs WERE renamed,
which is the one edit here that could have destroyed data: they are
domain separators, not display strings, and changing them means an
existing encrypted node.db silently will not open — no error, it just
fails. Safe only because there are no installs. Their doc comments used
to say "kept verbatim through the rebrands", which would have been a lie
sitting next to a changed constant; they now record that this was a
one-time exception taken in the only window where it was free, and that
the window is closed.
Verified: release build clean, 237 lib tests pass including every
key-derivation round-trip (roundtrip_with_known_key,
derive_key_is_deterministic_within_process,
legacy_and_new_keys_are_distinct), integration tests and doc-tests pass,
clippy no errors, embedded web UI builds. `git grep -i cloudnode` now
returns only the two intentional historical references.
Also aligned three README Windows names with wix/main.wxs byte for byte
— it said "Sentinel Camera Node" where Add/Remove shows "Sentinel
CameraNode", so a user uninstalling would search for a name that is not
there.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
cloudnodewas minted under the SourceBox Sentry brand.cameranodereplaced it when the repo was renamed in May 2026 — and it's the better word regardless: this binary drives cameras. It was never a cloud node.The code never followed.
Cargo.tomlstill declaredsourcebox-sentry-cloudnode, so every release asset shipped under the dead name. The split identity had started costing real things:install.shcarried a workaround — extract the archive, then rename the binary tocameranodebefore installing, purely to hide this.sourcebox-sentry-cloudnode.exewhile the README documented the Linux name. Every Windows instruction was wrong: the file you download, the Start-menu entry you click, where the binary lives, the command you run.Cargo.toml's comment deferred this to "probably alongside a v1.0.0 release" because renaming orphans systemd units and service registrations. There's nothing to orphan — the deferral was protecting against a cost that doesn't exist yet and would only have grown.255 occurrences, 62 files.
Deliberately not renamed
SOURCEBOX_SENTRY_*andC:\ProgramData\SourceBoxSentry\— never contained "cloudnode", correctly preserved.opensentry-cloud-nodein two brand-history comments — that really was the old GitHub repo name. Falsifying history to satisfy a grep is worse than the inconsistency.The one edit that could have destroyed data
The two AES key-derivation domains in
storage/database.rswere renamed. They're domain separators, not display strings: changing them means an existing encryptednode.dbsilently won't open — no error, it just fails to decrypt. Safe only because there are no installs.Their comments used to say "kept verbatim through the rebrands" — which would now be a lie sitting next to a changed constant. They record the one-time exception, and that the window is closed.
Verified
roundtrip_with_known_key,derive_key_is_deterministic_within_process,legacy_and_new_keys_are_distinct)git grep -i cloudnodereturns only the two intentional historical referencesAlso aligned three README Windows names with
wix/main.wxsbyte for byte — it said "Sentinel Camera Node" where Add/Remove shows "Sentinel CameraNode", so a user uninstalling would search for a name that isn't there.🤖 Generated with Claude Code