# Local Voice Assistant Category Snapshot

Fetched: 2026-06-10
Sources: dottie.ai, OpenFelix README, Pace `docs/product/landing/v1-draft.md`, user
`assistant` repo ideas (2026-04)

## Category Definition

"Private voice assistant for Mac" products combine menu-bar presence, push-to-talk
or wake-word input, speech-to-text, a planner/agent loop, optional screen vision,
text-to-speech, and macOS tool execution. Representative apps:

- **Dottie** — menu-bar coworker; Fn push-to-talk dictation at cursor; "Hey Dottie"
  wake word; MLX Kokoro TTS; agent mode with large tool surface; `dottie://` URL
  schemes for Shortcuts (`record`, `chat?text=`, `type?text=`).
- **OpenFelix** — open-source Swift menu-bar agent; Option+Space voice/text;
  local MLX models plus optional cloud models; screen vision, cron, proactive
  Telegram/Discord alerts.
- **Wispr Flow** — cloud round-trip dictation; privacy is policy-based, not
  architectural.

Pace sits in this category but commits to **fully on-device** speech, vision,
reasoning, and TTS with LM Studio loopback planners and Apple Speech STT.

## Common UX Patterns

- Menu-bar or notch capsule (no dock icon).
- Hold-to-talk global shortcut with audio-reactive UI.
- Streaming TTS so the assistant speaks before the full response completes.
- Settings for permissions (mic, speech, accessibility, screen recording).
- Scriptable automation via custom URL schemes.

## User Assistant Repo Ideas (product north star)

The user's `sarthakagrawal927/assistant` prototype (Vite chat UI + FastAPI
DeepSeek tool loop) captured early product ideas that extend beyond chat:

- **Privacy-first memory** — the assistant only knows what the user chooses to
  expose; visualize captured vs locked context.
- **Proactive assistants** — agents that can ping the user when something matters
  (OpenFelix's proactive alerts are the closest shipped analogue).
- **Multi-expert routing** — complex queries delegate to specialist assistants
  (Pace's intent classifier + tool registry are a local-first slice of this).

The web prototype is not integrated (frontend stub, in-memory todos backend) and
uses cloud DeepSeek — not the Pace runtime path.

## Pace Relevance

Pace already matches the voice-assistant shell: PTT, streaming TTS, planner
tool loop, screen context, MCP bridge, approval gates, and menu-bar panel.

Gaps vs category leaders:

| Pattern | Dottie / OpenFelix | Pace today |
| --- | --- | --- |
| `dottie://` / scriptable URLs | Yes | Not yet |
| Wake word | Dottie | Not yet |
| Dictation-at-cursor only mode | Dottie PTT-to-type | Agent-first pipeline |
| Proactive outbound alerts | OpenFelix cron/alerts | Watch mode only |
| Cloud model option | Optional upgrade path | Intentionally removed |

Pace differentiation to keep: **no cloud LLM/STT/TTS path**, **AX-first local
actions**, **eval-gated planner**, and **loopback-only model endpoints** guarded
by `PaceLocalEndpointGuard`.

Convergence path: add `pace://` deeplinks, optional dictation-only fast path, and
proactive notifications tied to watch-mode or retrieval triggers — without
re-opening cloud model transport.
