packages/os/linux/variants/milady-tails/docs/distribution-and-updates.md
This is the product plan for shipping elizaOS Live as a real USB distro without forcing users to re-download and reflash a full ISO for every app, runtime, or model change.
The current branch is not production-complete. It has source overlays for the live OS, a staged app runtime, and a signed-runtime verifier foundation, but production release keys, downloader services, revocation, enterprise mirrors, policy enforcement, and rollback tests do not exist yet. Demo builds must be described as prototypes until those pieces are built and validated.
elizaOS Live is a Linux live-USB distribution built on Tails live-OS plumbing. Users boot the USB, see elizaOS Live branding, optionally unlock encrypted Persistent Storage, and land in a normal desktop with the elizaOS app running as the home surface.
It is valid to call this a distro, with precision: a Tails-derived live-USB distribution. The release process must respect Tails' update model, GPL posture, amnesic design, and Persistent Storage semantics. Primary user surfaces should present elizaOS Live; Tails attribution belongs in credits, license files, and about/legal views.
The current branch is a demo/productization branch:
Production distribution has three update layers. They share trust roots and policy, but they activate differently:
The boot-time runtime selector must be small, deterministic, and independent of the app it launches:
/opt/milady from the ISO and show a recoverable status
in the app after desktop startupNo downloaded runtime becomes active merely because it exists on disk.
Every public production release should publish:
elizaos-live-$VERSION.isoThe build should be reproducible enough that a second builder can verify the ISO contents. Exact byte-for-byte reproducibility is a later milestone, but dependency snapshots, source revisions, and generated artifact hashes must be recorded before stable release.
Channels are part of the artifact identity. The app/runtime updater, model catalog, OS updater, and enterprise mirror must all agree on the active channel.
| Channel | Purpose | Signing state | User posture |
|---|---|---|---|
developer | local and CI smoke artifacts | unsigned or test-signed | never for secrets |
nightly | automated integration builds | test or nightly key | opt-in testers only |
beta | candidate builds with known gaps | production key or release-candidate key | opt-in with rollback path |
stable | supported public releases | production key | default public channel |
enterprise-canary | first internal fleet ring | enterprise key or policy-pinned public key | small managed ring |
enterprise-pilot | broader managed rollout | enterprise policy-pinned | representative users |
enterprise-broad | normal managed fleet | enterprise policy-pinned | default managed channel |
enterprise-rollback | emergency pin or downgrade target | enterprise policy-pinned | admin-controlled only |
Promotion rules:
The bundled app changes more often than the OS. Production should ship a signed app/runtime update channel so users can receive app fixes without reflashing the USB.
The update format should be a versioned bundle plus signed manifest:
Activation flow:
/run/elizaos and
points only at a root-owned materialized runtime copy.This architecture preserves a factory runtime in the ISO while allowing fast app/runtime updates from persistence. The current branch implements the verifier/selector foundation, but not the downloader, production keyring, revocation metadata, model downloader, production health UX, or release-hosting service.
Large or private models should not be baked into every ISO by default. The ISO should ship runtime support plus a signed model catalog. Onboarding should offer:
The model catalog is a signed manifest, not a marketing list. Each entry needs:
Downloaded models belong in encrypted Persistent Storage. In amnesia mode, downloads are RAM-only and disappear at shutdown. Enterprise policy can pin approved model ids and hashes, block provider-backed models, or redirect all model downloads to an internal mirror.
Base OS updates are different because the root filesystem is a signed live image. The production path has two tiers:
The updater must always verify:
Users should need a new full ISO only for first install, major base-OS upgrades, failed delta fallback, emergency recovery, or intentionally creating a fresh USB.
Enterprise support is not just a private download URL. A managed deployment needs:
Enterprise policy can approve downloads without a per-user prompt, but it must not bypass signature/hash verification. Policy chooses what is allowed; the verifier still proves what is being run.
Recovery is a product feature, not an afterthought.
Required recovery paths:
Rollback must be tested across channel changes, not only same-channel updates. Enterprise rollback can be a policy pin to a known-good app/runtime, model catalog, or OS image.
Production signing is still missing. Before beta/stable can be honest, the project needs:
Until this exists, builds are test artifacts even if the ISO boots.
The developer script already does the right kind of checks: it accepts a specific target device, verifies that it is removable, refuses mounted targets, and writes the ISO directly. The desktop app should reuse that same policy before offering a GUI writer:
Balena Etcher remains acceptable as a documented fallback, but the product should not depend on it. The production flasher should be signed:
diskutil, raw
device writes, explicit authorization promptlsblk --json enumeration, polkit
or root only for the write stepThese are explicit demo debts, not production claims:
For the current demo, the correct statement is:
This is an elizaOS Live USB prototype that preserves the underlying live-OS security model, boots into an elizaOS-branded experience, and bundles a fallback elizaOS app/runtime in the ISO. Production fast-update architecture now has a checked foundation: a boot-time verifier can validate signed app/runtime manifests and materialize verified runtimes into a root-owned store, while falling back to the baked ISO runtime if trust is missing. Production release keys, downloader UX, revocation, signed model catalog/downloads, OS delta/full-image update flows, enterprise mirrors/policy, and rollback infrastructure are still release work.