Skip to main content

Type Definitions

RuntimeMode

type RuntimeMode = "online" | "local";
Defines the execution mode for speech-to-text and AI models.
online
string
Uses cloud-based API services for processing
local
string
Uses locally installed models (Ollama, local STT)

CaptureMode

type CaptureMode = "single-tap" | "push-to-talk";
Defines how audio input is captured from the user.
single-tap
string
Record starts and stops automatically
push-to-talk
string
Hold key/button to record, release to stop

TtsEngine

type TtsEngine = "piper" | "coqui";
Specifies which text-to-speech engine to use.
piper
string
Fast, lightweight TTS engine (default)
coqui
string
High-quality TTS with voice cloning (requires Python)

StyleProfile

type StyleProfile = "adaptive" | "professional" | "casual" | "concise" | "developer";
Controls the response style of the AI assistant.
adaptive
string
Adjusts tone based on context
professional
string
Formal, business-appropriate responses
casual
string
Friendly, conversational tone
concise
string
Brief, to-the-point answers
developer
string
Technical, code-focused responses

ThemeMode

type ThemeMode = "system" | "light" | "dark";
Determines the application’s visual theme.
system
string
Follow system preference
light
string
Force light theme
dark
string
Force dark theme

DictationLanguageMode

type DictationLanguageMode = "single" | "multiple";
Controls language support for dictation.
single
string
Use one primary language
multiple
string
Support multiple languages from allow list

Stage

type Stage = "idle" | "recording" | "processing" | "speaking" | "error";
Represents the current state of the assistant pipeline.
idle
string
Waiting for user input
recording
string
Actively capturing audio
processing
string
Transcribing and generating response
speaking
string
Playing TTS audio output
error
string
An error occurred in the pipeline

Interfaces

HotkeySpec

interface HotkeySpec {
  ctrl: boolean;
  shift: boolean;
  alt: boolean;
  meta: boolean;
  key: string;
  label: string;
}
Defines a keyboard shortcut specification.
ctrl
boolean
Whether Ctrl/Control key is pressed
shift
boolean
Whether Shift key is pressed
alt
boolean
Whether Alt/Option key is pressed
meta
boolean
Whether Meta/Command/Windows key is pressed
key
string
The primary key (e.g., “Space”, “A”)
label
string
Human-readable representation (e.g., “Ctrl+Space”)

PersistedSettings

interface PersistedSettings {
  // API Configuration
  apiKey: string;
  apiBaseUrl: string;
  sttModelName: string;
  aiModelName: string;
  rememberApiKey: boolean;
  
  // Runtime Modes
  runtimeMode: RuntimeMode;
  sttRuntimeMode: RuntimeMode;
  aiRuntimeMode: RuntimeMode;
  
  // Local Configuration
  localOllamaBaseUrl: string;
  localOllamaModel: string;
  localSttModel: string;
  
  // Input & Capture
  captureMode: CaptureMode;
  microphoneDeviceId: string;
  pushToTalkHotkey: string;
  commandHotkey: string;
  
  // Dictation
  dictationLanguage: string;
  dictationLanguageMode: DictationLanguageMode;
  dictationLanguageAllowList: string[];
  autoPasteDictation: boolean;
  dictationSoundEffects: boolean;
  muteMusicWhileDictating: boolean;
  
  // Assistant Behavior
  styleProfile: StyleProfile;
  systemPrompt: string;
  temperature: number;
  maxTokens: number;
  commandMode: boolean;
  wakeWordEnabled: boolean;
  assistantName: string;
  contextAwareness: boolean;
  copyToClipboard: boolean;
  incognitoMode: boolean;
  
  // Text Processing
  backtrackCorrection: boolean;
  removeFillers: boolean;
  autoPunctuation: boolean;
  numberedLists: boolean;
  
  // TTS Configuration (Piper)
  ttsEngine: TtsEngine;
  piperPath: string;
  piperSpeed: number;
  piperQuality: PiperQuality;
  piperEmotion: PiperEmotion;
  
  // TTS Configuration (Coqui)
  coquiPythonPath: string;
  coquiModelName: string;
  coquiLanguage: string;
  coquiVoiceId: string;
  coquiSpeed: number;
  coquiQuality: CoquiQuality;
  coquiEmotion: CoquiEmotion;
  coquiUseGpu: boolean;
  coquiSplitSentences: boolean;
  
  // UI & Display
  launchAtLogin: boolean;
  showFlowBar: boolean;
  showAppInDock: boolean;
  themeMode: ThemeMode;
}
Complete application settings stored in local storage.

Build docs developers (and LLMs) love