# Notification mode: active, focus, meeting
notification_mode = "active"
# Minimum job duration (seconds) before notifying
# Environment variable containing Anthropic API key
api_key_env = "ANTHROPIC_API_KEY"
# Model for quick summaries
summary_model = "claude-haiku-4-5-20251001"
# Model for complex analysis and commands
analysis_model = "claude-sonnet-4-5-20250929"
# Model for ask queries (default)
ask_model_default = "claude-sonnet-4-5-20250929"
# Model for simple ask queries
ask_model_simple = "claude-haiku-4-5-20251001"
# Max lines of output to send for summarization
# Dry run mode (no API calls)
# Enable voice notifications
# TTS engine: edge, system
tts_voice = "en-US-GuyNeural"
# Whisper model: tiny, base, small, medium, large
# Recording duration for STT
# Enable system notifications (desktop)
# Enable voice announcements
# Enable Telegram notifications
# Bot token from @BotFather
bot_token = "123456789:ABCdefGHI..."
# Allowed user IDs (whitelist)
allowed_user_ids = [123456789]
# Notify on task completion
# Enable remote command execution
remote_commands_enabled = true
# Blocked command patterns
blocked_commands = ["rm -rf", "sudo rm", "mkfs", "dd if="]
# Max commands per minute per user
max_commands_per_minute = 5
# Enable Slack notifications
# App token for Socket Mode (xapp-...)
# Default channel for notifications
# Send to DM instead of channel
# Routing preset: solo, team-visible, team-full
[notifications.slack.routing]
# Where to route different notification types
# Options: origin, dm, channel, both
# Log level: debug, info, warning, error
# Auto-start daemon on boot (systemd)
# Messages to keep in LLM context
# Pending command timeout (seconds)
pending_command_timeout = 300
# Session timeout (seconds)
# Persist chat history to SQLite
# Chat history database path
history_database = "~/.niki/chat_history.db"
# Days to retain chat history
history_retention_days = 90
# Backup history on shutdown
backup_on_shutdown = true
# Max messages in LLM context
max_context_messages = 10
# Include timestamps in context
include_timestamps = false