Skip to content

Settings Reference

Settings are persisted to settings.json in the app data directory (see App Directories). The Rust backend reads this file on startup; the frontend reads and writes it through the load_settings / save_settings Tauri commands via the Zustand settings store (src/store/settings/).

All keys are camelCase in the JSON file.


KeyTypeDefaultDescription
editorPreference"in-app" | "vscode" | "cursor" | "zed" | "sublime" | "system""in-app"Which editor to use when opening files. "in-app" uses the built-in CodeMirror editor.
minimapEnabledbooleantrueShow/hide the minimap in the in-app editor.
editorFontSizenumber13Font size in px for the in-app editor.
editorFontFamilystring"JetBrains Mono"Font family for the in-app editor.
editorLineHeightnumber1.4Line height multiplier for the in-app editor.

KeyTypeDefaultDescription
terminalFontSizenumber13Font size in px for the embedded terminal (xterm.js).
terminalFontFamilystring"JetBrains Mono"Font family for the terminal.
terminalCursorStyle"block" | "bar" | "underline""bar"Terminal cursor shape.
terminalCursorBlinkbooleantrueWhether the terminal cursor blinks.
terminalLineHeightnumber1.0Line height multiplier for the terminal.
terminalShellstring | nullnullPath to the shell binary. null = auto-detect (uses $SHELL).

KeyTypeDefaultDescription
themeMode"dark" | "light" | "system""dark"Color scheme. "system" follows the OS preference.
themeIdstring"magia"ID of the active theme. Built-in: "magia". User themes loaded from ~/.magia/themes/.
chatFontSizenumber14Font size in px for the chat message list.
chatLineHeightnumber1.5Line height multiplier for chat messages.
chatFontFamilystring"Noto Sans"Font family for chat messages.
titleSuggestionsEnabledbooleantrueAutomatically suggest session titles based on the first prompt.
closeBehavior"minimize_to_tray" | "quit""minimize_to_tray"What happens when the window close button is clicked.
developerModebooleanfalseEnable developer tools and feature flags in Settings.
featureFlagsRecord<string, boolean>{}Map of feature flag overrides. Only meaningful when developerMode is true.
watchdogTimeoutSecsnumber15Seconds before the agent watchdog considers a session stalled.
workspacesEnabledbooleantrueEnable the Workspaces feature.
workspaceDisplayMode"tabs" | "sidebar""tabs"How workspaces are shown in the UI.
confirmBeforeQuitbooleantrueShow a confirmation dialog before quitting when a session is running.

KeyTypeDefaultDescription
defaultProviderLlmProviderId"claude"The LLM provider used for new sessions. Valid values: "claude", "gemini", "codex".
providerBinaryPathsRecord<string, string>{}Manual overrides for provider binary paths (e.g. { "claude": "/usr/local/bin/claude" }). Empty string = auto-detect.

KeyTypeDefaultDescription
observationMode"off" | "post-session" | "live""live"When observations are generated. "live" = during the session; "post-session" = after it ends.
observationIntervalMinutesnumber10How often (in minutes) to produce a live observation.
observationModelstring"haiku"Model used to generate observations.
observationProviderstring"claude"Provider used for observation calls.
sideQuestionModelstring"haiku"Model used for lightweight side questions (e.g. title generation).

KeyTypeDefaultDescription
permissionPreset"acceptEdits" | "default" | "dontAsk" | "plan" | "auto" | "bypassPermissions""default"Global tool-use permission preset applied to new sessions.
toolPermissionsToolPermission[][]Per-tool auto-approve overrides. Each entry: { toolName: string, autoApprove: boolean }.

KeyTypeDefaultDescription
voiceInputEnabledbooleanfalseEnable the voice input button in the chat input.
whisperModelstring"base"Whisper model variant to use for transcription. Options: "tiny", "base", "small", "medium", "large".
whisperLanguagestring"auto"BCP-47 language code for Whisper. "auto" = language detection.
whisperDeviceIdstring""Audio input device ID. Empty string = system default.
sttEnginestring"auto"Which STT engine to use. "auto" = prefer Parakeet if available, fall back to Whisper. "whisper" = always Whisper. "parakeet" = always Parakeet.

KeyTypeDefaultDescription
notificationsEnabledbooleantrueMaster switch for all Magia notifications.
notifSessionCompletedbooleantrueNotify when an agent session completes.
notifSessionErrorbooleantrueNotify when an agent session encounters an error.
notifAgentWaitingbooleantrueNotify when an agent is waiting for user permission.
notifSystemUpdatesbooleantrueNotify when a new Magia update is available.
notifSoundEnabledbooleantruePlay a sound with notifications.
desktopNotificationsEnabledbooleantrueShow native OS desktop notifications (requires OS permission).

KeyTypeDefaultDescription
syncIntervalMinutesnumber10How often (in minutes) the session cache is synced from disk in the background.
memoryEnabledbooleantrueEnable the memory system (observations + reflections).
reflectionsEnabledbooleantrueEnable long-term memory distillation (reflections). Requires memoryEnabled.
memoryRetentionDaysnumber90How many days to keep observations before they are pruned.
memoryMaxSizeMbnumber50Maximum total size of the memory store in MB.
reflectionIntervalMinutesnumber120How often (in minutes) the reflector runs.
observationSystemPromptstring | nullnullCustom system prompt for the Observer LLM call. null = use the built-in default.
reflectionSystemPromptstring | nullnullCustom system prompt for the Reflector LLM call. null = use the built-in default.

KeyTypeDefaultDescription
otelEnabledbooleantrueEnable the OpenTelemetry collector that captures per-session metrics.
otelMetricExportIntervalMsnumber5000How often (in ms) metrics are flushed to the collector.
otelLogsExportIntervalMsnumber2000How often (in ms) log spans are flushed to the collector.
otelLogUserPromptsbooleanfalseInclude user prompt text in OTel spans. Disabled by default for privacy.
otelLogToolDetailsbooleanfalseInclude tool input/output in OTel spans. Disabled by default for privacy.
otelCollectorPortnumber4318TCP port for the OTel HTTP collector fallback (used when Unix socket fails).
crashReportingEnabledbooleantrueSend crash reports to Sentry. Only active in official builds (requires SENTRY_DSN at compile time).
analyticsEnabledbooleantrueSend anonymous usage analytics via PostHog. Only active in official builds.

KeyTypeDefaultDescription
autoCheckUpdatesbooleantruePeriodically check for Magia updates in the background.
dismissedUpdateVersionstring | nullnullVersion string that the user has dismissed. The update banner is suppressed until a newer version is available.
updateChannelstring"stable"Update channel to subscribe to. "stable" = production releases; "beta" = pre-releases.