77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
# 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.
|