# AI Workspace macOS Menu Bar App Minimal SwiftUI `MenuBarExtra` app for controlling local AI Workspace services. The app is intentionally a thin UI over the service manager. It reads live status from: ```bash python3 scripts/aiw/services.py status --profile fidelity --json ``` and sends lifecycle actions through `scripts/aiw/services.py`. ## Build ```bash swift build --package-path apps/mac/AIWorkspace ``` ## Package as `.app` ```bash apps/mac/AIWorkspace/scripts/package-app.sh ``` Install to `~/Applications/AIWorkspace.app`: ```bash apps/mac/AIWorkspace/scripts/package-app.sh --install ``` The script defaults to the per-user install location because this workspace is a developer-local utility and frequent rebuilds should not require `sudo`. To install system-wide instead, pass an explicit install directory: ```bash INSTALL_DIR=/Applications apps/mac/AIWorkspace/scripts/package-app.sh --install APP_PATH=/Applications/AIWorkspace.app apps/mac/AIWorkspace/scripts/install-start-at-login.sh ``` Avoid keeping both `~/Applications/AIWorkspace.app` and `/Applications/AIWorkspace.app` installed unless you are intentionally comparing builds. They share the same bundle identifier (`com.aiworkspace.menu`) and can confuse LaunchServices, login item registration, and which copy opens at login. If both exist, quit any running AI Workspace instances and remove the stale copy. ## Build a DMG ```bash apps/mac/AIWorkspace/scripts/build-dmg.sh ``` This creates: ```text apps/mac/AIWorkspace/dist/AIWorkspace.dmg ``` The DMG contains `AIWorkspace.app` and an `Applications` shortcut for drag-and-drop installation. One-step local install, optionally enabling start at login and opening the app: ```bash apps/mac/AIWorkspace/scripts/install.sh --start-at-login --open ``` ## Start at login Preferred: open the installed app and use the **Start at Login** toggle in the UI. The app uses macOS `SMAppService` for login item registration. Development fallback after installing the app bundle: ```bash apps/mac/AIWorkspace/scripts/install-start-at-login.sh ``` To remove the login item: ```bash apps/mac/AIWorkspace/scripts/uninstall-start-at-login.sh ``` ## Run during development ```bash swift run --package-path apps/mac/AIWorkspace AIWorkspace ``` ## Current actions - Refresh status - Start Fidelity services - Stop Fidelity services - Restart Context MCP - Open Mattermost through the service manager - Open Mattermost through the local proxy-managed launcher - Run Doctor - Copy Doctor JSON - Copy Photo Inbox URL - Copy recent logs - Open MCP Health - Open logs folder - Open project knowledge ## Notes - This is not yet packaged as a signed `.app` bundle. - Start at login should be implemented later through a LaunchAgent or app login item. - Start at Login is available in the app UI through `SMAppService`. The LaunchAgent scripts are retained as development fallback utilities. - The app should remain a UI layer; service lifecycle remains in `scripts/aiw/services.py`.