config

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyManagedIntegrationDefaults

func ApplyManagedIntegrationDefaults(cfg *Config) bool

func HuggingFaceTokenEnvName

func HuggingFaceTokenEnvName(cfg *Config) string

func HuggingFaceTokenStatus

func HuggingFaceTokenStatus(cfg *Config) (secrets.TokenStatus, error)

func IsFirstRun

func IsFirstRun() bool

IsFirstRun returns true if no install state file exists.

func ResolveHuggingFaceToken

func ResolveHuggingFaceToken(cfg *Config) (string, secrets.TokenStatus, error)

func ResolveSecret

func ResolveSecret(envName string) string

ResolveSecret resolves a secret by name. Checks environment first, then Doppler CLI when DOPPLER_PROJECT and DOPPLER_CONFIG are set explicitly.

func Save

func Save(path string, cfg *Config) error

func SaveInstallState

func SaveInstallState(state *InstallState) error

SaveInstallState writes the install state to disk.

Types

type AudioConfig

type AudioConfig struct {
	Backend     string `toml:"backend"`
	DeviceID    string `toml:"device_id"`
	SampleRate  int    `toml:"sample_rate"`
	Channels    int    `toml:"channels"`
	FrameSizeMs int    `toml:"frame_size_ms"`
	LatencyHint string `toml:"latency_hint"`
}

type Config

type Config struct {
	General     GeneralConfig     `toml:"general"`
	Audio       AudioConfig       `toml:"audio"`
	UI          UIConfig          `toml:"ui"`
	Local       LocalConfig       `toml:"local"`
	VPS         VPSConfig         `toml:"vps"`
	HuggingFace HuggingFaceConfig `toml:"huggingface"`
	Routing     RoutingConfig     `toml:"routing"`
	Feedback    FeedbackConfig    `toml:"feedback"` // legacy compat; prefer Store
	Store       StoreConfig       `toml:"store"`
	Providers   ProvidersConfig   `toml:"providers"`
	TTS         TTSConfig         `toml:"tts"`
	VoiceAgent  VoiceAgentConfig  `toml:"voice_agent"`
}

func Load

func Load(path string) (*Config, error)

Load reads config from the given path. Falls back to defaults if file not found.

type FeedbackConfig

type FeedbackConfig struct {
	SaveAudio          bool   `toml:"save_audio"`
	AudioRetentionDays int    `toml:"audio_retention_days"`
	DBPath             string `toml:"db_path"`
	MaxAudioStorageMB  int    `toml:"max_audio_storage_mb"`
}

type GeneralConfig

type GeneralConfig struct {
	Language          string `toml:"language"`
	Hotkey            string `toml:"hotkey"`
	DictateHotkey     string `toml:"dictate_hotkey"`
	AgentHotkey       string `toml:"agent_hotkey"`
	AgentMode         string `toml:"agent_mode"`  // "assist" or "voice_agent" — determines what agent_hotkey triggers
	ActiveMode        string `toml:"active_mode"` // legacy compat
	HotkeyMode        string `toml:"hotkey_mode"` // "push_to_talk" or "toggle"
	AutoStopSilenceMs int    `toml:"auto_stop_silence_ms"`
	FastModeSilenceMs int    `toml:"fast_mode_silence_ms"` // silence threshold for Quick Capture auto-stop
}

type GoogleProviderConfig

type GoogleProviderConfig struct {
	Enabled      bool   `toml:"enabled"`
	APIKeyEnv    string `toml:"api_key_env"`
	STTModel     string `toml:"stt_model"`
	UtilityModel string `toml:"utility_model"`
	AgentModel   string `toml:"agent_model"`
}

type GroqProviderConfig

type GroqProviderConfig struct {
	Enabled      bool   `toml:"enabled"`
	APIKeyEnv    string `toml:"api_key_env"`
	STTModel     string `toml:"stt_model"`
	UtilityModel string `toml:"utility_model"`
	AgentModel   string `toml:"agent_model"`
}

type HuggingFaceConfig

type HuggingFaceConfig struct {
	Enabled  bool   `toml:"enabled"`
	Model    string `toml:"model"`
	TokenEnv string `toml:"token_env"`
}

type InstallMode

type InstallMode string

InstallMode defines whether SpeechKit runs locally or connected to kombify Cloud.

const (
	InstallModeLocal  InstallMode = "local"
	InstallModeCloud  InstallMode = "cloud"
	InstallModeNotSet InstallMode = ""
)

type InstallState

type InstallState struct {
	Mode      InstallMode `toml:"mode"`
	SetupDone bool        `toml:"setup_done"`
	DeviceID  string      `toml:"device_id"`
}

InstallState persists the user's install mode choice and device identity. Stored in %APPDATA%/SpeechKit/install.toml, separate from config.toml.

func LoadInstallState

func LoadInstallState() (*InstallState, error)

LoadInstallState reads the install state from disk. Returns a default (empty mode) if the file doesn't exist.

type LocalConfig

