Skip to main content

StacyVM 0.15.0 — Interactive Experience & Cross-Platform Desktop

Date: 2026-05-31 This release is all about how you use StacyVM. The sandbox and runtime engine are unchanged; everything new is operator-facing: a styled CLI, a full-screen terminal UI, a web dashboard embedded right in the binary, downloadable desktop apps for every OS, and a one-command installer. It is a minor version bump (0.14.x → 0.15.0) because the install/build flow and frontend layout changed — see Upgrade notes.

New features

One-command installer

  • npx stacyvm-setup@latest clones StacyVM, builds the web UI and the CLI, installs stacyvm onto your PATH, runs the setup wizard, and removes the downloaded checkout — leaving a working stacyvm command and nothing else.
  • The repo is only deleted after a successful install, so a failed run never leaves you without a binary.

Interactive CLI

  • Restyled with charmbracelet/fang and a StacyVM brand theme.
  • New stacyvm setup wizard (huh forms) to pick an isolation provider (Docker / Firecracker / PRoot), the Docker runtime (runc / runsc / kata), a preview domain, and optional shell auto-completion (bash, zsh, fish).
  • New stacyvm update (self-update) and stacyvm uninstall (remove binaries + ~/.stacyvm).

Terminal UI (stacyvm tui)

  • Full-screen Bubble Tea app with six screens: Dashboard, Sandboxes, Templates, Providers, Logs, Config.
  • Keys: 16 switch screens, Ctrl+K command palette, r refresh, q/Ctrl+C quit; sandbox actions s spawn, e exec, f workspace/files, l logs, d destroy.
  • Workspace screen with a netrw-style file tree and a modal text editor (Ctrl+S to save), an editor-majority layout, and a toggleable terminal pane.

Embedded web dashboard

  • A new Next.js dashboard (web/) with Dashboard, Sandboxes, Templates, Providers, Environments, Operations, Tenants, and Settings pages.
  • Built as a static export and embedded directly into the binary. Launch it with stacyvm web-ui (alias ui), which serves it on port 5749 and opens a browser. (Run stacyvm serve alongside it for live data.)
  • Refreshed branding: new logos, color palette, and icons.

Desktop app

  • A Wails desktop app that packages the dashboard and runs the StacyVM API daemon in-process — one window, no separate serve.
  • Download prebuilt installers from the Releases page; full guide in Desktop App.

Cross-platform desktop distribution

Wails cannot be reliably cross-compiled (each platform links its native webview), so desktop builds now run on a native GitHub Actions matrix:
  • .github/workflows/desktop.yml builds on Linux, macOS, and Windows runners and produces a per-OS installer:
    • Windows — NSIS installer (StacyVM-amd64-installer.exe)
    • macOS — universal .dmg (StacyVM-macos-universal.dmg, Apple Silicon + Intel)
    • Linux — self-contained AppImage (StacyVM-x86_64.AppImage) + tarball
  • Installers are attached to the GitHub Release on each v* tag, and the workflow can also be run manually via workflow_dispatch.
  • A committed desktop/build/ scaffold (app icon, Info.plist, NSIS config) keeps installer branding and metadata reproducible.
The desktop app bundles the UI and API, but you still need Docker (or another provider) running on the host to spawn sandboxes. v0.15.0 desktop builds are unsigned, so macOS Gatekeeper and Windows SmartScreen show a one-time prompt; the Desktop App guide documents the bypass.

Build & packaging

  • make build now builds the web UI (npm run buildweb/out) before compiling the Go binary, since the CLI embeds the dashboard.
  • make build-desktop is now OS-aware (auto-applies the Linux-only -tags webkit2_41), and desktop/wails.json gained a frontend:install step so clean CI checkouts build the frontend.
  • scripts/npm-setup.mjs builds the web UI before go build and only removes the cloned repo after a successful global install.

Upgrade notes

  • Version: 0.14.x → 0.15.0 (package.json, desktop/wails.json).
  • Building from source now requires the web UI to be built first. make build and npx stacyvm-setup handle this automatically; a bare go build ./cmd/stacyvm needs web/out to exist.
  • Frontend relocation: the previous Vite frontend moved to deprecated/web/; the active dashboard is the Next.js app in web/.
  • Desktop app is a separate prebuilt download and is intentionally not produced by scripts/npm-setup.mjs (that builds the CLI from source).

Bug fixes

  • TUI: stopped styled-in-styled nesting from leaking raw ANSI escape codes in navigation/selection rows (with a regression test).
  • TUI: arrow keys now act within the active screen instead of hijacking screen switching; 16 switch screens.
  • Desktop build fixed: reuse the embedded web.Assets instead of a non-existent frontend/out, and refresh desktop/go.sum for the new gopsutil/v4 dependency.