# AI Workspace Menu Bar App Design ## Goal Provide a small native macOS control surface for the AI Workspace Service Manager. The app should not reimplement service logic. It should call the service manager/daemon API or CLI and display status, actions, and diagnostics. ## Recommended Shape - SwiftUI `MenuBarExtra` app. - Local-only, no cloud dependency. - Start at login optional through `LaunchAgent` later. - Read-only status by default; explicit user actions for start/stop/restart. ## Initial UI ```text AI Workspace ▾ Profile: Fidelity Services ✓ Context MCP Running ✓ Mattermost Proxy Running ✓ Mattermost Desktop Launched ✓ Photo Inbox Running Actions Start Fidelity Stop Fidelity Restart Context MCP Open Mattermost Open Photo Inbox Folder Copy Photo Inbox Upload URL Open Project Knowledge Open Logs Diagnostics Run Doctor Copy Doctor JSON Show Recent Errors Settings Start at Login Open Config Folder ``` ## Backend Contract The first version can shell out to: ```bash python3 scripts/aiw/services.py status --profile fidelity python3 scripts/aiw/services.py doctor --profile fidelity --json python3 scripts/aiw/services.py start --profile fidelity python3 scripts/aiw/services.py stop --profile fidelity python3 scripts/aiw/services.py restart aiw-context-mcp --profile fidelity ``` Longer term, prefer a small local daemon HTTP/Unix-socket API so the UI does not parse terminal text except `doctor --json`. ## Production-Ready Rules - Do not store secrets in the app bundle. - Do not expose services beyond localhost unless explicitly configured. - Show whether a process is managed or externally running. - Surface missing dependencies from doctor checks. - Never let the app promote project memory automatically. - Keep capture services and context MCP separate; the app only orchestrates lifecycle. ## Implementation Phases 1. CLI-backed SwiftUI menu bar app using `doctor --json` for status. 2. Add profile selector and service action buttons. 3. Add LaunchAgent support for start at login. 4. Replace shell parsing with a daemon API if daily use proves stable.