type LocalConfig struct {
	Enabled   bool   `toml:"enabled"`
	Model     string `toml:"model"`
	ModelPath string `toml:"model_path"`
	Port      int    `toml:"port"`
	GPU       string `toml:"gpu"`
}

type OllamaProviderConfig

type OllamaProviderConfig struct {
	Enabled      bool   `toml:"enabled"`
	BaseURL      string `toml:"base_url"`
	STTModel     string `toml:"stt_model"`
	UtilityModel string `toml:"utility_model"`
	AgentModel   string `toml:"agent_model"`
}

type OpenAIProviderConfig

type OpenAIProviderConfig struct {
	Enabled       bool   `toml:"enabled"`
	APIKeyEnv     string `toml:"api_key_env"`
	STTModel      string `toml:"stt_model"`
	UtilityModel  string `toml:"utility_model"`
	AgentModel    string `toml:"agent_model"`
	TTSModel      string `toml:"tts_model"`
	TTSVoice      string `toml:"tts_voice"`
	RealtimeModel string `toml:"realtime_model"`
}

type ProvidersConfig

type ProvidersConfig struct {
	OpenAI OpenAIProviderConfig `toml:"openai"`
	Groq   GroqProviderConfig   `toml:"groq"`
	Google GoogleProviderConfig `toml:"google"`
	Ollama OllamaProviderConfig `toml:"ollama"`
}

ProvidersConfig groups all external provider configurations.

type RoutingConfig

type RoutingConfig struct {
	Strategy                string  `toml:"strategy"`
	PreferLocalUnderSeconds float64 `toml:"prefer_local_under_seconds"`
	ParallelCloud           bool    `toml:"parallel_cloud"`
	ReplaceOnBetter         bool    `toml:"replace_on_better"`
}

type StoreConfig

type StoreConfig struct {
	Backend            string `toml:"backend"` // "sqlite" | "postgres" | registered name
	SQLitePath         string `toml:"sqlite_path"`
	PostgresDSN        string `toml:"postgres_dsn"`
	SaveAudio          bool   `toml:"save_audio"`
	AudioRetentionDays int    `toml:"audio_retention_days"`
	MaxAudioStorageMB  int    `toml:"max_audio_storage_mb"`
}

type TTSConfig

type TTSConfig struct {
	Enabled     bool           `toml:"enabled"`
	Strategy    string         `toml:"strategy"` // "cloud-first", "local-first", "cloud-only", "local-only"
	Voice       string         `toml:"voice"`    // Global default voice override
	Speed       float64        `toml:"speed"`    // Global speed 0.25-4.0, default 1.0
	Format      string         `toml:"format"`   // "mp3", "wav", "opus", "pcm"
	OpenAI      TTSOpenAI      `toml:"openai"`
	Google      TTSGoogle      `toml:"google"`
	HuggingFace TTSHuggingFace `toml:"huggingface"`
	Local       TTSLocal       `toml:"local"`
}

TTSConfig configures text-to-speech for Assist Mode.

type TTSGoogle

type TTSGoogle struct {
	Enabled bool   `toml:"enabled"`
	Voice   string `toml:"voice"` // e.g. "de-DE-Neural2-B"
}

type TTSHuggingFace

type TTSHuggingFace struct {
	Enabled bool   `toml:"enabled"`
	Model   string `toml:"model"` // e.g. "parler-tts/parler-tts-mini-multilingual-v1.1"
}

type TTSLocal

type TTSLocal struct {
	Enabled   bool   `toml:"enabled"`
	Model     string `toml:"model"`
	ModelPath string `toml:"model_path"`
	Port      int    `toml:"port"`
}

type TTSOpenAI

type TTSOpenAI struct {
	Enabled bool   `toml:"enabled"`
	Model   string `toml:"model"` // "tts-1" or "tts-1-hd"
	Voice   string `toml:"voice"` // alloy, echo, fable, onyx, nova, shimmer
}

type UIConfig

type UIConfig struct {
	OverlayEnabled  bool   `toml:"overlay_enabled"`
	OverlayPosition string `toml:"overlay_position"` // "top", "bottom", "left", "right"
	Visualizer      string `toml:"visualizer"`
	Design          string `toml:"design"`
}

type VPSConfig

type VPSConfig struct {
	Enabled   bool   `toml:"enabled"`
	URL       string `toml:"url"`
	APIKeyEnv string `toml:"api_key_env"`
}

type VoiceAgentConfig

type VoiceAgentConfig struct {
	Enabled                bool   `toml:"enabled"`
	Model                  string `toml:"model"`          // Real-time model ID (e.g. "gemini-3.1-flash-live-preview")
	FallbackModel          string `toml:"fallback_model"` // Fallback real-time model
	Voice                  string `toml:"voice"`          // Voice name for real-time model
	ReminderAfterIdleSec   int    `toml:"reminder_after_idle_sec"`
	DeactivateAfterIdleSec int    `toml:"deactivate_after_idle_sec"`
	PipelineFallback       bool   `toml:"pipeline_fallback"` // Use STT+LLM+TTS as last resort
}

VoiceAgentConfig configures the real-time Voice Agent Mode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL