Skip to content

Configuration

Pia stores its configuration in %APPDATA%\Pia\settings.json. Property names are camelCase, and enum values are written as their names ("Dark", "Parakeet").

To push settings to managed devices instead, use Enterprise Policy — it takes the same property names.

Setting Type Default Description
theme "System" | "Dark" | "Light" "System" UI theme
uiLanguage "EN" | "DE" | "FR" "EN" Interface language
targetLanguage "EN" | "DE" | "FR" unset Default output language for Optimize
targetSpeechLanguage "Auto" | "EN" | "DE" | "FR" "Auto" Speech-recognition language
Setting Type Default Description
launchAtStartup bool true Start Pia when you sign in to Windows
startMinimized bool false Launch hidden in the system tray
autoCaptureSelectedText bool true Paste the selected text in when a hotkey triggers Pia
defaultWindowMode "Optimize" | "Assistant" "Optimize" Mode used by the New Window button
autoUpdateEnabled bool true Allow auto-update on launch
Setting Type Default Description
defaultOutputAction "CopyToClipboard" | "AutoType" | "PasteToPreviousWindow" "CopyToClipboard" What happens when Optimize finishes
autoTypeDelayMs integer 10 AutoType delay in milliseconds
defaultTemplateId GUID unset Default optimization template
Setting Type Default Description
sttBackend "Parakeet" | "Whisper" "Parakeet" Speech-to-text engine
whisperModel "Tiny" | "Base" | "Small" | "Medium" | "Large" "Base" Whisper model size (ignored by Parakeet)
ttsEnabled bool false Enable text-to-speech
ttsVoiceModelKey string "en_US-lessac-medium" TTS voice identifier
Setting Type Default Description
defaultProviderId GUID unset Provider used when no per-mode default applies
useSameProviderForAllModes bool true Use one provider across Optimize and Assistant
modeProviderDefaults object {} Window mode → provider GUID
modePersonaDefaults object {} Window mode → persona GUID
Setting Type Default Description
assistantFilesFolder string unset The only folder the assistant may touch. Empty ⇒ no file access
assistantDefaultWorkingDirectory string "Playground" Subfolder new chats start in. Empty ⇒ the folder root
assistantFileToolsEnabled bool true Allow reading and writing files in that folder
assistantGitToolsEnabled bool true Allow git commands in that folder
assistantSuggestionsEnabled bool false Show suggested prompts on an empty chat
assistantAgentModeDefault bool false Start new chats with the lever on Agent (no UI)
alwaysAllowedTools array [] Standing tool grants. Managed from the settings page
Setting Type Default Description
chatHistoryRetentionDays integer 180 Delete chats not opened for this many days (1–730). A favorite chat is exempt
chatAutoTitleEnabled bool false Generate a short title per chat (costs an extra call)

See the Agent Runs guide for what each limit means.

Setting Type Default Description
agentMaxSteps integer 24 Maximum steps in an interactive run
maxToolRoundsPerStep integer 24 Maximum tool rounds within one step
agentWallClockMinutes integer 20 Time limit for an interactive run
agentMaxReplans integer 2 Re-plans allowed after a step fails
agentPlanReasoningTurnEnabled bool false Add a tool-free thinking turn before planning
agentRunAutoApproveBuiltInWrites bool false Skip approval for Pia’s own write tools in agent runs and voice mode
agentPersonaRoster object {} Operating mode → persona GUIDs the planner may assign to steps
scheduledMaxSteps integer 24 Maximum steps in a background or scheduled run
scheduledWallClockMinutes integer 45 Time limit for a background or scheduled run
scheduledMaxReplans integer 2 Re-plans allowed in a background or scheduled run
maxParallelBackgroundRuns integer 2 Background runs at the same time; extras queue
maxParallelRequestsPerProvider integer 4 Concurrent requests Pia will make to one provider (no UI)
Setting Type Default Description
meetingAttendeeDisplayName string unset Name shown to other participants. Empty ⇒ “‹your name›’s assistant”
meetingTranscriptFolder string unset Folder the Save… dialog opens in
meetingBrowserSelection "BundledChromium" | "SystemChrome" | "SystemEdge" | "SystemDefault" "BundledChromium" Which browser Pia drives
meetingAttendeeShowBrowserWindow bool false Show the browser window instead of joining hidden
enableMeetingDiarization bool true Split the transcript by speaker
meetingSmartSpeakerDetection bool true Let Pia tune and correct speaker assignments itself
speakerEmbeddingThreshold float 0.50 Voice-matching sensitivity (smart detection off)
meetingMaxSpeakers integer 0 Cap on distinct speakers. 0 ⇒ no limit
meetingMinSpeechSeconds float 1.5 Speech needed before a speaker is identified
meetingAttendeeRosterSnapshotMinutes integer 2 How often the participant list is re-read (no UI)
Setting Type Default Description
autoIngestSources bool true Compile documents dropped into the vault’s sources folder
privacy.tokenizationEnabled bool true Replace personal data with tokens before sending text to a provider
privacy.piiKeywords array [] Your own PII keywords
Setting Type Default Description
syncEnabled bool false Enable Pia Cloud sync
serverUrl string unset Server URL, for self-hosting
trustSelfSignedCertificates bool false Accept self-signed TLS certificates

settings.json also holds state that isn’t a preference: sign-in tokens, encryption key material and device IDs, sync timestamps and ETags, window position and size, unsent drafts, column widths, and schema-version markers. Leave these alone — editing them can sign you out or, in the case of the encryption keys, cut you off from your own data.