About, updates and launch
The About window and its update channel, what the apps do once they launch (the bundled cua install), and the daemon and refresh reports they read.
The About window and its update channel, what the apps do once they launch (the bundled cua install), and the daemon and refresh reports they read.
These APIs are part of the Cua Spaces app export for building Spaces UIs. They are source-available under FSL-1.1-MIT and ship for Swift only (import CuaSpacesFFI); the Rust tab shows the cua-spaces-ffi crate they come from. The open source SDK packages for Python, TypeScript and Kotlin do not include them.
app_about_view builds the About window from the shell's AppAboutInput; app_about_after_launch and app_about_restart_daemon say what to do after an update or when the daemon is from another build. AppCliInstaller puts the bundled cua on PATH on first launch.
AppDaemonCheck record#Returned by app_daemon_check_from_json.
| Field | Type | Default | Description |
|---|---|---|---|
daemon_exe / daemonExe | Option<String> | The running daemon's executable (None: no daemon, or unknown). | |
bundle | String | This app's bundle (/Applications/Cua Spaces.app). |
app_daemon_check_from_json#A daemon check from JSON (parity flows).
func appDaemonCheckFromJson(json: String) throws -> AppDaemonCheck| Parameter | Type | Default |
|---|---|---|
json | String | required |
Returns AppDaemonCheck · Raises CuaError
AppRefreshReport record#Returned by app_refresh_report_from_json.
| Field | Type | Default | Description |
|---|---|---|---|
agents_error / agentsError | Option<String> | cua agents update failed (its words). | |
daemon_error / daemonError | Option<String> | Restarting the daemon failed (its words). |
app_refresh_report_from_json#A refresh report from JSON (parity flows).
func appRefreshReportFromJson(json: String) throws -> AppRefreshReport| Parameter | Type | Default |
|---|---|---|
json | String | required |
Returns AppRefreshReport · Raises CuaError
AppUpdateChannel enum#.stable
.beta| Variant | Description |
|---|---|
Stable | Releases (the default). |
Beta | Releases and prereleases (X.Y.Z-suffix). |
AppCliInstaller#Puts the app's bundled cua on PATH on first launch (there is no
onboarding page for it). The same installer the Tauri app runs;
plan reads what installing would do without writing.
| Method | Description |
|---|---|
for_executable | This machine: the cua next to executable (the app's own executable), $HOME, $PATH and $SHELL. |
with_paths | Explicit paths (tests): the bundled CLI, the bin directory, the PATH value to check and the shell profile a PATH change edits. |
install | Installs the CLI (after the user consented to the plan). |
plan | What installing would do (nothing is written). |
AppCliInstaller.for_executable#This machine: the cua next to executable (the app's own
executable), $HOME, $PATH and $SHELL.
static func forExecutable(executable: String) -> AppCliInstaller| Parameter | Type | Default |
|---|---|---|
executable | String | required |
Returns AppCliInstaller
AppCliInstaller.with_paths#Explicit paths (tests): the bundled CLI, the bin directory, the PATH value to check and the shell profile a PATH change edits.
static func withPaths(bundled: String?, binDir: String, pathEnv: String, profile: String) -> AppCliInstaller| Parameter | Type | Default |
|---|---|---|
bundled | Option<String> | required |
bin_dir | String | required |
path_env | String | required |
profile | String | required |
Returns AppCliInstaller
AppCliInstaller.install#Installs the CLI (after the user consented to the plan).
func install(request: AppCliInstallRequest) async throws -> AppCliInstallPlan| Parameter | Type | Default |
|---|---|---|
request | AppCliInstallRequest | required |
Returns AppCliInstallPlan · Async · Raises CuaError
AppCliInstaller.plan#What installing would do (nothing is written).
func plan() async -> AppCliInstallPlanReturns AppCliInstallPlan · Async
AppAboutInput record#Returned by app_about_input_from_json.
| Field | Type | Default | Description |
|---|---|---|---|
platform | String | macos, linux or windows. | |
version | String | The full version (0.2.0, 0.2.0-staging.6). | |
build | String | The build (the macOS app's CFBundleVersion, 0.2.0.123; may be empty). | |
os | String | This machine for an issue report (macOS 26.0 (arm64)). | |
updater | bool | The app updates itself (its updater is running). | |
auto_check / autoCheck | bool | The updater checks on its own. | |
auto_install / autoInstall | bool | The updater downloads and installs on its own. | |
channel | AppUpdateChannel | The chosen channel. | |
last_check / lastCheck | Option<String> | The last check, as the shell formats a date; None: never. | |
checking | bool | A check is running. |
AppAboutLink record#| Field | Type | Default | Description |
|---|---|---|---|
id | AppAboutLinkId | Which. | |
label | String | "Privacy Policy". | |
url | Option<String> | What it opens; None: the notices the app bundles. |
AppAboutUpdates record#| Field | Type | Default | Description |
|---|---|---|---|
auto_check_label / autoCheckLabel | String | "Automatically check for updates". | |
auto_check / autoCheck | bool | Checked. | |
auto_install_label / autoInstallLabel | String | "Install updates automatically". | |
auto_install / autoInstall | bool | Checked. | |
auto_install_enabled / autoInstallEnabled | bool | It can be used (only with automatic checks). | |
channel_label / channelLabel | String | "Update to:". | |
channels | Vec<AppSettingsOption> | Stable, Beta. | |
channel_help / channelHelp | String | The channel picker's tooltip. | |
check_label / checkLabel | String | "Check Now" (or "Checking…"). | |
check_enabled / checkEnabled | bool | Check Now can be used. | |
last_check / lastCheck | String | "Last check: …". |
AppAboutView record#Returned by app_about_view.
| Field | Type | Default | Description |
|---|---|---|---|
title | String | "Cua Spaces for macOS". | |
version_line / versionLine | String | "Version 0.2.0 (0.2.0.123)". | |
links | Vec<AppAboutLink> | Acknowledgements, Privacy Policy, Terms of Service, Report an Issue. | |
copyright | String | "© 2026 Cua AI, Inc. All rights reserved." | |
updates | Option<AppAboutUpdates> | The update controls, when the app updates itself. |
AppCliInstallPlan record#Returned by AppCliInstaller.install, AppCliInstaller.plan.
| Field | Type | Default | Description |
|---|---|---|---|
source | Option<String> | The bundled CLI, when this build carries one. | |
target | String | Exact file the CLI is written to. | |
bin_dir / binDir | String | Directory of target. | |
method | Option<AppInstallMethod> | symlink or copy. | |
installed | bool | Something already exists at target. | |
up_to_date / upToDate | bool | target resolves to this app's bundled CLI (nothing to do). | |
installed_version / installedVersion | Option<String> | cua --version of what is at target. | |
bundled_version / bundledVersion | Option<String> | cua --version of the bundled CLI. | |
shadowed_by / shadowedBy | Option<String> | Another cua found earlier on PATH (it would shadow target). | |
on_path / onPath | bool | bin_dir is already on PATH. | |
path_profile / pathProfile | Option<String> | Shell profile (or "user PATH" on Windows) the PATH change would edit. | |
path_line / pathLine | Option<String> | The line that would be added to path_profile. |
AppCliInstallRequest record#| Field | Type | Default | Description |
|---|---|---|---|
modify_path / modifyPath | bool | Also add the bin dir to PATH (edits path_profile). |
AppLaunchInput record#Returned by app_launch_input_from_json.
| Field | Type | Default | Description |
|---|---|---|---|
last_seen / lastSeen | Option<String> | AppSettings.last_seen_version (None: never recorded). | |
version | String | This version (0.2.0-staging.6). | |
build | String | This build (0.2.0.123; may be empty). | |
onboarded | bool | The first run finished (a record-less launch after it is an update from a build that kept no record; before it, a fresh install). |
AppLaunchPlan record#Returned by app_about_after_launch.
| Field | Type | Default | Description |
|---|---|---|---|
refresh | bool | This launch follows an update: refresh the agents' skills and MCP entries (cua agents update) and restart the app's own daemon. | |
save | Option<String> | Save as AppSettings.last_seen_version (None: unchanged). |
AppAboutLinkId enum#.acknowledgements
.privacy
.terms
.issue| Variant | Description |
|---|---|
Acknowledgements | The third-party notices the app bundles. |
Privacy | The privacy policy. |
Terms | The terms of service. |
Issue | A new issue. |
AppInstallMethod enum#.symlink
.copy| Variant | Description |
|---|---|
Symlink | A symlink into the app bundle: app updates update the CLI too. |
Copy | A copy of the bundled binary. |
app_about_after_launch#What this launch does (refresh after an update; the version to record).
func appAboutAfterLaunch(input: AppLaunchInput) -> AppLaunchPlan| Parameter | Type | Default |
|---|---|---|
input | AppLaunchInput | required |
Returns AppLaunchPlan
app_about_allowed_channels#The Sparkle channels an updater on channel may install from.
func appAboutAllowedChannels(channel: AppUpdateChannel) -> [String]| Parameter | Type | Default |
|---|---|---|
channel | AppUpdateChannel | required |
Returns Vec<String>
app_about_input_from_json#The About input from JSON (parity flows).
func appAboutInputFromJson(json: String) throws -> AppAboutInput| Parameter | Type | Default |
|---|---|---|
json | String | required |
Returns AppAboutInput · Raises CuaError
app_about_refresh_notice#The one notice after a failed refresh (None when it worked).
func appAboutRefreshNotice(report: AppRefreshReport) -> String?| Parameter | Type | Default |
|---|---|---|
report | AppRefreshReport | required |
Returns Option<String>
app_about_restart_daemon#Whether the running daemon is this app's own (restart it after an update).
func appAboutRestartDaemon(check: AppDaemonCheck) -> Bool| Parameter | Type | Default |
|---|---|---|
check | AppDaemonCheck | required |
Returns bool
app_about_view#Settings, About: name, version, links, copyright and the update controls.
func appAboutView(input: AppAboutInput) -> AppAboutView| Parameter | Type | Default |
|---|---|---|
input | AppAboutInput | required |
Returns AppAboutView
app_launch_input_from_json#A launch from JSON (parity flows).
func appLaunchInputFromJson(json: String) throws -> AppLaunchInput| Parameter | Type | Default |
|---|---|---|
json | String | required |
Returns AppLaunchInput · Raises CuaError