Kendr Optimizer v0.1.3 (pre-alpha)
Pre-releaseKendr Optimizer v0.1.3
This pre-alpha release adds a guarded self-update path so an official Kendr CLI
installation can discover and install later releases without another manual
bootstrap.
Update workflow
kendr-opt update --checkreports whether the newest published channel
release passes the metadata eligibility gates without downloading its
archive or changing the executable.kendr-opt updateinstalls that release only after every gate passes; it does
not silently fall back past a newer mutable or incomplete release. Both
commands support--jsonfor akendr.update/v1result and
--channel stable|previewfor explicit channel selection.- Official installers record the
previewchannel in
.kendr-opt-install.json. The adjacent receipt records the repository,
platform target, installed version, and channel. kendr-opt update --reinstallre-verifies and reinstalls the same eligible
version for repair and release smoke testing. It cannot downgrade the CLI.- Interactive
kendr-opt setupandkendr-opt runcan print one cached update
notice to stderr. They do not check when stderr lacks a terminal or during CI;
KENDR_NO_UPDATE_CHECK=1disables passive checks.
The published v0.1.2 executable does not contain the updater. Install v0.1.3
once with the v0.1.3 installer from GitHub Releases. Later official releases can
then be installed with kendr-opt update.
An older same-name Kendr OpenClaw adapter is now migrated automatically during
setup. Kendr still refuses to replace an unmanaged adapter or another occupant
of OpenClaw's exclusive context-engine slot unless the operator supplies
--force.
Verification and replacement boundary
The production updater is pinned to the public Kendr-AI/Kendr-Optimizer
repository identity. A candidate must be a published, non-draft GitHub Release
reported as immutable and eligible for the selected semantic-version channel.
Before replacement, Kendr:
- requires the current platform archive and
SHA256SUMSassets with bounded
sizes and GitHub-recorded SHA-256 digests; - requires the checksum manifest to cover the exact release asset set and to
agree with every GitHub digest; - validates the exact seven-member archive layout, paths, file types,
permissions, and per-member limits, then extracts only the binary; - runs bounded
--versionandengines --compactsmoke tests against the
candidate; - fetches the release again and rejects a changed release fingerprint; and
- backs up the installed executable, replaces it, repeats the smoke tests,
writes the updated receipt, and restores the backup if validation fails.
Normal replacement requires a matching official install receipt. --force
can authorize a deliberately copied standalone executable, but it does not
bypass repository identity, channel, immutability, checksum, archive, smoke, or
anti-downgrade checks. Package-manager-owned binaries should continue to be
updated through their package manager.
Security limits
Normal optimization remains local and the core crates remain network-free. An
explicit or passive update check sends only repository/release requests to
GitHub; asset downloads occur only for an explicit install. Kendr does not send
prompts, tool results, recovery data, model/provider settings, provider credentials, or
traffic to Kendr.org. GitHub and its asset delivery network can still observe
the client's IP address, request timing, and version-bearing user agent.
GitHub release immutability and the two agreeing SHA-256 records detect
corruption and post-publication release changes within the GitHub trust
boundary. They do not authenticate the original publisher independently. The
release is not yet protected by a maintainer signature, Sigstore identity, or
operating-system code signature, so compromise of the GitHub organization,
release workflow, or initial upload remains a supply-chain risk.
Backup-backed rollback covers detected replacement and post-install validation
failures. It is not a journaled, power-loss-safe transaction; a machine or
kernel failure during replacement can still require a manual reinstall.
The updater changes the running native CLI and its adjacent install receipt,
and retains an empty sibling .kendr-opt-update.lock for cross-process update
serialization. Bundled adapters are refreshed by the next kendr-opt setup or
kendr-opt run.