Skip to content

Config Reference

Herald reads YAML config from ~/.herald/conf.yaml by default or from the path passed with -config. The first-run wizard and settings panel write the same config shape.

credentials:
username: "your_email@example.com"
password: "your-password-or-app-password"
server:
host: "imap.example.com"
port: 993
smtp:
host: "smtp.example.com"
port: 587
ollama:
host: "http://localhost:11434"
model: "gemma3:4b"
embedding_model: "nomic-embed-text-v2-moe"
YAML pathPurpose
vendorOptional provider shortcut: gmail, protonmail, fastmail, outlook, or icloud.
cache.database_pathSQLite cache file path. Generated per config when missing.
credentials.usernameIMAP/SMTP username or provider/bridge username.
credentials.passwordPassword, app password, or bridge password.
server.hostIMAP host. Required for non-demo mode.
server.portIMAP port. Required for non-demo mode.
smtp.hostSMTP host for Compose send.
smtp.portSMTP port for Compose send.
ollama.hostOllama base URL.
ollama.modelLocal chat/classification model. Default gemma3:4b.
ollama.embedding_modelLocal embedding model. Default nomic-embed-text-v2-moe.
sync.intervalFallback poll seconds. Default 60.
sync.poll_interval_minutesPoll interval in minutes for settings-oriented sync.
sync.idle_enabledEnables IMAP IDLE when supported.
sync.backgroundEnables background sync of other folders.
sync.notifyEnables status notification behavior.
semantic.enabledEnables semantic features when AI is configured.
semantic.modelEmbedding model name. Defaults to Ollama embedding model.
semantic.batch_sizeEmbedding batch size. Default 20.
semantic.min_scoreMinimum semantic result score. Default 0.30.
gmail.access_tokenGmail OAuth access token for experimental OAuth.
gmail.refresh_tokenGmail OAuth refresh token. Treat as credential.
gmail.token_expiryOAuth access-token expiry in RFC3339 format.
gmail.emailOAuth Gmail account email.
daemon.portLocal daemon port. Default 7272.
daemon.bindLocal daemon bind address. Default 127.0.0.1.
daemon.pid_fileDaemon pidfile path.
daemon.log_fileDaemon log path.
classification.promptsYAML-defined custom prompt list.
classification_actionsYAML-defined rule/action list.
cleanup.schedule_hoursAuto-cleanup schedule interval; 0 disables schedule.
claude.api_keyClaude API key.
claude.modelClaude model. Default claude-sonnet-4-6.
openai.api_keyOpenAI or compatible provider key.
openai.base_urlAPI base URL. Default https://api.openai.com/v1.
openai.modelOpenAI-compatible model. Default gpt-4o.
ai.providerollama, claude, openai, or disabled. Default ollama.
ai.local_max_concurrencyLocal AI concurrency. Default 1.
ai.external_max_concurrencyExternal AI concurrency. Default 4.
ai.background_queue_limitBackground AI queue limit. Default 64.
ai.pause_background_while_interactivePauses background AI while interactive tasks run. Default true.
VendorIMAPSMTP
gmailimap.gmail.com:993smtp.gmail.com:587
protonmail127.0.0.1:1143127.0.0.1:1025
fastmailimap.fastmail.com:993smtp.fastmail.com:587
icloudimap.mail.me.com:993smtp.mail.me.com:587
outlookoutlook.office365.com:993smtp.office365.com:587

Herald checks config permissions on startup and warns if group or other users can read the file. Use:

Terminal window
chmod 600 ~/.herald/conf.yaml