PhyStack CLI
This page documents releases, improvements, and fixes for the @phystack/cli (phy) command-line tool, listed in descending order (newest first).
PhyStack CLI 7.0.0 (Current Release)
Section titled “PhyStack CLI 7.0.0 (Current Release)”Release Date: September 25, 2026 Status: Released
Installation
npm install -g @phystack/cliVersion 7.0 is a ground-up rewrite of the CLI as a single native binary — dramatically faster startup, no Node.js runtime required to execute commands, and a uniform phy <resource> <verb> grammar across the whole platform (apps, installations, devices, spaces, media, analytics, and more). Shell completions (phy completions <shell>) and a man page (phy man) are built in.
Breaking Changes
The command grammar changed. The most important migrations from 6.x:
- Scaffolding and registration are now separate, non-interactive commands.
phy app createno longer opens an interactive menu. Scaffold withphy app init <name> --type screen|web|edge|cloud(clones the official template for that type;--lang node|pythonfor edge,--lang ts|rustfor cloud,--minimalfor a dependency-free starter), then register withphy app create <name> --type <type>. - Builds:
phy app buildandphy app publishare replaced byphy app build create <name> --dir . [--push] [--publish].--pushbuilds and pushes the container image (edge apps only);--publishpublishes the build as soon as it processes. The build version auto-bumps when--versionis omitted. - Registry credentials: the interactive Docker credential flow is replaced by
phy registry login <registry>— credentials are stored locally (OS keychain) and the image reference is derived from your login. - Device access: the
phy dev *family is renamed tophy device *—phy device shell|exec|cp|logs|forward|vnc|screen-devtools|container. - Installation settings:
phy app settingsis replaced byphy installation settings get|set(with a--spaceor--devicescope, add--resolvedfor the merged view including overrides). - Simulator: the
phy simulatorsubcommand moved to the standalonephy-simulatorbinary (npm i -g @phystack/device-simulator). App templates wire it intobun run dev. - Removed:
phy vm(VM management) andphy app deploy(dev-mode on-device deploys) are not part of 7.0. - Contexts: kubectl-style configuration via
phy config set-context / use-context / get-contexts, withphy tenant set <slug>caching the default tenant per context. For CI, set a personal access token (phy token create) asPHY_TOKEN.
New Features
- Web Endpoints:
phy web-endpointmanages the public URLs that serve a WEB installation at a Space.list,get,create,update, anddeletefollow the standard CRUD grammar (phy web-endpoint create --set displayName=... --set installationId=<id> --set spaceId=<id>).phy web-endpoint code <endpoint>mints a session link without a device — the same claim-code URL a QR scan produces, live for the endpoint’s code TTL. Per-endpoint settings overrides reuse the installation settings commands: an endpoint id is a valid--devicetarget forphy installation settings get|set. - Peripheral Descriptors:
phy descriptor init <name>scaffolds a descriptor project from the official template (--visibility public|child-tenants|ownsets who can see the published descriptor; fixed once created).phy descriptor publishreads the project’spackage.jsonand build output to create the descriptor, or publish a new version if it already exists.
App Types
The supported application types are screen, web, edge, and cloud — cloud apps are scaffoldable from templates for the first time (TypeScript and Rust).
PhyStack CLI 6.2.2
Section titled “PhyStack CLI 6.2.2”Release Date: June 12, 2026 Status: Released (6.x line)
Installation
npm install -g @phystack/cli@6.2.2New Features
None
Bug Fixes
phy dev cpBinary Corruption: Copying binary files (coredumps, images, archives) to or from a device could silently corrupt the transferred file while still producing the expected byte count. Transfers are now checksum-verified end to end in both directions: a corrupt, truncated, or interrupted transfer fails with exit code 1 instead of writing a wrong file, and a successful copy prints the byte count, md5, and its verification status,verified against device, orverified by sizeon devices without an md5 utility.phy dev cpUploads of Large Files: Uploading files larger than a few KB to a device no longer fails or corrupts, and no temporary scripts are left behind on the device.phy dev cpReliability: Transfers fail fast with a clear error when the remote file is unreadable, the target path is not writable, or the connection drops, and time out after 120 seconds of inactivity instead of hanging forever. Empty files now copy correctly, and progress shows exact byte counts in both directions.
PhyStack CLI 6.2.1
Section titled “PhyStack CLI 6.2.1”Release Date: June 10, 2026 Status: Released
Installation
npm install -g @phystack/cli@6.2.1New Features
None
Bug Fixes
phy app publish: Cloud apps published by name (phy app publish <org>.<appName>) are no longer created with the wrong app type.- Stale-Build Warning: No longer fires falsely after publish, and now suggests the correct rebuild command (
phy app build).
PhyStack CLI 6.2.0
Section titled “PhyStack CLI 6.2.0”Release Date: June 3, 2026 Status: Released
Installation
npm install -g @phystack/cli@6.2.0New Features
- Cloud-v2 Installation Lifecycle:
phy app build,phy app create, andphy app publishnow support the cloud-v2 installation lifecycle.
Bug Fixes
None
PhyStack CLI 6.1.1
Section titled “PhyStack CLI 6.1.1”Release Date: May 24, 2026 Status: Released
Installation
npm install -g @phystack/cli@6.1.1New Features
phy dev shellVerbose Mode: Added a-v/--verboseflag that passes-vthrough to the underlying SSH client for connection debugging.
Bug Fixes
phy loginExit Code: Login failures now exit with code 1 instead of silently continuing, sophy login && phy ...chains in CI no longer proceed past a failed authentication.- Browser Launch Errors:
phy loginnow surfaces browser-launch failures to stderr on headless Linux instead of swallowing them and crashing the login flow. phy logoutReporting: A corrupt local token file now raises a loud error during logout rather than pretending the refresh token was revoked.phy dev shellon Windows: The local proxy connection now targets127.0.0.1instead oflocalhost, avoiding a first-attemptWSAECONNREFUSEDwhen Windows resolveslocalhostto IPv6 first.
PhyStack CLI 6.1.0
Section titled “PhyStack CLI 6.1.0”Release Date: May 22, 2026 Status: Released
Installation
npm install -g @phystack/cli@6.1.0New Features
- Alpine / musl Support: Two new platform binary packages,
@phystack/phy-linux-x64-musland@phystack/phy-linux-arm64-musl, are now published alongside the existing glibc builds. npm auto-resolves the correct variant on install, so Alpine/musl users get the musl binary and Debian/Ubuntu users get glibc.
Bug Fixes
- Diagnostic Install Shim: The CLI shim no longer collapses every spawn failure (
ENOENT,EACCES,ENOEXEC, crashes, missing shared libraries) into a silentexit 1. Each failure mode now prints a specific message including the detected runtime (platform, architecture, and libc) and a concrete next step, for example, telling Alpine users to install the musl variant.
PhyStack CLI 6.0.0
Section titled “PhyStack CLI 6.0.0”Release Date: May 20, 2026 Status: Released
Installation
npm install -g @phystack/cli@6.0.0Breaking Changes
PHYGRID_*Environment Variables Removed: The CLI now hard-fails at startup with a 1-to-1 rename table if anyPHYGRID_*variable is set. There is no deprecation period or silent fallback. Rename every occurrence to itsPHYSTACK_*sibling in your shell rc,.envfiles, CI workflows, and repo secrets.OMBORI_ID_URLis the one intentional carry-over. The full table is intools/cli/ENVIRONMENT_VARIABLES.md.phy loginNo Longer Prompts on Multi-Tenant: When a user belongs to two or more tenants,phy loginnow prints the available tenants and exits cleanly rather than opening an interactive picker, authentication and tenant selection are now decoupled. Chainphy tenant select <slug>afterphy loginto select a tenant in scripts. The single-tenant auto-select and zero-tenant warning paths are unchanged (TECH-1117).
New Features
None
Bug Fixes
- Simulator
--connect:phy simulator start --connect <name>now correctly drives the innerHubDeviceinstance, opening the socket, running PhyHub authorization, and routing heartbeats through the typed twin-properties helper, so simulators reliably report twin updates to PhyHub. Offline simulator mode is unchanged.