Skip to content

Vyomi v2.0.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 12:57
· 7 commits to main since this release

The vyomi-branded release. 13-phase rebrand campaign: CLI binary, brew formula, Docker Hub namespace, GitHub org, license (MIT → BSL 1.1), HTTP headers, env vars, Python modules, filesystem paths, Docker volumes, Multipass VM name, and HTTPS by default. Every layer ships with runtime back-compat so v1.x upgrades are transparent. See docs/MIGRATION-v2.md for the upgrade guide.

Changed — BREAKING

  • HTTPS via mkcert + Caddy — the simulator is now reachable at https://vyomi.local:9443 with a green padlock (no 'Not Secure' browser warning). On first vyomi up (or install.sh curl-bash run), the launcher detects missing mkcert, offers to install it (brew/apt/dnf/winget), runs mkcert -install once to add a local CA to the system trust store (one sudo/UAC prompt accepted forever), then generates a cert+key for vyomi.local + localhost + 127.0.0.1 at ~/.vyomi/tls/. The cert is bind-mounted into a Caddy sidecar container (added to both docker-compose.yml and docker-compose.appliance.yml) that terminates TLS and reverse-proxies to the simulator on port 9000. HTTP on :9000 remains reachable as a fallback for scripts that don't validate certs. Set VYOMI_NO_TLS=1 to skip the whole flow. VYOMI_REISSUE_TLS=1 to force regenerate. VYOMI_TLS_DIR to override the cert location. Caddyfile lives at packaging/caddy/Caddyfile — swappable to nginx/Traefik later without touching server.py.
  • Docker volumes renamed cloudlearn-*vyomi-* in both docker-compose.yml (compose path) and docker-compose.appliance.yml (Multipass appliance path). 9 volumes: vyomi-data, vyomi-sql-pg, vyomi-sql-mysql, vyomi-gcs, vyomi-nats, vyomi-minio, vyomi-dynamodb, vyomi-portal-keys, vyomi-portal-data (cloudsim-data already neutral, untouched). Fresh installs use the new names. Existing users upgrading from v1.x must run bash scripts/migrate-volumes-vyomi.sh ONCE between docker compose down and docker compose up -d — copies all data from cloudlearn-* volumes into the new vyomi-* equivalents. The legacy volumes are left in place after migration for safe rollback; delete them with docker volume rm cloudlearn-* once satisfied.
  • Multipass VM name defaults to vyomi-appliance for fresh installs. Existing installs with a cloudlearn-appliance VM (created pre-v2.0.0) keep using the old name — the launcher auto-detects via multipass info and avoids destroying state. The VM name surfaces only in multipass info <name>; users hit the simulator at vyomi.local:9000 regardless (mDNS publishing handles the brand-facing hostname). Env override VYOMI_APPLIANCE_NAME added (mirrors CLOUD_LEARN_APPLIANCE_NAME via Phase 8 env aliases).
  • Filesystem paths renamed ~/.cloud-learn/ (launcher state) and ~/.cloudlearn/ (compose install) → ~/.vyomi/ with one-time migration. On first v2.0.0 boot: if either old path exists and ~/.vyomi/ doesn't, the launcher atomically renames it + creates a back-compat symlink at the old path. Both cloud-learn up and the install.sh curl-bash flow run the migration independently. End users with existing state (logs at ~/.cloud-learn/logs/, appliance bootstrap files at ~/.cloud-learn/appliance/<vm>/, compose state at ~/.cloudlearn/{compose,data,deployments}/) experience zero data loss. Idempotent — does nothing once ~/.vyomi/ is the canonical dir. The two old launcher/compose path namespaces were inconsistent (hyphen vs no-hyphen); this rename unifies them under ~/.vyomi/. Symlink retired in v3.0. NOT touched in this phase: /etc/cloudlearn/ (deb/rpm system config), /var/lib/cloudlearn/ (inside-VM state) — those are higher-risk and deferred to a focused later release.
  • Python modules renamed core.cloudlearn_*core.vyomi_* with full back-compat re-export shims at the old paths. Affected: core.cloudlearn_platformcore.vyomi_platform (with internal class CloudLearnPlatformVyomiPlatform and back-compat alias inside the module), and 14 packs.azure.cloudlearn_azure_*packs.azure.vyomi_azure_* modules. Old import paths (from core.cloudlearn_platform import CloudLearnPlatform) keep working — the shim re-exports the canonical names. Pack identifier strings (e.g. cloudlearn.azure.vm.basic) are unchanged for now (catalog-internal, not user-visible). Removal slated for v3.0.
  • Environment variables renamed CLOUDLEARN_*VYOMI_* with full back-compat. A new runtime mirror (core/env_aliases.mirror_env) populates both spellings in os.environ at server startup — existing deployments, .env files, Dockerfiles, and CI configs keep working unchanged. .env.example now uses VYOMI_* as the documented canonical name. docker-compose.yml interpolations use a dual fallback ${VYOMI_X:-${CLOUDLEARN_X:-default}} so users overriding via either name win. The bash launcher (scripts/cloud-learn) does the same mirror at shell level so docker compose and multipass exec subshells see both spellings. Conflict-safe: if both names are set with different values, neither is overwritten and a one-line stderr warning is emitted at startup. Removal slated for v3.0.
  • HTTP headers renamed X-CloudLearn-*X-Vyomi-* with full back-compat. A new ASGI middleware (core/header_aliases.HeaderAliasMiddleware) transparently bridges both names on every request and response: clients can send either spelling, the server reflects both back on responses. SPA + portal-shipped SDKs now send X-Vyomi-* exclusively; legacy X-CloudLearn-* consumers (older SPA cached in browsers, third-party scripts) keep working. Affected headers: Tenant, Tier, Tier-Denied, Principal, Acting-As-Tenant, XTRBAC-Denied, Cedar-Denied, SSO-Denied, Admin-Key, Bridge-Token, CI-Secret, Notif-Secret, Sink-Secret, Host-OS. Removal slated for v3.0.
  • CLI binary renamed cloud-learnvyomi with a cloud-learn deprecation shim. The shim prints a one-line yellow warning to stderr on every interactive invocation (suppressible via VYOMI_NO_DEPRECATION_WARN=1) and then execs vyomi with the same args. End users on every install path see the binary rename simultaneously:
    • Brew: bin/vyomi (primary) and bin/cloud-learn (shim) both shipped with the formula
    • DEB/RPM: /usr/bin/vyomi (primary) and /usr/bin/cloud-learn (shim) installed by the package
    • Scoop: scoop install vyomi is the new canonical; scoop install cloud-learn keeps working via a separate deprecation manifest that prints the rename notice on install
    • Docker Compose: unaffected — the container runs python server.py directly
  • Bash completion now registers against both vyomi and cloud-learn so tab-complete works on legacy invocations.
  • Brew formula renamed cloud-learn.rbvyomi.rb. New canonical install: brew install vyomi-cloud/tap/vyomi. Back-compat: Aliases/cloud-learn → Formula/vyomi.rb symlink in the tap, so brew install cloud-learn continues to work indefinitely (both resolve to the same package). Formula class renamed CloudLearn → Vyomi, license metadata MIT → :cannot_represent (BSL 1.1 isn't in SPDX simple form), homepage now https://vyomi.cloud.
  • License: MIT → Business Source License 1.1 with a Vyomi-specific Additional Use Grant. Source-available, not open-source-OSI. Change Date 4 years from release, Change License Apache 2.0. The Additional Use Grant blocks (a) hosting Vyomi as a third-party commercial multi-cloud simulator service, (b) modifying/bypassing tier-enforcement code, (c) rebranding for commercial redistribution. Non-commercial use and internal evaluation remain unrestricted. See LICENSE for full text. Existing forks pre-v2.0.0 retain MIT under the historical commit terms.
  • Shim removal slated for v3.0 — users have at least one major version cycle to migrate.

Artifacts

  • SHA256SUMS
  • cloud-learn-0.1.0.tar.gz
  • cloud-learn-2.0.0-1.noarch.rpm
  • cloud-learn-2.0.0.tar.gz
  • cloud-learn_2.0.0_all.deb

Docker image: docker pull vyomi/appliance:2.0.0
Install: curl -fsSL https://raw.githubusercontent.com/vyomi-cloud/appliance/main/install.sh | bash
SHA256 checksums: see SHA256SUMS in attached artifacts.