Configuration

Dictare uses a TOML configuration file at:

~/.config/dictare/config.toml

Edit it directly, use the web dashboard at http://localhost:8770/ui, or use the CLI:

dictare config edit    # Open config file in your editor
dictare config list    # Show all options and current values

Audio

[audio]
input_device = ""              # Audio input device (empty = system default)
output_device = ""             # Audio output device (empty = system default)
max_duration = 60              # Max recording duration in seconds
audio_feedback = true          # Enable/disable audio cues
silence_ms = 850               # Silence threshold to stop recording (ms)
headphones_mode = false        # TTS won't pause listening when true

[audio.advanced]
sample_rate = 16000            # Sample rate in Hz (Whisper requires 16000)
channels = 1                   # Number of audio channels
pre_buffer_ms = 640            # Audio buffered before speech detection (ms)
min_speech_ms = 150            # Minimum speech duration to process (ms)

Per-Event Sound Configuration

[audio.sounds.start]
enabled = true
path = ""                      # Custom sound file (empty = built-in)
volume = 0.3                   # 0.0–1.0
focus_gated = false            # Silent when terminal is focused

[audio.sounds.stop]
enabled = true
volume = 0.3

[audio.sounds.agent_announce]
enabled = true
volume = 0.3                   # TTS announces agent name on switch

Speech-to-Text (STT)

[stt]
model = "large-v3-turbo"       # Model name (see Speech Engines page)
language = "auto"              # Language hint or "auto" for detection
hw_accel = true                # Hardware acceleration (CUDA/MLX)

[stt.advanced]
device = "auto"                # auto, cpu, cuda, mlx
compute_type = "int8"          # int8 (fastest), float16, float32 (most accurate)
hotwords = ""                  # Comma-separated hotwords for better recognition
max_repetitions = 5            # Anti-hallucination: max consecutive repeats

Available models: parakeet-v3 (default), large-v3-turbo, large-v3.

Text-to-Speech (TTS)

[tts]
engine = "say"                 # espeak, say (macOS), piper, kokoro, outetts
language = "en"                # Voice accent
voice = ""                     # Engine-specific speaker name

Hotkey

[hotkey]
key = "KEY_RIGHTMETA"          # macOS: Right Cmd. Linux: KEY_SCROLLLOCK
mode_switch_modifier = "KEY_RIGHTALT"  # Hold + hotkey to switch mode

Output

[output]
mode = "agents"                # agents or keyboard
typing_delay_ms = 2            # Delay between keystrokes (keyboard mode)
auto_submit = false            # Automatically submit after transcription

Client

[client]
url = ""                    # Remote server URL (empty = local)
status_bar = true           # Show status bar in agent terminals
clear_on_start = false      # Clear screen when agent starts
claim_key = "ctrl+\\"      # Key to claim agent focus

Pipeline

[pipeline.mute_filter]
triggers = ["mute", "listen"]
phrases = ["OK mute", "OK listen"]

[pipeline.submit_filter]
triggers = ["send", "submit", "enter"]
confidence_threshold = 0.8

[pipeline.agent_filter]
triggers = ["agent"]
match_threshold = 0.7

Agent Profiles

Define custom agent presets:

[agent_profiles.claude]
command = "claude"
description = "Claude Code"
continue_args = ["--continue"]

[agent_profiles.codex]
command = "codex"
description = "OpenAI Codex CLI"

[agent_profiles.aider]
command = "aider"
description = "Aider"

See Agents for more on custom agent configuration.

Redaction

Replace sensitive terms in terminal output (useful for demos):

redact = [
    ["my-secret-project", "my-project"],
    ["[email protected]", "[email protected]"],
]

Stats

[stats]
typing_wpm = 40             # WPM baseline for time-saved calculations

Applying Changes

Most config changes take effect after restarting the service:

dictare service restart

The web dashboard applies changes and restarts automatically.