Pace - Info.plist switch reference (local mode)
Pace - Info.plist switch reference (local mode)
See SETUP_LOCAL.md for the full local-mode recipe. This is the canonical summary of the Info.plist switches that control local VLM / planner / TTS / transcription behavior; it was relocated here from the repository AGENTS.md to keep the agent-instructions file lean.
Always-On Companion Mode adds no Info.plist enable switch. Mode, camera,
ambient-voice, screen, Mac-context, silent-card, and spoken-intervention choices
are explicit default-off UserDefaults managed in Settings → Companion. Companion
visual inference still honors LocalVLMBaseURL but validates it fail-closed as
loopback-only; it never uses the selected cloud conversational tier. See
companion-mode-privacy.md.
Ambient voice has no plist override for its classifier contract. The local
Core ML runtime expects the app-bundled resource
PaceWakeWordClassifier.mlmodelc with exact labels hey_pace and background.
Missing or malformed assets fail closed before Speech.framework or the bounded
post-wake conversation can start.
Ambient voice has no plist override for its classifier contract. The local
Core ML runtime expects the app-bundled resource
PaceWakeWordClassifier.mlmodelc with exact labels hey_pace and background.
Missing or malformed assets fail closed before Speech.framework or the bounded
post-wake conversation can start.
Always-On Companion Mode adds no Info.plist enable switch. Mode, camera,
ambient-voice, screen, Mac-context, silent-card, and spoken-intervention choices
are explicit default-off UserDefaults managed in Settings → Companion. Companion
visual inference still honors LocalVLMBaseURL but validates it fail-closed as
loopback-only; it never uses the selected cloud conversational tier. See
companion-mode-privacy.md.
| Key | Default | Effect when changed |
|---|---|---|
UseLocalVLMForScreenContext |
true |
false to skip the VLM call and send the raw transcript to the planner. |
ScreenAnalysisProvider |
lmStudio |
inProcess / coreML / mlx select the in-process VLM placeholder and currently fall back to LM Studio HTTP until the runtime bridge is wired. |
LocalVLMBaseURL |
http://localhost:1234/v1 |
OpenAI-compatible root for the local VLM. Must be loopback (localhost, 127.0.0.0/8, or ::1); remote/LAN hosts are refused. |
LocalVLMModelIdentifier |
ui-venus-1.5-2b |
Must match the model name loaded in LM Studio. 2B GUI specialist; the OCR layer fills in text fidelity the smaller model would miss. |
AlwaysRunLocalVLMRegardlessOfTranscript |
false |
true → bypass the VLM-skip heuristic, run VLM on every turn |
LocalPlannerBaseURL |
http://localhost:1234/v1 |
OpenAI-compatible root for the local reasoner. Must be loopback (localhost, 127.0.0.0/8, or ::1); remote/LAN hosts are refused. |
LocalPlannerModelIdentifier |
google/gemma-3-12b |
Must match the model name loaded in LM Studio for the planner role. Gemma-3-12B-it (qat-4bit, ~8 GB) is the eval-validated default (2026-06-12 drilldown: only ≤14B model beating the 4B baseline on clarify + out-of-scope + destructive-confirm); swap down to qwen3-4b-instruct for tighter RAM, or qwen/qwen3-30b-a3b for stronger multi-step reasoning on 48 GB machines. |
EnableActions |
true |
false → parse action tags but do not execute local macOS actions. Keep Approve Risky Actions on when this is true. |
AgentMaxSteps |
8 |
Per-task ceiling for the plan-act-observe loop. 1 disables multi-step (loop exits after first response). |
TTSProvider |
localServer |
apple → always use AVSpeechSynthesizer directly. localServer uses the Kokoro sidecar with automatic per-utterance Apple fallback. |
LocalTTSServerBaseURL |
http://localhost:8880/v1 |
Loopback-only OpenAI-compatible TTS root (mlx-audio / kokoro-fastapi). |
LocalTTSServerModel |
mlx-community/Kokoro-82M-bf16 |
Model identifier the sidecar expects (kokoro for kokoro-fastapi). |
LocalTTSServerVoice |
af_heart |
Kokoro voice name. |
LocalTTSServerSpeed |
1.2 |
Playback speed multiplier (0.25–4.0). |
PushToTalkShortcut |
controlOption |
One of controlOption, shiftFunction, shiftControl, controlOptionSpace, shiftControlSpace. Swap if another global dictation tool (e.g. Wispr Flow) is on the same key. |
TranscriptionProvider |
whisperKit |
Shipped default. Resolves to WhisperKit when the runtime is linked and its model is on disk, otherwise falls back to Apple Speech (appleSpeech / apple forces Apple Speech). When the key is unset the factory auto-prefers WhisperKit if the model is already installed. |
PrewarmMailForDrafts |
false |
Shipped default. Set to any value other than false/0/no (or remove the key) to non-activating-launch Mail at Pace startup, avoiding Mail’s cold-launch tax for the streaming draft path. |
LocalRetrievalFileRootPaths |
empty | Optional comma/newline-separated explicit roots for file retrieval. With no roots, File retrieval records a skipped status and does not crawl the Mac. |