Caker

Virtualization platform for macOS

View project on GitHub

Release Notes

2026-06-20 (Git log summary - main)

Added

  • See commit highlights below.

Updated

  • feat: Enable macOS 27+ guest installation in App Store builds
  • feat: Correct conditional compilation for VirtualInstallSPI backend
  • feat: Enhance VM creation reliability and error reporting
  • feat: Conditionally compile IPSW installer for arm64
  • feat: Update DFU restore mode setting label
  • feat: Expand tilde in build option file paths
  • feat: Propagate build errors via build stream
  • feat: enable virtual install backend and DFU mode for App Store builds
  • fix: Ensure reliable IPSW installer cancellation in async contexts
  • fix: Correct VZMacOSInstaller lifecycle for queued IPSW installs
  • Potential fix for pull request finding
  • Potential fix for pull request finding
  • Discard uneeded import
  • refactor: Reset gcdStarted state early during GrandCentral termination
  • refactor: Enhance GrandCentral state management and watcher logic
  • feat: Set VM status to running on external process detection
  • refactor: Make DirWatcher callback non-throwing
  • feat: Enhance VM directory watcher for robustness and detailed logging
  • feat: Monitor VM directories in app mode
  • refactor: Simplify CodableError userInfo key handling

Notes

  • Summary generated automatically from recent git commits on branch main.
  • Command used: git log --no-merges --oneline -n 20 -- Sources wiki .github/workflows.

2026-06-17

