Vyomi v2.0.0
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:9443with a green padlock (no 'Not Secure' browser warning). On firstvyomi up(orinstall.shcurl-bash run), the launcher detects missingmkcert, offers to install it (brew/apt/dnf/winget), runsmkcert -installonce to add a local CA to the system trust store (one sudo/UAC prompt accepted forever), then generates a cert+key forvyomi.local + localhost + 127.0.0.1at~/.vyomi/tls/. The cert is bind-mounted into a Caddy sidecar container (added to bothdocker-compose.ymlanddocker-compose.appliance.yml) that terminates TLS and reverse-proxies to the simulator on port 9000. HTTP on:9000remains reachable as a fallback for scripts that don't validate certs. SetVYOMI_NO_TLS=1to skip the whole flow.VYOMI_REISSUE_TLS=1to force regenerate.VYOMI_TLS_DIRto override the cert location. Caddyfile lives atpackaging/caddy/Caddyfile— swappable to nginx/Traefik later without touchingserver.py. - Docker volumes renamed
cloudlearn-*→vyomi-*in bothdocker-compose.yml(compose path) anddocker-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-dataalready neutral, untouched). Fresh installs use the new names. Existing users upgrading from v1.x must runbash scripts/migrate-volumes-vyomi.shONCE betweendocker compose downanddocker compose up -d— copies all data fromcloudlearn-*volumes into the newvyomi-*equivalents. The legacy volumes are left in place after migration for safe rollback; delete them withdocker volume rm cloudlearn-*once satisfied. - Multipass VM name defaults to
vyomi-appliancefor fresh installs. Existing installs with acloudlearn-applianceVM (created pre-v2.0.0) keep using the old name — the launcher auto-detects viamultipass infoand avoids destroying state. The VM name surfaces only inmultipass info <name>; users hit the simulator atvyomi.local:9000regardless (mDNS publishing handles the brand-facing hostname). Env overrideVYOMI_APPLIANCE_NAMEadded (mirrorsCLOUD_LEARN_APPLIANCE_NAMEvia 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. Bothcloud-learn upand theinstall.shcurl-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_platform→core.vyomi_platform(with internal classCloudLearnPlatform→VyomiPlatformand back-compat alias inside the module), and 14packs.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 inos.environat server startup — existing deployments,.envfiles, Dockerfiles, and CI configs keep working unchanged..env.examplenow usesVYOMI_*as the documented canonical name.docker-compose.ymlinterpolations 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 sodocker composeandmultipass execsubshells 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 sendX-Vyomi-*exclusively; legacyX-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-learn→vyomiwith acloud-learndeprecation shim. The shim prints a one-line yellow warning to stderr on every interactive invocation (suppressible viaVYOMI_NO_DEPRECATION_WARN=1) and thenexecsvyomiwith the same args. End users on every install path see the binary rename simultaneously:- Brew:
bin/vyomi(primary) andbin/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 vyomiis the new canonical;scoop install cloud-learnkeeps working via a separate deprecation manifest that prints the rename notice on install - Docker Compose: unaffected — the container runs
python server.pydirectly
- Brew:
- Bash completion now registers against both
vyomiandcloud-learnso tab-complete works on legacy invocations. - Brew formula renamed
cloud-learn.rb→vyomi.rb. New canonical install:brew install vyomi-cloud/tap/vyomi. Back-compat:Aliases/cloud-learn → Formula/vyomi.rbsymlink in the tap, sobrew install cloud-learncontinues to work indefinitely (both resolve to the same package). Formula class renamedCloudLearn → Vyomi, license metadataMIT → :cannot_represent(BSL 1.1 isn't in SPDX simple form), homepage nowhttps://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
LICENSEfor 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.