FAQ
FAQ
Questions people evaluating Zyvor OTA actually ask, before they've decided to adopt it. If you've already decided, the tutorial is a better starting point.
Licensing & cost¶
Is it really free? Yes. Apache-2.0 — use, modify, and run it for
personal, lab, and commercial production use at no charge, subject to
preserving notices (see NOTICE). RAUC (an external runtime
dependency) is not relicensed by this project — check its own license
separately. See the README's License section.
What does "Enterprise" mean here? Operational leverage on top of the same agent: Fleet campaign controls, SSO and approvals, hosted site-relay operations, compliance evidence, certified board enablement, SLA and LTS. Contact sales@zyvor.dev. The site relay client, rollback, signature verification, the simulator, the QEMU lab recipe, and the basic Fleet contract stay in this Apache-2.0 repository. Nothing here requires a paid license to update a device safely.
Community and enterprise¶
| Community (this repository) | Enterprise |
|---|---|
| Agent, CLI, RAUC backend, simulator, local API | Fleet dashboard and campaign orchestration |
| Signed releases, rollback, schema 2 payloads | SSO/RBAC, approvals, and immutable audit |
| QEMU reference recipe and the site relay client | Certified board enablement and fleet analytics |
| Offline campaign, journal backup, Prometheus metrics | Compliance packaging and premium integrations |
| Optional trust metadata (not a conformance claim) | SLA, LTS releases, and emergency response |
| Basic Fleet contract | Multi-tenancy and a policy engine |
Support¶
What if I find a bug? Open a GitHub issue.
What if I find a security vulnerability? See SECURITY.md
for private reporting instructions and the documented threat model — note
its own text says private reporting requires the repository's private
vulnerability reporting feature to be enabled by the maintainers first.
Production readiness¶
Is this production-ready? Be precise. v0.2.0 — engineering preview means:
- Yes (software): Go agent,
otactlCLI (zyvor-otaalias), RAUC D-Bus adapter, simulator, CI (lab-substitute), and Fleet contract path — see TEST-REPORT.md and PRODUCTION.md. - Yes (generic QEMU lab): real RAUC A/B install, bad-signature reject,
mid-install power-loss, and three reboots for
zyvor-ota-qemu-lab— HIL.md Track A (qemu_lab_complete=true). - No (Minewing board OS OTA): physical / BSP Minewing HIL is still
unsigned (
minewing_rauc_claimable=false). Follow the Track B operator runbook in HIL.md when a BSP image or board is available. Do not deploy to Minewing production silicon on the strength of the qemu-lab track alone.
Does it work with Zyvor Fleet today? Yes — Zyvor Fleet (zyvorai/fleet)
implements the server side of docs/FLEET.md (/v1/devices/...
and /api/v1/ota/...). See Fleet's docs/OTA_CONTRACT.md. OTA's client is
tested against that contract; a lab reference server (zyvor-fleet-ref) in
this repo is for bring-up without a full Fleet deploy. A recorded multi-product
lab (simulator OTA + Fleet TLS, non-demo) is in docs/LAB.md. Always verify
your own Fleet version and TLS trust path before production.
Security¶
How are updates verified? Ed25519-signed release envelopes with pinned
trust keys and SHA-256 content verification. RAUC is only handed a bundle
after that check. Optional trust_dir metadata adds a threshold root,
delegated target types, and snapshot/timestamp binding. That is not a
conformance claim, and this binary has no TPM driver. See
docs/ARCHITECTURE.md, docs/SUPPLY-CHAIN.md,
and SECURITY.md.
The on-disk anti-replay high-water mark is not a TPM or RPMB counter.
Can it run arbitrary update scripts? No — "No shell commands or
arbitrary update scripts are accepted." Install is RAUC D-Bus calls only
(InstallBundle/GetSlotStatus/Mark).
What happens if a device crashes mid-update? A NeedsRecovery
interlock catches ambiguous post-crash states rather than guessing — see
docs/OPERATIONS.md's "NeedsRecovery" section for the
exact recovery procedure. It is deliberately not fully automatic in the
ambiguous case.
Hardware¶
What boards are supported? The bring-up SKU is Minewing GW1 revision r1
(boards/minewing-gw1-r1/). It is a profile for BSP bake and qualification, not
a prebuilt flashable image — see docs/DEVICE-INTEGRATION.md
and docs/QUALIFICATION.md. boards/reference/ remains generic
templates. Build targets are Linux amd64/arm64; CI also executes the ARM64 CLI
under qemu-user. An arm64 build existing is not
evidence it's been run on arm64 hardware.
Does it require RAUC specifically? OS slot updates use the RAUC D-Bus adapter. There is no SWUpdate adapter. Schema 2 container, config, and model targets are verified file copies and do not add another install backend.