Added

  • macOS 27 (Golden Gate) installation backend (non-App Store builds, Apple Silicon only): Caker now installs macOS 27 guests using the private AppleMobileDeviceRestore (AMRestore) framework instead of VZMacOSInstaller. This works around the VZMacOSInstaller regression that stalls at ~78% when installing macOS 27 guests on a macOS 26 host (utmapp/UTM#7746). The new path is selected automatically whenever the IPSW targets macOS 27 or later, and can be force-enabled on any version with the CakerForceVirtualInstallBackend UserDefaults key.

Notes

  • AMRestore talks to system daemons (com.apple.mobile.restored) that are blocked by the App Sandbox, so this feature is intentionally absent from the App Store build.
  • Restore logs are written to ~/Library/Application Support/Caker/VirtualInstall/Logs/.
  • See the FAQ and Troubleshooting pages for diagnosis guidance.

2026-05-29

Added

  • LXD REST API: caked service listen --rest enables an LXD-compatible HTTP/HTTPS API server at /1.0/instances, /1.0/networks, /1.0/images, /1.0/operations, /1.0/certificates, /1.0/identities, and /1.0/auth-groups. Default ports: 8443 (HTTPS/mTLS), 8080 (HTTP). Override with --rest-port.
  • Web UI: caked service listen --web-ui <path> serves the bundled React/Vite frontend at /ui. Accepts a directory or a .zip archive.
  • caked convert command: converts QCOW2 or VMDK disk images to raw format using a pure-Swift implementation (no external tools required). Flags: --source-format qcow2 (default) or --source-format vmdk.
  • cakectl vnc command: opens a native VNC client window connected to a running VM’s display. Automatically tunnels the VNC connection through caked.
  • Ubuntu 26.04 (Resolute Rhino) build script support updated.

Updated

  • TLS certificate handling hardened: force-unwrap removed, mTLS CA certificate required for password bypass.
  • Basic Auth credential moved to in-memory storage (no longer written to sessionStorage).
  • About view updated to reflect remote control (CLI, GUI, and Web API) capabilities.

Notes

  • The REST API is LXD-compatible; existing LXD clients and tooling can connect directly to caked.
  • The Web UI development proxy (VITE_API_TARGET) defaults to http://127.0.0.1:8080.

2026-03-26 (Git log summary - main)

Added

  • See commit highlights below.

Updated

  • Refactor ensurePrivilegedBootstrapFiles call
  • Update Sources/caker/Model/AppState.swift
  • Terminate app and alert user on privileged bootstrap failure
  • Use singleton pattern for AppState and automate bootstrap file check
  • Clarify error message for IPSW usage on non-ARM architectures
  • Use shared constant for the caked command name
  • Improve error feedback for virtual machine loading failures
  • Adjust daemon launch priority to background
  • Refactor service management and introduce manual daemon control
  • Refactor AppState service loading and mode switching logic
  • Configure window title and toolbar style for HomeView
  • Add run mode status indicator to the HomeView toolbar
  • Group navigation toolbar items
  • Finish shell stream when closing the interactive shell
  • Hide background visibility for VM status toolbar items
  • Update Sources/caker/MainApp.swift
  • Update Sources/caker/Helpers/Authorization.swift
  • Update Sources/caker/Helpers/Authorization.swift
  • Update Sources/caker/Helpers/Authorization.swift
  • Refactor privileged operations to use native Authorization Services

Notes

  • Summary generated automatically from recent git commits on branch main.
  • Command used: git log --no-merges --oneline -n 20 -- Sources wiki.

2026-03-03 (Git log summary - main)

Added

  • See commit highlights below.

Updated

  • Adds helper for consistent virtual machine document creation
  • Adds handler for retrieving VM infos and configuration
  • Refactors agent helper creation for consistency
  • Refactors command handlers to use provider instead of client
  • Adds utility to instantiate agent helpers with varied inputs
  • Simplifies init call syntax for data conversion
  • Refactors info retrieval to support VMLocation input
  • Removes runMode check when selecting gRPC client usage
  • Adds option to include VM config in list output
  • Adds option to include VM config in list commands
  • Use display.cgSize for document view sizing
  • Add Codable conformance to SupportedPlatform
  • Make enum codable and remove unused conformances
  • Simplifies console config to use String instead of struct
  • Standardizes display size types across the application
  • Refactors InfosHandler file structure
  • Adds optional VM configuration to list requests
  • Refactor config mapping and introduce public model
  • Refactors VM hardware identifier storage
  • Centralizes VM configuration and image source types

Notes

  • Summary generated automatically from recent git commits on branch main.
  • Command used: git log --no-merges --oneline -n 20 -- Sources wiki.

2026-02-26 (Git log summary - main)

Added

  • Grand Central Dispatch capabilities for live VM/system status streaming (including gcd command and updater flow).
  • gRPC methods for Grand Central dispatcher/update paths and related status stream handling.
  • Additional project dependencies and test plan scaffolding.

Updated

  • Service startup/shutdown behavior refined.
  • VM start command help/descriptions improved.
  • CLI help request and error handling improved.
  • VM/network runtime reliability improved (status updates, gRPC stability, network startup logic).
  • Shell command handling improved (including safer argument quoting).

Notes

  • Summary generated from recent commits on branch main.
  • See git history for full details: git log --oneline.

2026-02-26

Added

  • Initial wiki structure published.
  • Getting Started, Architecture, Development, Troubleshooting, and FAQ pages.
  • Wiki publishing script: Scripts/publish-wiki.sh.

Updated

  • Contribution guidance aligned to base branch main.
  • Wording and structure polished across core wiki pages.

Notes

  • Wiki publication requires GitHub Wiki access on the target repository.
  • For private repositories, use GH_TOKEN/GITHUB_TOKEN or USE_SSH=1.

How to update this wiki

  1. Edit pages in the local wiki/ directory.
  2. Review changes and keep navigation in sync (Home.md and _Sidebar.md).
  3. (Optional) Create a dated release note entry automatically with:
    • ./Scripts/new-wiki-release-entry.sh
    • or ./Scripts/new-wiki-release-entry.sh YYYY-MM-DD
  4. Publish with:
    • GH_TOKEN="${GITHUB_TOKEN}" ./Scripts/publish-wiki.sh Fred78290 caker
    • or USE_SSH=1 ./Scripts/publish-wiki.sh Fred78290 caker
  5. Add notable documentation updates in the new dated entry.

Entry template

Copy/paste this block for the next update:

## YYYY-MM-DD

### Added
- ...

### Updated
- ...

### Notes
- ...